Inhoud
Wat vooraf ging
Deze post sluit aan bij de gelijkaardige post uit Start to program – Control Flow en bij de voorgaande post Mobiele apps programmeren met Xamarin – De control flow van een C#-programma – Selecties.
Iteratieve statements (herhalingen)
Een iteratie is een herhaling. Ook wel eens een lus of in het Engels een loop genoemd.
Een keuze (if) wordt telkens maar éénmaal gecontroleerd. Indien de conditie waar is worden statements aan de waar-kant uitgevoerd, indien de conditie onwaar is worden de statements aan de onwaar-kant uitgevoerd.
Een herhaling herhaalt een blok met statements zolang een conditie waar is.
C# kent drie basisvormen van herhalingen.
Er is nog een vierde lus, de foreach(), die we gaan tegenkomen als we het hebben over lijsten en structuren.
while()
De while()-lus herhaalt een blok met statements zolang een conditie waar is.
while(conditie){
Statements zolang waar;
}
De schematische, algoritmische voorstelling voor de while() is:
Voorbeeld while()
Toon de getallen van 1 tot 10.
Ken een variabele Getal de waarde 1 toe en maak een variabel Tekst aan dat leeg is.
Zolang de waarde van de variabele Getal kleiner dan of gelijk is aan 10.
- Voeg het getal toe aan de variabele Tekst en voeg een scheidingsteken toe met + ” – “.
- Verhoog de waarde van de variabele Getal met 1 via
Getal++
.
Toon de waarde van de variabele Tekst als uitvoer.
De code is:
using System; public class Program { public static void Main() { //Invoer int Getal = 1; string Tekst = ""; //Verwerken while (Getal <= 10) { Tekst += Getal + " - "; Getal++; } //Uitvoer Console.WriteLine(Tekst); } }
do… while()
De do {…} while() is een variant op de while()-lus. Het verschil is dat bij een do {…} while() de statements, binnen de herhaling eerst éénmaal worden uitgevoerd voor de conditie getest wordt. Nadien worden de statements herhaald zolang de condite waar is.
do {
Statements zolang waar;
} while(conditie)
De schematische, algoritmische voorstelling voor de do {…} while() is:
Voorbeeld do…while()
Toon de getallen van 1 tot 10. Dit is hetzelfde voorbeeld als hierboven voor de while()-lus maar nu opgelost met de do {…} while()-variant.
Ken een variabele Getal de waarde 1 toe en maak een variabel Tekst aan dat leeg is.
Zolang de waarde van de variabele Getal kleiner dan of gelijk is aan 10.
- Voeg het getal toe aan de variabele Tekst en voeg een scheidingsteken toe met + ” – “.
- Verhoog de waarde van de variabele Getal met 1 via
Getal++
.
Toon de waarde van de variabele Tekst als uitvoer.
De code is:
using System; public class Program { public static void Main() { //Invoer int Getal = 1; string Tekst = ""; //Verwerken do { Tekst += Getal + " - "; Getal++; } while (Getal <= 10); //Uitvoer Console.WriteLine(Tekst); } }
Belangrijk!
Binnen de while()-lus (en de do {…} while-lus) moet de waarde die in uw conditie vergeleken wordt gewijzigd worden. Wijzigt deze waarde niet tijdens de herhaling, dan blijft ze hetzelfde en zal de lus zich blijven herhalen. Wanneer de waarde die de conditie de status waar bezorgde, tijdens de herhaling niet wijzigt dan blijft de conditie de status waar behouden en… de lus herhaalt zich zolang de conditie waar is.
Dit zorgt ervoor dat uw programma “hangt”.
In bovenstaand voorbeeld wordt de geteste waarde Getal gewijzigd door deze binnen de herhaling te verhogen met 1 met Getal++.
Opdracht
Kunt u dat vervelende ” – ” achteraan wegwerken?
For()
De for()-lus herhaalt een blok met statements zolang een conditie waar is. De for()-lus is eigenlijk een andere schrijfwijze voor de while()-lus en wordt hoofdzakelijk gebruikt indien het aantal maal dat de lus moet herhaalt worden vast ligt.
for(beginwaarde; conditie; verhoging){
Statements zolang waar;
}
Beginwaarde is een “teller” die de startwaarde toekent voor de lus start.
Conditie definieert de conditie voor de lus, namelijk zolang de condite waar is. De teller wordt gebruikt om de conditie te testen.
Verhoging wordt iedere keer op het einde van de lus uitgevoerd en verhoogt teller met een waarde.
De syntax meer in de praktijk ziet er als volgt bijvoorbeeld als volgt uit:
for(var Teller = 1; Teller <= 10; Teller++){
Statements zolang waar;
}
De schematische, algoritmische voorstelling voor de for() is identiek aan de while():
Voorbeeld for()
Genereer en toon de getallen van 1 tot 10. Dit is hetzelfde voorbeeld als hierboven voor de while()-lus maar nu opgelost met de for()-variant.
Ken een variabele Getal de waarde 1 toe en maak een variabel Tekst aan dat leeg is.
Zolang de waarde van de variabele Getal kleiner dan of gelijk is aan 10.
- Voeg het getal toe aan de variabele Tekst en voeg een scheidingsteken toe met + ” – “.
- Verhoog de waarde van de variabele Getal met 1 via
Getal++
.
Toon de waarde van de variabele Tekst als uitvoer.
De code is:
using System; public class Program { public static void Main() { //Invoer string Tekst = ""; //Verwerken for (int Getal = 1; Getal <= 10; Getal++) { Tekst += Getal + " - "; } //Uitvoer Console.WriteLine(Tekst); } }
Opdracht
In de post over computationeel denken is onderstaand algoritme getoond.
Werk dit uit.
Behandelde Basiscompetenties uit de module ICT Programmeren – Specifieke ontwikkelomgeving: eenvoudige functionaliteiten
- IC BC234 – kan de basisprincipes van programmeren in een specifieke ontwikkelomgeving toepassen
- IC BC236 – kan eenvoudige wijzigingen aan een programma aanbrengen
- IC BC241 – kan een programma in een specifieke ontwikkelomgeving maken
- IC BC250 – kan bij het programmeren in functie van een specifieke ontwikkelomgeving, een juiste logica volgen