Meer herhaling

In dit hoofdstuk leer je werken met while loops en geneste loops.


while loop

Eerder hebben we gezien hoe de for loop werkt, erg handig om een vooraf vastgesteld aantal opdrachten wilt herhalen. Maar wat doe je als je niet vantevoren weet hoe vaak je opdracht herhaald moet worden? Dan is een while loop geschikter. Die ziet er zo uit:

while (conditie) {
    ... de code die hier staat wordt herhaald zolang de conditie waar is ...
}

Stel dat je een rij vierkanten van willekeurige grootte wilt tekenen die precies binnen je canvas passen. Met een for loop krijg je dan zoiets:

Je ziet dat de vierkantjes niet precies binnen het canvas passen, ze komen niet tot de rand of ze gaan voorbij de rand. Dat komt natuurlijk doordat ze een willekeurige grootte hebben, je weet dan niet vantevoren hoeveel er in je sketch passen. Hier is het handiger om een while loop te gebruiken:

Je ziet dat het nu wel past, en het totaal aantal vierkantjes verschilt afhankelijk van hun grootte. De grootte van de vormen bepaalt nu hoe vaak de code herhaald wordt. Maar wacht, het laatste vierkant past niet helemaal. Dat kun je verhelpen door in de loop te controleren of je al dicht bij de rand aangekomen bent:

Geneste loops

Tot nu toe hebben we loops gebruikt om een rijtje vormen te tekenen, een rij cirkels bijvoorbeeld. Maar wat als we in plaats daarvan een raster van cirkels willen? We zouden het zo kunnen doen, door de loop te kopieren en te plakken:

Maar wacht. Hier zien we 5 keer een loop herhaald met maar een kleine variatie in de code. En dat is precies het probleem waar de for loop voor was bedacht om op te lossen. Dat kan dus ook slimmer, je kan namelijk een for loop in een andere for loop plaatsen. Dat noemen we het nesten van loops. Wanneer je een tweede for loop gebruikt, moet je wel een andere variabele naam gebruiken dan i in de tweede loop. Het is gebruikelijk om voor de tweede loop dan de j te nemen. Zo ziet de code er nu uit:

LET OP: Het aantal cirkels dat wordt getekend is precies 45, dus 5 keer 9. Leg in je eigen woorden uit waarom dat zo is.

OEFENING: Neem het voorbeeld hierboven over en probeer met de variabelen i en j wat variatie in te brengen. Verander bijvoorbeeld de vulkleur, de dikte van de lijn, de grootte van de cirkels enz.! Hieronder een voorbeeldje: