WPO 5

De while-loop onderscheidt zich van de for-loop in die zin dat er enkel aan een set van voorwaarden moet voldoen worden om een stukje code herhaaldelijk uit te voeren. De algemene vorm van de while-loop ziet er als volgt uit:

while (condition) { //some code }

De conditie kan om het even wat zijn, zolang het eindresultaat een boolean is. De (syntax)regels voor de conditie zijn dezelfde als voor een gewone if-structuur. Een bijzondere while-loop is de oneindige loop, en wordt gevormd door:

while (true) //-- true is always true, so loop forever { //some code }

Een for-loop kan altijd naar een while-loop omgevormd worden. De for-loop is nl. een gespecialiseerde vorm van de while-loop. Hierbij moet men echter zelf de index (i) van de for-loop in een while-loop bijhouden. Omgekeerd geldt dat een while loop soms ook herschreven kan worden als een for-loop. Dit is echter niet altijd het geval. Een voorbeeld van een omzetting van een for-loop naar een while-loop wordt hieronder weergegeven.

// write 10 number ins a label for (int i=0;i<10;i++) { lblOutput.Content = lblOutput.Content + " " + i.ToString(); } // do the same with a while loop now int i=0; while(i<10) { lblOutput.Content = lblOutput.Content + " " + i.ToString(); // we need to do the increment of i ourselves now i++; }

Naast de while loop bestaat er ook de do-while loop. De do-while loop begint eerst met do en eindigt met de while conditie. De code tussen de do en de while zal herhaaldelijk uitgeoverd worden zolang de conditie geldig is. In onderstaand codefragment wordt de do-while gedemonstreerd.

do { //some code } while(condition==true);

Merk op dat een do-while loop altijd eindigt met een punt-komma. Het grootste verschil met een while-loop is echter het tijdstip wanneer de conditie nagekeken wordt. Bij een do-while wordt de conditie voor het eerst negekeken wanneer de loop minstens éénmaal al uitgevoerd is geweest. Bij een while-loop wordt eerst de conditie nagekeken alvorens de loop 1 keer is uitgevoerd. Het voorbeeldje van hierboven kan in dit geval ook omgevormd worden tot een do-while loop. Deze code zal altijd minstens 1 maal uitgevoerd worden.

int i=0; do { lblOutput.Content = lblOutput.Content + " " + i.ToString(); i++; } while(i<10);

Uiteraard is het mogelijk om, net zoals in een for-loop, een while-loop in een while-loop te nesten. Ook een for-loop in een while-loop, een if-structuur in een while-loop nesten is ook mogelijk. Omgekeerd kan een while-loop op zijn beurt ook genest worden in de andere structuren.