Lussen

De volgende programmeerconstructie die we gaan bespreken is de lus. Net als de voorwaarde is deze in bijna elk programma nodig. Met lussen kun je een stukje code een onbekend aantal keer herhalen.

Er zijn 3 soorten lussen: de for-lus, de while-lus en de do-while-lus. De eerste lus is vooral handig als je een stuk code een bepaald aantal keer wilt uitvoeren, de while en de do-while lussen zijn vooral handig als je een stuk code wilt uitvoeren totdat er een bepaald iets gebeurd is.

De For-lus

Zoals ik net al heb gezegd is de for-lus vooral handig als je een stuk code een bepaald aantal keer wilt uitvoeren. In het volgende voorbeeld gaan we een stukje tekst 20x op het scherm zetten

#include <iostream>
using namespace std;

int main()
{
for (int teller = 0; teller < 20; teller++) { cout << "Hier komt een strafregel" << endl; }
return 0;
}

Als je deze code compileert en uitvoert zal er 20x de tekst Hier komt een strafregel op het scherm komen. Tussen de haakjes achter for staan 3 commando's, gescheiden door puntkomma's. Het eerste commando maakt een telvariabele aan. In dit geval heet die teller en is 0. Het 2e commando is een vraag zoals we bij de voorwaardes hebben besproken. Elke keer als de lus is geeindigd wordt er gekeken of deze waar is. Als deze waar is wordt de lus nog een keer uitgevoerd. Als deze niet waar is gaat het programma verder. Het derde commando Er zitten meteen een aantal andere nieuwe dingen in dit stukje code. Zo staat er teller++. Dat betekend dat de variabele teller met 1 wordt opgehoogd. Ofwel, als teller 14 is dan wordt die 15. Misschien is het ook vreemd om te zien dat we bij 0 beginnen met tellen. Je kunt natuurlijk ook bij 1 beginnen (of bij 28) maar het is normaal in de computerwereld om bij 0 te beginnen, omdat computers dat ook doen.

Dit programmaatje wordt leuker als de gebruiker mag bepalen hoevaak de regel op het scherm komt. Dat gaat het makkelijkst met cin. Zie het onderstaande voorbeeld:

#include <iostream>
using namespace std;

int main()
{
int max;
cout << "Hoeveel strafregels wil je hebben? ";
cin >> max;
for (int teller = 0; teller < max; teller++) { cout << "Hier komt een strafregel" << endl; }
return 0;
}

De while-lus

Een ander soort lus is de while-lus. Met deze lus kun je een stuk code herhalen totdat er iets speciaals gebeurd is. (meestal wordt er in zo'n lus iets gecontroleerd)

#include <iostream>
using namespace std;

int main()
{
string invoer;
cout << "Wil je een strafregel? (ja/nee) ";
cin >> invoer;
while (invoer == "ja") {
cout << "Hier komt een strafregel" << endl;
cout << "Wil je nog een strafregel? (ja/nee) ";
cin >> invoer;
}
return 0;
}

Zoals je ziet wordt er hier niet geteld, maar wordt het stukje code net zo lang herhaald tot je iets anders dan ja invult.

De do-while-lus

In het vorige voorbeeld werden er net zolang strafregels geschreven tot je iets anders dan ja invoerde. Als je begon met nee werd er zelfs helemaal geen strafregel geschreven. Soms is het nodig om een lus altijd minimaal 1x uit te voeren, in tegenstelling tot het vorige voorbeeld, waarin de lus ook 0x uitgevoerd kan worden. In dat geval kun je een do-while dus gebruiken. Deze lus wordt altijd 1x uitgevoerd, en op het einde wordt gekeken of hij nog een keer uitgevoerd moet worden.

#include <iostream>
using namespace std;

int main()
{
string invoer;
do { cout << "Hier komt een strafregel" << endl;
cout << "Wil je nog een strafregel? (ja/nee) ";
cin >> invoer;
} while (invoer == "ja");
return 0;
}

Welk soort lus je nodig hebt hangt af van waarvoor je hem nodig hebt, maar waarschijnlijk zul je for en while het meest gebruiken.