A do-while, do-until és while ciklus közötti különbségek megértése zavaró lehet. Vajon ugyanarról van szó? Miért akkor két különböző technika?
Ebben a blogbejegyzésben bemutatom a különbségeket. De előbb meg kell néznünk az alapokat.
Do-Until
A Do-Until ciklusok addig csinálnak valamit, amíg egy feltétel igazzá nem válik.
Nézzük meg az egyenlő feltételt ebben a ciklusban $number -eq ‘0’.
Az alábbi kód például addig fut, amíg le nem nyomjuk a 0-t a billentyűzeten. Ekkor és csak ekkor válik a feltétel igazzá (0).
do {$number=Read-Host "Enter number (Press 0 to Quit)"}until ($number -eq '0')
Do-While
A Do-While ciklusok addig csinálnak valamit, amíg egy feltétel igaz.
Megjegyezzük a nem egyenlő feltételét ennek a ciklusnak $number -ne ‘0’.
A lenti kód addig fog futni, amíg a billentyűzeten le nem nyomjuk a 0-t. Más szóval a szkript addig fog végrehajtódni, amíg (while) a feltétel nem lesz igaz (0).
do {$number=Read-Host "Enter number"}while ($number -ne 0)
While
Ahile ciklusok hasonlóak a Do-While ciklusokhoz. De ez a típusú ciklus először elvégzi az ellenőrzést, míg a Do-While ciklus az első átfutás után.
Az utolsó előtti átfutásnál $i 9, tehát az utolsó átfutás megtörténik, de utána már nem.
while ($i -ne 10) {$i++Write-Host $i}
Do-Until vs. Do-While vs. While
A következő példa mutatja a különbségeket, amelyek első pillantásra nem jelentősek, de azok.
Az első ciklus csak egyszer fut le, mert csak addig fut le, amíg (amíg) $i nagyobb 10-nél. Ez nem így van. Ezért a ciklus az első lefutás után az ellenőrzés feldolgozása után megáll.
A második ciklus végtelenül fog futni, mert $i soha nem lesz nagyobb 10-nél, és ezért az állítás igaz.
$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)
Végül, de nem utolsósorban a while ciklus a do utasítás nélkül. Ez a ciklus soha nem fog lefutni, mert az ellenőrzés a ciklus kezdete előtt történik.
$i = 10while ($i -gt 10) {Write-Output 'This will never be executed.'}
Remélem, tudtam némi fényt vinni a sötétbe, amikor a do utasítással való ciklusozásról van szó.
Viszlát legközelebb a PowerShellnél!