Entendendo as diferenças entre um do-while, do-until e while loop podem ser confusas. É a mesma coisa? Por que então duas técnicas diferentes?
Neste post de blog eu vou mostrar as diferenças. Mas primeiro, precisamos dar uma olhada no básico.
Do-Until
Do-Until loops farão algo até que uma condição se torne verdadeira.
Note the equal condition for this loop $number -eq ‘0’.
Por exemplo, o código abaixo será executado até que você pressione 0 no seu teclado. Então e só então a condição torna-se verdadeira (0).
do {$number=Read-Host "Enter number (Press 0 to Quit)"}until ($number -eq '0')
Do-While
Do-While loops farão algo enquanto uma condição é verdadeira.
Note a condição não igual para este laço $number -ne ‘0’.
O código abaixo será executado até que você pressione 0 no seu teclado, em outras palavras, o script será executado desde que (enquanto) a condição não se torne verdadeira (0).
do {$number=Read-Host "Enter number"}while ($number -ne 0)
While
As loops são similares aos loops de Do-While. Mas este tipo de laço faz a verificação primeiro, enquanto o laço do Do-While faz a verificação depois do primeiro passe.
No penúltimo passe, $i é 9, portanto o último passe será feito, mas depois não mais.
while ($i -ne 10) {$i++Write-Host $i}
Do-Until vs. Do-While vs. While
O exemplo seguinte mostra as diferenças que não são significativas à primeira vista, mas são.
O primeiro laço correrá apenas uma vez porque só correrá enquanto (desde que) $i seja maior que 10. Este não é o caso. Portanto o loop irá parar após a primeira execução quando a verificação for processada.
O segundo loop irá correr sem fim porque $i nunca será maior que 10 e portanto o statemtent é verdadeiro.
$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)
Longa duração do loop sem a declaração do do do. Este loop nunca será executado porque a verificação é feita antes do loop iniciar.
$i = 10while ($i -gt 10) {Write-Output 'This will never be executed.'}
Eu espero poder trazer alguma luz para o escuro quando se trata de loopar com a declaração do do.
Vejo-o da próxima vez com o PowerShell!