Capítulo 6: Estructuras repetitivas

La estructura for

En las estructuras anteriores, el programador desconoce a priori el número de veces que va a a repetirse un determinado bloque. En do while y do until, lo máximo que podemos decir es que se ejecutarán al menos una vez.

Por el contrario, la orden for está pensada para que definamos, desde el principio, el número de repeticiones que van a llevarse a cabo. No obstante, se trata de una estructura muy flexible, que nos permitirá ajustar su comportamiento a nuestras necesidades. Incluso podremos conseguir que se comporte como una estructura while.

Su sintaxis general es la siguiente:

Scripts-en-PowerShell-Guia-para-principiantes-155

Para entenderla, veamos lo que significa cada uno los argumentos que aparecen entre paréntesis:

  • inicialización: serán una o más instrucciones, separadas por comas, que se ejecutarán sólo una vez antes de comenzar la repetición. Normalmente se utiliza para inicializar una variable que se utilizará en el control de la repetición.

  • condición: se evaluará antes de cada repetición (incluida la primera) y sólo se ejecutará el bloque cuando su valor sea $true. Por lo tanto, la repetición terminará la primera vez que la condición devuelva el valor $false.

  • incremento: serán una o más instrucciones, separadas por comas, que se ejecutarán al final de cada repetición. Esta parte suele utilizarse para modificar la variable que será comprobada en la condición para controlar las repeticiones del bucle.

Probablemente, la mejor forma de entenderlo sea a través de un ejemplo. Veamos cómo mostrar en pantalla los números del 1 al 5:

Scripts-en-PowerShell-Guia-para-principiantes-194

Su funcionamiento será el siguiente:

  • Comienza ejecutando la inicialización, que se hará sólo la primera vez (almacena el valor 1 en la variable $i).

  • A continuación, se evalúa la condición (comprueba si el contenido de la variable $i es inferior o igual a 5).

  • Si la condición devuelve $true, se ejecuta el bloque de código (en este caso el cmdlet Write-Host) y se produce el incremento (se le suma 1 al valor de $i).

  • Después, volverá a evaluarse la condición, repitiendo todo el proceso.

La repetición continuará hasta que la condición devuelva el valor $false. En ese caso, la ejecución continuará con la instrucción que haya después de la estructura for.

Debes tener en cuenta que los argumentos de for van separados por caracteres de punto y coma (;)

Como puedes suponer, el resultado del código anterior será como el que se muestra en la siguiente imagen:

Scripts-en-PowerShell-Guia-para-principiantes-195

En realidad, es muy sencillo escribir un bucle while que se comporte como un bucle for. Por ejemplo, el ejemplo anterior podríamos escribirlo de la siguiente forma:

Scripts-en-PowerShell-Guia-para-principiantes-196

Y el funcionamiento seguirá siendo idéntico:

Scripts-en-PowerShell-Guia-para-principiantes-197

Como puedes ver, ha bastado con poner la inicialización justo encima del bucle y el incremento como última instrucción del bloque de código.

Incluso podemos hacer que un bucle for se comporte como un bucle while. Basta con dejar vacíos la inicialización y el incremento:

Scripts-en-PowerShell-Guia-para-principiantes-198