Bucles y condiciones
Los bucles
Un bucle es una estructura repetitiva que permite ejecutar varias veces las instrucciones que se encuentran en el bloque de instrucciones. Es importante dominar el concepto de los bucles, pues lo encontramos en todo lenguaje informático y es la base de todo programa, sea cual sea el lenguaje.
1. Bucle While
Las instrucciones del bloque de instrucciones de este bucle se repiten mientras se satisfaga la condición del mismo (es verdad). Dicho de otro modo, cuando la condición evaluada tenga el valor $false, se saldrá del bucle.
La sintaxis de un bucle While es la siguiente:
While (<condición>)
{
#bloque de instrucciones
}
Su funcionamiento es el siguiente:
1. El bucle evalúa la condición.
2. Si la condición es falsa, no se ejecuta el bloque de instrucciones y se finaliza el bucle.
3. Si la condición es verdadera, entonces se ejecuta el bloque de instrucciones.
4. Vuelta al paso 1.
Veamos un ejemplo básico de un bucle While que enumera los valores contenidos en un array. En este bucle, mientras el valor $numero es estrictamente inferior al tamaño del array, el bloque de instrucciones devuelve el valor del array para el índice $numero.
$numero = 0
$tab = 0..99
While($numero -lt $tab.Length)
{
$tab[$numero]
$numero++
}
2. Bucle Do-While
El bucle Do-While se parece al bucle While, con la diferencia de que la condición se evalúa al final. El bucle Do-While tiene la siguiente estructura:
Do
{
#bloque de instrucciones
}
While (<condición>)
Estando la evaluación al final, el bloque de instrucciones se ejecuta al menos una vez aunque la condición sea falsa. Por ejemplo, con el siguiente bucle, se le pide al usuario introducir un número entre 0 y 10 en primer lugar. Si el número introducido no está entre estos valores, entonces el bloque de instrucciones se ejecuta de nuevo.
Do
{
[int]$var = Read-Host 'Introduzca un valor entre 0 y 10'
}
While( ($var...
Estructura condicional If, Else, ElseIf
Una estructura condicional permite, mediante la evaluación de una condición, orientar la ejecución hacia un bloque de instrucciones o hacia otro. La sintaxis de una estructura condicional es la siguiente:
If (condición)
{
#bloque de instrucciones
}
Para entender mejor el uso de una estructura condicional, veamos algunos ejemplos:
Imaginemos que queremos determinar si un valor introducido por el usuario es la letra A. Para ello, utilizaremos una estructura condicional con una condición sobre el valor de la variable evaluada. Usando un operador de comparación, la estructura resultante es la siguiente:
$var = Read-Host "Introduzca un carácter"
If ($var -eq 'A')
{
"El carácter introducido por el usuario es una 'A'"
}
Si la variable introducida por el usuario en una A, entonces se muestra una cadena de caracteres; en caso contrario la ejecución seguirá su curso sin ejecutar el bloque de instrucciones que sigue al If.
Es posible asociar a la instrucción If la cláusula Else. Esta cláusula permite en el caso de devolver un valor False orientar hacia un segundo bloque de instrucciones el procesamiento. Tomemos el siguiente ejemplo:
If (($var1 -eq 15) -and ($var2 -eq 18))
{
# Bloque...
Switch
La instrucción Switch permite reemplazar ventajosamente toda una serie de If, ElseIf y Else. A diferencia de las instrucciones If que, para una instrucción dada, orienta la ejecución siguiente hacia uno de los dos bloques de instrucciones, la instrucción Switch orienta la ejecución hacia varios bloques de instrucciones distintos. Y eso con una sola expresión. Esto le confiere un uso netamente más flexible.
Se puede construir un Switch de varias maneras, en función de lo que se quiera comprobar.
1. Estructura simple
La sintaxis de Switch es la siguiente:
Switch (<Expresión>)
{
<Valor_1> { bloque de instrucciones 1; Break }
<Valor_2> { bloque de instrucciones 2; Break }
<Valor_3> { bloque de instrucciones 3; Break }
Default { bloque de instrucciones 4}
}
El valor Default es opcional. Su bloque de instrucciones solo se ejecuta cuando la expresión no corresponde con ningún valor.
Es habitual utilizar la instrucción Break dentro de bloques de instrucciones. Esto permite salir del procesamiento del Switch en curso. En efecto, si se ejecuta un bloque de instrucciones, el valor evaluado corresponde a la expresión. No hace falta comprobar los demás valores.
Tomemos como ejemplo de aplicación el caso básico...