Comprendere le differenze tra un ciclo do-while, do-until e while potrebbe confondere. È la stessa cosa? Perché allora due tecniche diverse?
In questo post del blog mostrerò le differenze. Ma prima, dobbiamo dare un’occhiata alle basi.
Do-Until
I cicli Do-Until faranno qualcosa finché una condizione non diventa vera.
Nota la condizione uguale per questo ciclo $number -eq ‘0’.
Per esempio, il codice qui sotto verrà eseguito finché non premerai 0 sulla tua tastiera. Allora e solo allora la condizione diventa vera (0).
do {$number=Read-Host "Enter number (Press 0 to Quit)"}until ($number -eq '0')
Do-While
I cicli Do-While faranno qualcosa mentre una condizione è vera.
Nota la condizione non uguale per questo ciclo $number -ne ‘0’.
Il codice qui sotto verrà eseguito fino a quando si preme 0 sulla tastiera, in altre parole, lo script verrà eseguito finché (while) la condizione non diventa vera (0).
do {$number=Read-Host "Enter number"}while ($number -ne 0)
While
I cicli While sono simili ai cicli Do-While. Ma questo tipo di ciclo esegue il controllo per primo, mentre il ciclo Do-While esegue il controllo dopo il primo passaggio.
Al penultimo passaggio, $i è 9, quindi l’ultimo passaggio sarà fatto, ma poi basta.
while ($i -ne 10) {$i++Write-Host $i}
Do-Until vs. Do-While vs. While
L’esempio seguente mostra le differenze che non sono significative a prima vista, ma lo sono.
Il primo ciclo verrà eseguito solo una volta perché verrà eseguito solo mentre (finché) $i è maggiore di 10. Questo non è il caso. Perciò il ciclo si fermerà dopo la prima esecuzione quando il controllo verrà elaborato.
Il secondo ciclo verrà eseguito all’infinito perché $i non diventerà mai maggiore di 10 e quindi l’affermazione è vera.
$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)
Ultimo ma non meno importante il ciclo while senza la dichiarazione do. Questo ciclo non verrà mai eseguito perché il controllo viene fatto prima che il ciclo inizi.
$i = 10while ($i -gt 10) {Write-Output 'This will never be executed.'}
Spero di aver potuto portare un po’ di luce nel buio quando si tratta di looping con l’istruzione do.
Alla prossima volta con PowerShell!