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!

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.