C programmering :: Kontrolstrukturer

for

Gentagelser med for af sætninger ligner meget while. Til for kan også bruge nøgleordene break og continue.

I sætningen til for er der 3 grupper adskilt med semikolon og kan beskrives med:

for (startværdi ; betingelse ; tællerændring)
{
...sætninger
}

Hvis vi omskriver ovenstående til en while istedet for kan vi skrive:

startværdi
while
(betingelse)
{
...sætninger
    tællerændring
}

men én undtagelse, en continue vil også i for-sætningen udføre tællerændring, det vil ikke ske i den foreliggende while erstatning.

Som det fremgår af ovenstående er for en løkkestruktur, der med en syntaks lægger op til en anvendelse med en tællervariabel, der bevæger sig fra en startværdi til en slutværdi (bestemmes af betingelse) og hvor tællervariablen ændres (tællerændring) med typisk enten en øgning eller mindskning. Trods dent åbenbare oplæg for anvendelsen, er for yderst fleksibel, specielt i C, andre sprog har strammere restriktioner eller mangler i forhold til C. Jeg vil give nogle eksempler, men først giver jeg en breddere beskrivelse af syntaksen.

for (startsætninger ; betingelsessætninger ; gentagelsessætninger)

Der er nemlig fuldt muligt at give flere sætninger, også flere end 2, i hver af tre grupper ved at adskille sætningerne i hver gruppe med kommaer, grupperne adskilles med semikolon. Følgende er udelukkende konstrueret for at illustrere muligheder, spekuler ikke på hvad fornuften i eksemplet er.

for (i=100 , n=1 ; sum=sum+n , sum<100 ; i-- , n++)

Ok smart, men for mig er det først og fremmest logikken, læseligheden og forståelse af programmet der tæller, der er formodentlig ikke vundet nogen genvinst i forhold til gcc's måde at optimere koden på.

Fleksibiliteten i for gælder også den anden vej, du kan undlade at skrive noget i en eller flere grupper, faktisk endog alle grupperne kan undlades. Hvis alle grupperne udelades får du en løkke der kører for evigt, idet det er fastsat at udelades betingelsesætninger bliver betingelsen betragtet som sand. Det vil se således ud:

for ( ; ; )
{
....endeløs løkke
}

og hvis startsætninger udelades, kunne det f.eks. se således ud:

for ( ; i < Slut ; i++)
{
....sætninger
}

Det er op til dig, hvilke af grupperne du ønsker at anvende.

Samme anvendelse gælder, for brugen af break og continue, som de gjorde med løkkestrukturerne while og do-while.

Eksemplet fra før er nu blevet ændret til at bruge for istedet for while.

Algoritmen til løsning ses i nedenstående struktur-flow-diagrammet:

 

Ressourcer C Library opslag The Single UNIX® Specification, Version 2 Copyright © 1997 The Open Group GNU C Library Engelsk, med masser af gode og dybe artikler. Danske søgeord Find selv de bedste danske søgeord til din hjemmeside.
Produkter Bookingsystem
System for reservation af tid for behandlinger, aftaler, lokaler, udstyr, personale. Tilpasset lektionstimer. Udskriver arbejdsplaner og ugeskema for opslag. Statistik. Danmarks bedste pris nu kun kr. 1.695,-
HelpdeskEffektiviser din support-organisation med et Helpdesksystem. Fjern tidrøvere der forhindrer fokus på problemløsning. Lektionsplan Formidling af generelle information og specifikke lektioner fra undervisere til studerende/elever. Medlemssystem Medlemssystem online med administration af medlemskartotek, kontingentbetalinger, flettefiler m.m.
Styr selv Styr selv indholdet på dine hjemmesider med Content Management System.
Citat Den store leder har intet behov for at føre an for ham rækker det at vise retningen.

Henry Miller



Professionelle løsninger til Internettet. Webdesign, e-handel, cms, søgeoptimering, webhotel, analyse, Intranet mm.