Drop hier links of afbeeldingen om ze aan de editor toe te voegen.

In de vorige activiteit telde de voorwaarde een getal. Maar een voorwaarde kan evengoed over tekst gaan. We bekijken een tweede voorbeeld stap voor stap, zodat je echt voelt hoe de drie ingrediënten samenwerken: de initialisatie van de variabele vóór de lus, de voorwaarde bovenaan, en de update in het lichaam.

Het voorbeeld: “wil je nog eens?”

Heel wat programma’s vragen op het einde of je nog eens wil verdergaan. Pas als je N (van nee) antwoordt, stopt het programma. Zolang je J (van ja) antwoordt, herhaalt het zich. Net iets voor een while-lus:

// declaratie van variabelen
string antwoord = "j";

// hoofdstructuur van het programma
while (antwoord.ToUpper().Substring(0, 1) == "J")
{
    // Hier komen de instructies van het programma

    Console.Write("Wil je het programma nog eens uitvoeren? (J/N) ");
    antwoord = Console.ReadLine();
}

// Resultaat weergeven
Console.WriteLine("Bedankt om dit programma te gebruiken");

Bespreking van de code

De declaratie en de beginwaarde. Op de eerste regel declareren we een variabele antwoord met als beginwaarde "j". Dat is de initialisatie. Het is geen toeval dat we precies "j" kiezen: het programma moet de eerste keer zeker binnen de lus geraken. Daarom zorgen we dat de voorwaarde de eerste keer true is, door antwoord alvast de waarde "j" te geven.

De voorwaarde. De kern van het programma is de regel:

while (antwoord.ToUpper().Substring(0, 1) == "J")

Hier controleren we of de eerste letter van het antwoord gelijk is aan "J". Dat gebeurt in twee stappen:

Zolang die vergelijking true oplevert, voert C# de instructies tussen de accolades uit. Telkens vóór die instructies opnieuw uitgevoerd worden, wordt gecontroleerd of nog aan de voorwaarde voldaan is.

De update. Binnenin de lus staat:

antwoord = Console.ReadLine();

Dit is de update: hier lezen we een nieuw antwoord van de gebruiker in. Zonder deze regel zou antwoord altijd "j" blijven en zou de lus nooit stoppen. Merk op dat er geen conversie nodig is: antwoord is van het type string, en ook Console.ReadLine() geeft een string terug.

Let op de plaats van het inlezen. In dit voorbeeld zetten we de beginwaarde rechtstreeks in de declaratie ("j") en lezen we het echte antwoord pas binnen de lus in. In het hallo-teller-voorbeeld uit de vorige activiteit lazen we het eerste getal net vóór de lus in. Beide aanpakken werken; wat telt is dat de voorwaarde de eerste keer correct getest kan worden, en dat er in het lichaam iets verandert.

Wat de gebruiker ziet

Typt de gebruiker twee keer j (of J) en daarna n, dan draait de lus drie keer en stopt ze bij het n-antwoord:

Wil je het programma nog eens uitvoeren? (J/N) j
Wil je het programma nog eens uitvoeren? (J/N) J
Wil je het programma nog eens uitvoeren? (J/N) n
Bedankt om dit programma te gebruiken

Antwoordt de gebruiker meteen n, dan stopt de lus al na één ronde (de beginwaarde "j" zorgt ervoor dat we sowieso één keer binnen de lus geraken).