Înțelegerea diferențelor dintre o buclă do-while, do-until și while ar putea fi derutantă. Este același lucru? De ce atunci două tehnici diferite?
În acest articol de blog voi arăta diferențele. Dar mai întâi, trebuie să aruncăm o privire la elementele de bază.
Do-Until
Buclele Do-Until vor face ceva până când o condiție devine adevărată.
Rețineți condiția egală pentru această buclă $number -eq ‘0’.
De exemplu, codul de mai jos va rula până când veți apăsa 0 pe tastatură. Atunci și numai atunci condiția devine adevărată (0).
do {$number=Read-Host "Enter number (Press 0 to Quit)"}until ($number -eq '0')
Do-While
Buclele Do-While vor face ceva în timp ce o condiție este adevărată.
Rețineți condiția neegală pentru această buclă $number -ne ‘0’.
Codul de mai jos va rula până când apăsați 0 pe tastatură, cu alte cuvinte, scriptul va fi executat atâta timp cât (while) condiția nu devine adevărată (0).
do {$number=Read-Host "Enter number"}while ($number -ne 0)
While
Buclele While sunt similare cu buclele Do-While. Dar acest tip de buclă efectuează mai întâi verificarea, în timp ce buclă Do-While efectuează verificarea după prima trecere.
La penultima trecere, $i este 9, deci se va face ultima trecere, dar apoi nu mai mult.
while ($i -ne 10) {$i++Write-Host $i}
while ($i -ne 10) {$i++Write-Host $i}
Do-Until vs. Do-Until. Do-While vs. While
Exemplul următor arată diferențele care nu sunt semnificative la prima vedere, dar sunt.
Prima buclă va rula doar o singură dată deoarece va rula doar în timp ce (atâta timp cât) $i este mai mare decât 10. Acest lucru nu este cazul. Prin urmare, bucla se va opri după prima execuție atunci când verificarea este procesată.
Cea de-a doua buclă va rula la nesfârșit deoarece $i nu va deveni niciodată mai mare decât 10 și, prin urmare, afirmația este adevărată.
$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)
În sfârșit, dar nu în ultimul rând, bucla while fără instrucțiunea do. Această buclă nu va rula niciodată pentru că verificarea se face înainte de începerea buclei.
$i = 10while ($i -gt 10) {Write-Output 'This will never be executed.'}
Sper că am putut aduce puțină lumină în întuneric când vine vorba de bucla cu instrucțiunea do.
Ne vedem data viitoare cu PowerShell!