1.1-Introductie-Programmeren

Theorie Loops 3

Competentie: Ik kan een index-gebaseerde loop gebruiken en bepalen wanneer ik welke loop-soort het beste kan gebruiken.

Specifieke leerdoelen:

De opdrachten staan in de verschillende submodulen.

Samenvatting

Een for-loop met een index gebruiken.

Een index-gebaseerde for-loop gebruik je om een bepaald aantal keer een stuk code uit te voeren. Je gebruikt het vaak als je precies weet hoe vaak iets uitgevoerd moet worden.

De lus ziet er als volgt uit:

for(start; condition; step){
    //Code
}

Een voorbeeld:

for(int i = 0; i < 10; i++) { 
    //Code
}

Elke for-loop is altijd om te schrijven naar een while-loop. Onderstaande while-loop is inhoudelijk aan de bovengenoemde for-loop.

int i=0;

while(i<10){
    //Code
    i++;
}

De for-loop wordt veel gebruikt omdat het “handiger” is om op deze manier een lus te maken. Dankzij de syntax van de for-loop staat namelijk de teller initialisatie, de conditie en de ophoging van de teller in 1 regel in plaats van dat het door je code verspreid staat. Dit maakt het eenvoudiger om te lezen en kan je op 1 plek alle informatie vinden die je nodig hebt om de lus te snappen.

Door een ArrayList lopen

Om door een ArrayList heen te kunnen lopen (te itereren) met een index (teller), moet je weten hoeveel elementen er in het array staan. Wanneer we bijv. een ArrayList van String’s genaamd arrLst hebben, dan kunnen we dit als volgt doen:

for(int i = 0; i < arrLst.size(); i++) {
    String item = arrLst.get(i);
    SaxionApp.printLine(item);
}

Enhanced for Loop

Je kunt ook door iedere item van een ArrayList (of array’s, die later nog worden behandeld) lopen door gebruik te maken van de enhanced for-loop, die je al eerder hebt gezien. Het voorgaande voorbeeld ziet er met de enhanced for-loop dan als volgt uit:

for (String item: arrLst) {
    SaxionApp.printLine(item);
}

Dit doet dus precies hetzelfde, maar is wel een stuk korter en duidelijker. Wanneer je dus de index (de loop variabele i in het vorige code voorbeeld) dus niet nodig hebt, heeft deze enhanced for-loop dan ook de voorkeur.

Welke loop gebruik je precies wanneer?

Enhanced for loop - For Each vs. Index for loop

Enhanced for-loops itereren over alle waarden in een lijst. Dit is vrijwel altijd de meeste eenvoudige manier om door een lijst heen te lopen. Echter, zodra je iets moet verplaatsen kan dit niet: je hebt immers geen toegang tot de index (plaats) van een item in de lijst. Hier heb je echt de index gebaseerde for-loop voor nodig.

De index-gebaseerde for-loop wordt ook vaak gebruikt om code een X aantal keer te herhalen, waarbij je X kent. Het gaat hier dus om “10 keer iets herhalen” (of 11, 50, 100, etc.). Als je niet precies zeker bent over hoe vaak iets herhaald moet worden (bijv. omdat dit afhangt van gebruikersinvoer), kies dan voor een while-loop.

While loops
Een while loop kan in principe hetzelfde als een index-based for-loop, maar wordt meestal alleen gebruikt voor loops waarbij het exacte aantal onbekend is (bijv. door gebruikersinvoer). Probeer maar eens een lus te verzinnen die wacht “totdat de gebruiker quit invoert”. Dit kan er ongeveer uit zien als:

String someUserInput = SaxionApp.readString();

while(!someUserInput.equals("quit")) {
  // do something
  someUserInput = SaxionApp.readString();
}

Als je dezelfde lus met een for-loop zou willen schrijven, dan krijg je:

for(String someUserInput = SaxionApp.readString(); !readString.equals("quit"); someUserInput = SaxionApp.readString()) {
  // do Something
}

Alhoewel het weldegelijk mogelijk is, wordt het for-loop voorbeeld al snel gezien als “onleesbaar” en “onhandig”. Wij leren jullie dus aan een while-loop te gebruiken in dit soort situaties.