Het for statement wordt gebruikt om een instructieblok meerdere keren uit te voeren.
Een programmeerstructuur die een stuk code meerdere keren uitvoert, wordt een lus (loop) genoemd. Daarom wordt er vaak de naam for-lus of for-loop gebruikt. Een lus voert meerdere iteraties uit. Een iteratie is 1 doorloop van het instructieblok binnen de lus.
De algemene syntax van een for-lus ziet er als volgt uit:
for (initialisatie; voorwaarde; stap)
{
te herhalen instructieblok
}
Grafisch kunnen we dit met onderstaande flowchart voorstellen:
Bespreking:
if-else statement plaatsen we ook bij het for statement accolades rond het bijbehorende instructieblok. Indien dit instructieblok slechts uit één instructie bestaat, zijn de accolades optioneel. We maken echter de afspraak ze altijd te plaatsen.for (int i = 0; i < 10; i++)
{
Console.Write($"{i} ");
}
Console.WriteLine("\nFirst instruction after the for loop");
/* Output
0 1 2 3 4 5 6 7 8 9
First instruction after the for loop
*/
Grafisch kunnen we dit met onderstaande flowchart voorstellen:
Bespreking: De parameters tussen haakjes zijn:
false als resultaat geven. Bijgevolg stopt de for-lus en wordt het instructieblok niet meer uitgevoerd.
Het instructieblok toont de waarde van de teller i, bijgevolg verschijnen de getallen 0 tot en met 9 op het scherm.
Het getal 10 verschijnt niet omdat het instructieblok niet uitgevoerd wordt van zodra de teller i de waarde 10 bereikt heeft.
Als de for-lus afgelopen is, vervolgt het programma met de code die na de lus komt. In dit voorbeeld is dit de tekst ‘\nFirst instruction after the for loop”.Opmerking:
\n. Dit genereert een enter in de uitvoer. De zin “First instruction after the for loop” verschijnt dus op een nieuwe regel.for (char c = 'a'; c <= 'z'; c++)
{
Console.Write("{c} ");
}
Console.WriteLine("\nFirst instruction after the for loop");
/* Output
a b c ... x y z
First instruction after the for loop
*/
Bespreking:
for (int i = 10; i < 100; i += 2)
{
Console.Write("{i} ");
}
Console.WriteLine("\nFirst instruction after the for loop");
/* Output
10 12 14 16 ... 96 98
First instruction after the for loop
*/
Bespreking:
i+=2 geeft i=i+2. Maak niet de fout om i+2 bij de derde paramater te plaatsen. Dit wijzigt de teller niet en de for-lus werkt niet correct.int max = 40;
for (int i = 0; i < max; i += 2)
{
Console.Write("{i} ");
}
Console.WriteLine("\nFirst instruction after the for loop");
/* Output
0 2 4 6 ... 36 38
First instruction after the for loop
*/
Bespreking: In de voorwaarde wordt er gebruik gemaakt van de variabele max.
Vanzelfsprekend kan ook bij de initialisatie van de teller i een variabele gebruikt worden, zoals onderstaand voorbeeld aantoont.
int min = 30;
int max = 40;
for (int i = min; i < max; i += 2)
{
Console.Write("{i} ");
}
Console.WriteLine("\nFirst instruction after the for loop");
/* Output
30 32 34 36 38
First instruction after the for loop
*/
for (int i = 0; i < 10; i++)
{
Console.Write("{i} ");
if (i == 5)
{
Console.WriteLine("\nWe make the loop end at number 5!");
break;
}
}
Console.WriteLine("First instruction after the for loop");
/* Output
0 1 2 3 4 5
We make the loop end at number 5!
First instruction after the for loop
*/
Bespreking:
break gegeven. Het break statement zal de lus volledig stoppen en zorgt ervoor dat het programma naar de eerste instructie na de for-lus springt. Dus ook al heeft de teller de bovengrens nog niet bereikt, de for-lus eindigt toch.for (int i = 0; i < 10; i++)
{
if (i < 8)
{
continue;
}
Console.WriteLine(i);
}
Console.WriteLine("First instruction after the for loop.");
/*
Output:
8
9
First instruction after the for loop.
*/
Bespreking:
continue statement uitgevoerd. Van zodra de teller i een waarde 8 of hoger krijgt, wordt het continue statement niet meer uitgevoerd.continue statement stopt de huidige iteratie van de lus. Dit betekent dat alle instructies binnen de lus die volgen op continue niet meer uitgevoerd worden. De lus stopt echter niet volledig, de teller wordt met de stapgrootte verhoogd en de volgende iteratie van de lus start omdat de voorwaarden van de lus nog steeds voldaan zijn.Fouten in de voorwaarden van een for-lus kunnen ervoor zorgen dat het programma in een oneindige lus raakt. Pas hier voor op!
In onderstaande code is er geen stapgrootte gedeclareerd (argument 3 ontbreekt). Hierdoor zal de teller i nooit wijzigen en zal de lus oneindig blijven doorlopen.
for (int i = 0; i < 10; ) // Oneindige lus!
{
Console.WriteLine(i);
}
In onderstaande code start de teller i op 0, maar aangezien de stapgrootte -1 is, zal i altijd kleiner zijn dan 10. Dit genereert een oneindige lus.
for (int i = 0; i < 10; i--) // Oneindige lus!
{
Console.WriteLine(i);
}
Open het project oefening-for-1 en maak de oefeningenreeks