Inzicht in de verschillen tussen een do-while, do-until en while-lus kan verwarrend zijn. Is het hetzelfde? Waarom dan twee verschillende technieken?
In deze blog post zal ik de verschillen laten zien. Maar eerst moeten we de basis bekijken.
Do-Until
Do-Until lussen doen iets totdat een voorwaarde waar wordt.
Noteer de gelijke voorwaarde voor deze lus $nummer -eq ‘0’.
Voorbeeld, de code hieronder zal lopen totdat je op 0 op je toetsenbord drukt. Dan en alleen dan wordt de voorwaarde waar (0).
do {$number=Read-Host "Enter number (Press 0 to Quit)"}until ($number -eq '0')
Do-While
Do-While lussen doen iets terwijl een voorwaarde waar is.
Noteer de niet-gelijke voorwaarde voor deze lus $nummer -ne ‘0’.
De onderstaande code wordt uitgevoerd totdat u op 0 op uw toetsenbord drukt, met andere woorden, het script wordt uitgevoerd zolang (terwijl) de voorwaarde niet waar wordt (0).
do {$number=Read-Host "Enter number"}while ($number -ne 0)
While
While-lussen zijn vergelijkbaar met Do-While-lussen. Maar dit type lus voert de controle eerst uit, terwijl de Do-While lus de controle na de eerste doorloop uitvoert.
Bij de voorlaatste doorloop is $i 9, dus de laatste doorloop wordt gedaan, maar daarna niet meer.
while ($i -ne 10) {$i++Write-Host $i}
Do-Until vs. Do-While vs. While
Het volgende voorbeeld toont de verschillen die op het eerste gezicht niet significant zijn, maar dat zijn ze wel.
De eerste lus wordt slechts één keer uitgevoerd omdat hij alleen wordt uitgevoerd terwijl (zolang) $i groter is dan 10. Dit is niet het geval. Daarom zal de lus na de eerste keer stoppen als de controle is verwerkt.
De tweede lus zal eindeloos worden uitgevoerd omdat $i nooit groter dan 10 zal worden en de bewering dus waar is.
$i = 10do {Write-Output 'This is executed once.'}while ($i -gt 10)do {Write-Output 'This is done over and over again!'}until ($i -gt 10)
Laatst maar niet minst belangrijk de while-lus zonder het do statement. Deze lus zal nooit worden uitgevoerd omdat de controle wordt uitgevoerd voordat de lus begint.
$i = 10while ($i -gt 10) {Write-Output 'This will never be executed.'}
Ik hoop dat ik wat licht in de duisternis heb kunnen brengen als het gaat om lussen met het do statement.
Zie je de volgende keer met PowerShell!