Naar inhoud springen

Visual Basic/Herhalingsinstructies

Uit Wikibooks

Visual Basic

Inhoudsopgave
  1. Inleiding taalelementen
  2. Variabelen
  3. Operatoren
  4. Typeconversie
  5. Keuze-instructies
  6. Herhalingsinstructies
  7. Random getallen
  8. Opmaak getallen
  9. De klasse Math
  10. Arrays
  11. De structuur van een programma

Inleiding herhalingsinstructies

[bewerken]

Soms moet een deel van het programma een aantal keren herhaald worden. Stel je voor dat je slagroom klopt. In de instructie kan staan:

klop de slagroom
  totdat deze stijf is

In de taal van Visual Basic wordt dit:

Do While slagroom niet stijf
  klop slagroom
Loop

of:

Do Until slagroom stijf is
  klop slagroom
Loop

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:

  1. For / Next
  2. Do While / Loop
  3. Do Until / Loop
  4. While / End While
  5. For Each / Next

De laatste vorm is bedoeld voor collecties en arrays en zal bij die onderwerpen behandeld worden.

For / Next

[bewerken]

De structuur van For / Next is:

For teller = begin To einde [ Step stap ]
  [ instructies ]
  [ Exit For ]
  [ instructies ]
Next [ teller ]

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:

For teller = 1 to 4 
  Console.WriteLine(teller "* " teller " = " teller * teller)
Next

Het resultaat is:

1 * 1 = 1
2 * 2 = 4
3 * 3 = 9
4 * 4 = 16

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:

For i = 10 to 12
  ...
Next

Het is ook mogelijk om de lusvariabele niet met 1, maar met een andere waarde te verhogen, bijvoorbeeld:

For i = 10 to 20 Step 5
  Console.WriteLine(i)
Next

Het resultaat is:

10
15
20

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:

For i = 6 to -3 Step -3
  Console.WriteLine(i)
Next
<pre>

Het resultaat is:

<pre>
6
3
0
-3

De waarde achter Step hoeft geen geheel getal ze zijn, bijvoorbeeld:

For i = 4.5 to7 step 0.25
  ' instructies
Next

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

[bewerken]

De structuur van Do While / Loop is:

Do While voorwaarde
  [ instructies ]
  [ Exit Do ]
  [ instructies ]
Loop

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:

Dim teller = 0
Do While teller < 5
  Console.WriteLine(teller)
  teller = teller + 1
Loop

Voorbeeld met de voorwaarde aan het eind:

Dim teller = 0
Do
  Console.WriteLine(teller)
  teller = teller + 1
Loop Until teller > 4

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:

While conditie
   ' instructies
End While

Do Until / Loop

[bewerken]

De structuur van Do Until / Loop is:

Do Until voorwaarde
  [ instructies ]
  [ Exit Do ]
  [ instructies ]
Loop

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:

Dim teller = 10
Do Until teller <= 0
  Console.WriteLine(teller)
  teller = teller - 2
Loop

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

[bewerken]

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

For i = 1 to 20
  ...
  If voorwaarde Then
    Exit For
  End If
  ...
Next
Do While teller < 50
  ...
  If voorwaarde Then
    Exit Do
  End If
  ...
Loop

While / End While

[bewerken]

De structuur van While / End While is:

While voorwaarde
  [ instructies ]
  [ Exit While ]
  [ instructies ]
End While

Deze constructie wordt niet vaak gebruikt. Meestal wordt de voorkeur gegeven aan Do While / Loop.

Voorbeeld:

While i <= 10
  Console.WriteLine(i)
  i = i + 1
End While

Zoals je ziet kan ook hier gebruik worden gemaakt van Exit While.

For Each / Next

[bewerken]

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:

Dim kleuren()  As String = {"rood", "geel", "blauw", "groen"}
For Each kleur As String in kleuren
  Console.WriteLine(kleur)
Next

Het resultaat is:

rood
geel
blauw
groen

For / Each kan ook gebruikt worden bij collecties. Deze worden later behandeld.

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.