# Visual Basic/Herhalingsinstructies
## Inleiding herhalingsinstructies

Soms moet een deel van het programma een aantal keren herhaald worden. Stel je voor dat je slagroom klopt. In de instructie kan staan:
In de taal van Visual Basic wordt dit:
of:
Zoals je ziet zit de herhaling in Visual Basic iets anders in elkaar dan in het normale spraakgebruik. Ook kent Visual Basic diverse vormen van herhaling:
* For / Next
* Do While / Loop
* Do Until / Loop
* While / End While
* For Each / Next
De laatste vorm is bedoeld voor collecties en arrays en zal bij die onderwerpen behandeld worden.

## For / Next

De structuur van For / Next is:
De vermelding van teller na Next is alleen voor de duidelijkheid voor de programmeur, het maakt geen verschil in het programma. Door het vermelding is duidelijker welke Next bij welke For hoort.
De constructie For / Next wordt gebruikt om een aantal instructies een bepaald aantal keren te herhalen. Dit aantal wordt bepaald met behulp van een variabele in de For / Next-instructie, aangevuld met een beneden- en bovengrens. Bijvoorbeeld:
Het resultaat is:
Hierbij is teller de gebruikte variabele, 1 de benedengrens en 4 de bovengrens. De gebruikte variabele hoeft niet apart gedeclareerd te worden. Bij de For-instructie krijgt teller de waarde 1, en als Next wordt bereikt, wordt teller verhoogd met 1 en teruggesprongen naar de eerste instructie na For, totdat teller groter wordt dan de bovengrens. De variabele teller wordt ook wel lusvariabele genoemd. Vaak wordt als naam van de lusvariabele de letters i, j en k gebruikt.
De benedengrens kan vrij gekozen worden, dus de volgende constructie is ook mogelijk:
Het is ook mogelijk om de lusvariabele niet met 1, maar met een andere waarde te verhogen, bijvoorbeeld:
Het resultaat is:
Je kunt ook omlaag tellen door achter Step een negatieve waarde op te geven, omdat de waarde achter Step wordt opgeteld bij de lusvariabele. Je moet er dan wel voor zorgen dat de beginwaarde groter is dan de eindwaarde, bijvoorbeeld:
De waarde achter Step hoeft geen geheel getal ze zijn, bijvoorbeeld:
Zoals je ziet is deze constructie vooral handig als je de beginwaarde, de eindwaarde en de stapgrootte kent. Maar dat is niet altijd zo, daarvoor zijn de andere herhalingsinstructies bedoeld.

## Do While / Loop

De structuur van Do While / Loop is:
Deze constructie voert een herhaling uit zolang een bepaalde voorwaarde True is. Deze voorwaarde kan zowel aan het begin als aan het eind staan. Het verschil is dat in de tweede situatie (aan het eind) de herhaling altijd één keer wordt uitgevoerd. Bij de voorwaarde aan het begin kan het voorkomen dat de herhaling helemaal niet wordt uitgevoerd. In tegenstelling tot For / Next dien je hier zelf de lusvariabele aan te passen.
Voorbeeld met de voorwaarde aan het begin:
Voorbeeld met de voorwaarde aan het eind:
Zoals je ziet wordt de waarde van teller in het eerste voorbeeld vergeleken met 5, en in het tweede voorbeeld met 4. Het resultaat van beide voorbeelden is hetzelfde: de reeks getallen van 0 t/m 4. Het is goed hierop te letten.
Let wel goed op: als de lusvariabele niet of niet goed wordt aangepast, zal de herhaling nooit eindigen en blijft het programma hangen.
Er bestaat nog een variant van Do While / Loop. Het formaat is:

## Do Until / Loop

De structuur van Do Until / Loop is:
In tegenstelling tot Do While, die wordt uitgevoerd zolang een voorwaarde True is, wordt de Do Until uitgevoerd totdat de voorwaarde False is. Een voorbeeld:
Let op: hier wordt gekeken of de lusvariabele gelijk aan of kleiner is dan 0. Dit is hier belangrijk omdat de lusvariabele steeds met 2 verlaagd wordt. Stel dat er stond = 0 en teller initieel op 9 was gezet, dan zou nooit aan de voorwaarde worden voldaan, omdat de lusvariabele nooit 0 kan worden. Een goede programmeur let op al deze bijzonderheden.

## Exit For en Exit Do

Met Exit For en Exit Do kun je voortijdig een herhaling verlaten. Het programma gaat dan verder met de instructie na Next of Loop.

## While / End While

De structuur van While / End While is:
Deze constructie wordt niet vaak gebruikt. Meestal wordt de voorkeur gegeven aan Do While / Loop.
Voorbeeld:
Zoals je ziet kan ook hier gebruik worden gemaakt van Exit While.

## For Each / Next

Deze constructie wordt gebruikt om een aantal instructies te herhalen voor elk element van een array (het array wordt verderop uitgelegd). Hierbij wordt de lusvariabele gebruikt om steeds het volgende element uit een tabel te halen. De instructies worden niet uitgevoerd als het array leeg is.
Een voorbeeld:
Het resultaat is:
For / Each kan ook gebruikt worden bij collecties. Deze worden later behandeld.