1.1-Introductie-Programmeren

Theorie Loops 2

Competentie: Ik kan de enhanced for-loop gebruiken om een ArrayList langs te lopen.

Specifieke leerdoelen:

De opdrachten kunnen gevonden worden in de losse modulen.

Samenvatting

Als je eenzelfde bewerking wilt uitvoeren op alle elementen in een ArrayList is een loop onontbeerlijk. We laten hier twee manieren zien die bruikbaar zijn voor een ArrayList.

Een belangrijke eigenschap van de ArrayList is dat deze kan groeien en krimpen, afhankelijk van het gebruik. Dit betekent echter dat je bij het maken van een loop over de lijst hier rekening mee moet houden. Je weet immers nooit precies hoeveel elementen er op het moment van code uitvoer in de lijst zitten.

Met behulp van een while-loop kan je eenvoudig een lus schrijven die een index gebruikt om door de lijst heen te lopen. Deze index verwijst naar de plek in de lijst waar een bepaald element staat.

The enhanced for-loop (vrij vertaald: “verbeterde” for-loop) kan gebruikt worden om op een eenvoudiger manier door een lijst te lopen, zonder je zorgen te hoeven maken over de indices en de bijbehorende administratie. Dit komt echter wel tegen een prijs: je kan bijv. niet eenvoudig meer opvragen op welke positie je nu bent (je hebt geen “teller” meer in de lus) en ook mag je geen wijzigingen meer maken aan de lijst terwijl je er overheen aan het loopen bent.

Beide methodes hebben voordelen en nadelen.

While-loop

De while-loop maakt gebruik van het indexnummer van een element in de ArrayList. Door indexnummer te vergelijken met de lengte van de lijst, kan het stop-moment bepaald worden.

###Voorbeeld Stel we hebben een ArrayList met de variabelenaam ```names``` en 2 elementen. Onderstaande code print alle twee elementen in deze lijst.

1. int index = 0;
2. while(index<names.size()){
3.     SaxionApp.printLine(names.get(index));
4.     index++
5.  }

Hieronder een korte weergave van wat er gebeurt in deze code:

regel 1 initialiseert de variabele index met 0.

Iteratie 1:

  1. is 0 kleiner dan de omvang van de lijst? Ja.
  2. print element met index 0
  3. index wordt 1

Iteratie 2:

  1. is 1 kleiner dan de omvang van de lijst? Ja.
  2. print element met index 1
  3. index wordt 2

Iteratie 3:

  1. is 2 kleiner dan de omvang van de lijst? Nee

Einde loop.

Enhanced for-loop

Met de enhanced for-loop wordt de hele lijst doorlopen zonder dat de programmeur het stoppunt hoeft te definieren. Je moet hiervoor wel wat flexbiliteit in het gebruik van de lijst opgeven, namelijk dat je niet precies weet op welke positie een element staat en dat je de lijst niet, tijdens de lus, mag aanpassen. Een enhanced for-loop wordt daarom ook alleen veel gebruikt in stukken code waarmee je bijv. wat moet opzoeken in de lijst of gewoon iets wil doen met alle elementen in de lijst.

###Voorbeeld We hebben weer een ArrayList met de variabelenaam ```names``` en 2 elementen. Onderstaande code print alle (twee) elementen in deze lijst.

1. for(String singleName : names){
2.     SaxionApp.printLine(singleName);
3. }

Het for-statement is als volgt opgebouwd:

Hieronder een korte weergave van wat er gebeurt in deze code:

Iteratie 1:

  1. neem het eerste element uit names en stop deze in de variabele singleName
  2. print singleName

Iteratie 2:

  1. neem het tweede element uit names en stop deze in de variabele singleName
  2. print singleName

Er is geen verdere iteratie. De for-loop houdt dus zelf bij hoeveel iteraties nodig zijn om de hele lijst langs te gaan.