Lussen
< {{#switch:Previous Page | Previous Section = Vorige deel | Next Section = Volgende deel | Previous Page = Vorige pagina | Next Page = Volgende pagina | }} | {{#switch:Next Page | Previous Section = Vorige deel | Next Section = Volgende deel | Previous Page = Vorige pagina | Next Page = Volgende pagina | }} > |
Een lus voert het codeblok uit over het aantal doorlopen dat werd gespecificeerd. U kunt ook lussen hebben met een niet gedefinieerd aantal doorlopen.
For...Next
De lus For...Next heeft een vast aantal doorlopen. De teller voor de lus definieert het aantal malen dat de lus moet worden uitgevoerd. In het volgende voorbeeld, is variabele I de teller voor de lus, met een oorspronkelijke waarde van 1. De teller wordt verhoogd met 1 bij elk einde van een doorloop. Als variabele I gelijk is aan 10, stopt de lus.
Dim I
For I = 1 To 10
' ... Inner part of loop
Next I
Als u de teller voor de lus wilt verhogen met een andere waarde dan 1 aan het einde van elke doorloop, gebruik dan de functie Step:
Dim I
For I = 1 To 10 Step 0.5
' ... Inner part of loop
Next I
In het voorgaande voorbeeld, wordt de teller verhoogd met 0.5 aan het einde van elke doorloop en de lus wordt 19 keer uitgevoerd.
U mag ook negatieve waarden voor Step gebruiken:
Dim I
For I = 10 To 1 Step -1
' ... binnenste gedeelte van de lus
Next I
In dit voorbeeld begint de teller met 10 en wordt met 1 verlaagd aan het einde van elke doorloop totdat de teller op 1 staat.
De uitdrukking Exit For stelt u in staat een lus For voortijdig te verlaten. In het volgende voorbeeld, wordt de lus beëindigd gedurende de vijfde doorloop:
Dim I
For I = 1 To 10
If I = 5 Then
Exit For
End If
' ... binnenste gedeelte van de lus
Next I
For Each
De variatie lus For Each...Next in VBA wordt ondersteund in Apache OpenOffice Basic. Lussen For Each gebruiken geen expliciete teller zoals een lus For...Next doet. Een lus For Each zegt "doe dit voor alles in deze verzameling", in plaats van "doe dit n keer". Bijvoorbeeld:
Const d1 = 2
Const d2 = 3
Const d3 = 2
Dim i
Dim a(d1, d2, d3)
For Each i In a()
' ... binnenste gedeelte van de lus
Next i
De lus zal 36 keer worden uitgevoerd.
Do...Loop
De Do...Loop is niet gekoppeld aan een vast aantal doorlopen. In plaats daarvan wordt de Do...Loop uitgevoerd totdat aan een bepaalde voorwaarde wordt voldaan. Er zijn vier varianten van de Do...Loop. In de eerste twee voorbeelden zou de code binnen de lus helemaal niet uitgevoerd hoeven worden ("doe 0 keer" logica). In de latere voorbeelden zal de code minstens één maal worden uitgevoerd. (In de volgende voorbeelden vertegenwoordigt A > 10 een willekeurige voorwaarde):
- De versie Do While...Loop
controleert of de voorwaarde na de While true is vóór elke doorloop en voert alleen dan de lus uit.
Do While A > 10 ' ... body van de lus Loop
- De versie Do Until...Loop
voert de lus net zo lang uit totdat de voorwaarde na de Until evalueert naar false.
Do Until A > 10 ' ... body van de lus Loop
- De versie Do...Loop While
controleert de voorwaarde na de eerste doorloop en eindigt als de voorwaarde na de While evalueert naar false.
Do ' ... body van de lus Loop While A > 10
- De versie Do...Loop Until
controleert de voorwaarde na de eerste doorloop, maar eindigt als de voorwaarde na de Until evalueert naar true.
Do ' ... body van de lus Loop Until A > 10
Net zoals in de lus For...Next verschaft de Do...Loop ook een opdracht voor beëindiging. De opdracht Exit Do kan een lus op elk punt in de lus verlaten.
Do
If A = 4 Then
Exit Do
End If
' ... body van de lus
Loop While A > 10
In sommige gevallen zou de lus alleen kunnen eindigen wanneer binnen de lus aan een voorwaarde wordt voldaan. Dan kunt u de "perpetuele" Do Loop gebruiken:
Do
' ... enkele interne berekeningen
If A = 4 Then Exit Do
' ... andere instructies
Loop
While...Wend
De While...Wend loop construeert het werk precies hetzelfde als de Do While...Loop, maar met het nadeel dat er geen opdracht Exit beschikbaar is. De volgende twee loops produceren identieke resultaten:
Do While A > 10
' ... loop body
Loop
While A > 10
' ... loop body
Wend
Voorbeeld programmeren: Sorteren met ingebedde loops
Er zijn een aantal manieren om loops te gebruiken, bijvoorbeeld, om lijsten te doorzoeken, waarden terug te geven, of complexe rekenkundige taken uit te voeren. Het volgende voorbeeld is een algoritme dat twee loops gebruikt om een lijst met namen te sorteren.
Sub Sort
Dim Entry(1 To 10) As String
Dim Count As Integer
Dim Count2 As Integer
Dim Temp As String
Entry(1) = "Patty"
Entry(2) = "Kurt"
Entry(3) = "Thomas"
Entry(4) = "Michael"
Entry(5) = "David"
Entry(6) = "Cathy"
Entry(7) = "Susie"
Entry(8) = "Edward"
Entry(9) = "Christine"
Entry(10) = "Jerry"
For Count = 1 To 9
For Count2 = Count + 1 To 10
If Entry(Count) > Entry(Count2) Then
Temp = Entry(Count)
Entry(Count) = Entry(Count2)
Entry(Count2) = Temp
End If
Next Count2
Next Count
For Count = 1 To 10
Print Entry(Count)
Next Count
End Sub
De waarden worden onderling meerdere malen als paren uitgewisseld, totdat zij uiteindelijk worden gesorteerd in oplopende volgorde. Net als bubbels migreren de variabelen geleidelijk naar de juiste positie. Dit algoritme staat daarom bekend als een Bubble Sort.
Content on this page is licensed under the Public Documentation License (PDL). |