Zrozumienie różnic pomiędzy pętlą do-while, do-until i while może być mylące. Czy to jest to samo? Dlaczego więc dwie różne techniki?

W tym wpisie na blogu pokażę różnice. Ale najpierw musimy przyjrzeć się podstawom.

Do-Until

Pętle do-until będą robić coś dopóki warunek nie stanie się prawdziwy.

Zauważ równy warunek dla tej pętli $number -eq '0′.

Na przykład, poniższy kod będzie działał dopóki nie naciśniesz 0 na klawiaturze. Wtedy i tylko wtedy warunek stanie się prawdziwy (0).

do {$number=Read-Host "Enter number (Press 0 to Quit)"}until ($number -eq '0')

Do-While

Pętle Do-While wykonują jakąś czynność, gdy warunek jest prawdziwy.

Zauważ warunek nie równy dla tej pętli $numer -ne '0′.

Poniższy kod będzie działał dopóki nie naciśniesz 0 na klawiaturze, innymi słowy, skrypt będzie wykonywany tak długo, jak długo (while) warunek nie stanie się prawdziwy (0).

do {$number=Read-Host "Enter number"}while ($number -ne 0)

While

Pętle While są podobne do pętli Do-While. Jednak ten typ pętli wykonuje sprawdzenie jako pierwszy, podczas gdy pętla Do-While wykonuje sprawdzenie po pierwszym przejściu.

Przy przedostatnim przejściu $i wynosi 9, więc ostatnie przejście zostanie wykonane, ale potem już nie.

while ($i -ne 10) {$i++Write-Host $i}

Do-Until vs. Do-While vs. While

Następujący przykład pokazuje różnice, które na pierwszy rzut oka nie są znaczące, ale są.

Pierwsza pętla zostanie uruchomiona tylko raz, ponieważ będzie wykonywana tylko wtedy, gdy (tak długo jak) $i jest większe niż 10. W tym przypadku tak nie jest. Dlatego pętla zatrzyma się po pierwszym uruchomieniu, gdy kontrola zostanie przetworzona.

Druga pętla będzie działać bez końca, ponieważ $i nigdy nie stanie się większe niż 10 i dlatego statemtent jest prawdziwy.

$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)

Ostatnia, ale nie najmniej ważna pętla while bez instrukcji do. Ta pętla nigdy nie zostanie uruchomiona, ponieważ sprawdzenie jest wykonywane przed rozpoczęciem pętli.

$i = 10while ($i -gt 10) {Write-Output 'This will never be executed.'}

Mam nadzieję, że udało mi się wnieść trochę światła w ciemność, jeśli chodzi o pętle z instrukcją do.

Do zobaczenia następnym razem z PowerShell!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.