Entender las diferencias entre un bucle do-while, do-until y while podría ser confuso. ¿Es lo mismo? ¿Por qué entonces dos técnicas diferentes?

En esta entrada del blog voy a mostrar las diferencias. Pero primero, tenemos que echar un vistazo a los fundamentos.

Do-Until

Los bucles do-until harán algo hasta que una condición se convierta en verdadera.

Nota la condición de igualdad para este bucle $number -eq ‘0’.

Por ejemplo, el código de abajo se ejecutará hasta que presione 0 en su teclado. Entonces y sólo entonces la condición se convierte en verdadera (0).

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

Do-While

Los bucles Do-While harán algo mientras una condición es verdadera.

Note la condición no igual para este bucle $number -ne ‘0’.

El código de abajo se ejecutará hasta que se presione 0 en el teclado, es decir, el script se ejecutará mientras (while) la condición no se convierta en verdadera (0).

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

While

Los bucles While son similares a los bucles Do-While. Pero este tipo de bucle realiza la comprobación en primer lugar, mientras que el bucle Do-While realiza la comprobación después de la primera pasada.

En la penúltima pasada, $i es 9, por lo que se realizará la última pasada, pero luego no más.

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

Do-Until vs. Do-While vs. While

El siguiente ejemplo muestra las diferencias que no son significativas a primera vista, pero sí lo son.

El primer bucle se ejecutará sólo una vez porque sólo se ejecutará mientras (mientras) $i sea mayor que 10. Este no es el caso. Por lo tanto, el bucle se detendrá después de la primera ejecución cuando se procese la comprobación.

El segundo bucle se ejecutará infinitamente porque $i nunca será mayor que 10 y, por lo tanto, la declaración es verdadera.

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

Por último, pero no menos importante, el bucle while sin la declaración do. Este bucle nunca se ejecutará porque la comprobación se hace antes de que el bucle comience.

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

Espero haber podido aportar algo de luz en la oscuridad cuando se trata de hacer un bucle con la sentencia do.

¡Nos vemos la próxima vez con PowerShell!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.