Capítulo 5: Estructuras condicionales
Uso de la orden switch
La orden switch es una alternativa a if para los casos en los que tenemos una gran cantidad de opciones.
Dentro del paréntesis que acompaña a la orden switch deberemos incluir una variable o una expresión. A continuación, incluiremos los posibles resultados y, junto a cada uno de ellos, el bloque de instrucciones que deben ejecutarse si dicho valor coincide con el resultado de evaluar la variable o expresión de switch.
Si no coincide ninguno de los patrones, de forma opcional, podemos incluir la cláusula default con un bloque que se ejecutará por defecto.
Observa que, además de la pareja de llaves que engloba cada bloque de código, existe una pareja de llaves que engloba la estructura completa.
Veamos un ejemplo:
Una de las características que diferencian a switch de if es que, en este caso, siempre se evalúan todos los patrones. Por ejemplo, observa el siguiente ejemplo en el que hemos repetido el valor 2:
Comprobamos que las condiciones no dejan de evaluarse después de la primera coincidencia:
Incluso podemos evaluar diferentes variables o expresiones al mismo tiempo. Sólo tenemos que incluirlas separadas por comas:
Cuando necesitemos que, tras evaluar un determinado bloque, no se continúe evaluando ningún otro, podemos utilizar la orden break. Observa lo que pasa cuando la incluimos en el ejemplo anterior:
En el ejemplo, al evaluar el valor 2, ejecuta la orden break y se interrumpe la ejecución de switch:
Cuando hay más de dos instrucciones en un mismo bloque, lo normal es escribirlas en varias líneas (como hemos hecho en el ejercicio anterior. Sin embargo, también tenemos la opción de escribirlas en la misma línea separándolas con un punto y coma (;):
También es frecuente que el valor del patrón pueda obtenerse de una expresión más compleja pero, para que la sintaxis sea correcta, dicha expresión también debe incluirse en una pareja de llaves. En estos casos, el bloque de código se ejecutará cuando el resultado de la expresión sea $true. Veamos un ejemplo:
Observa que, dentro de la expresión, el símbolo $_ está representado el resultado de evaluar la variable contenida en switch.
Por último, existen algunos modificadores que nos permiten actuar sobre la variable o expresión contenida en el switch:
Veamos un ejemplo:
Actividades resueltas: Trata de resolver las siguientes cuestiones, utilizando la estructura condicional switch, antes de consultar la respuesta:
-
Escribe un script que solicite un carácter y nos diga si se trata de un dígito romano.
Nota: Los caracteres con los que se forman los números romanos son: I, V, X, L, C, D y M. Se valorará que no se diferencie entre mayúsculas y minúsculas.
-
Escribe un script que, siguiendo el modelo de 6 continentes, pida al usuario un número entre 1 y 6.
Según el número introducido, el programa contestará con las palabras América, Asia, Europa, África, Oceanía y Antártida, respectivamente. Si el número es diferente, informará del error.
-
Escribe un script que solicite un número al usuario y averigüe si es positivo, negativo o cero.
-
Sabiendo que el siguiente ejemplo muestra el día de la semana al que pertenece la fecha que introduzca el usuario, pero representado como un valor entero, donde obtendremos un 0 para el domingo, 1 para el lunes, etc.
Escribe un script que, dada una fecha, convierta el valor numérico en el texto que le corresponde.
[datetime]$fecha = Read-Host "Escribe una fecha (m-d-a)" Write-Host ("Día = " + ([int]$fecha.DayOfWeek))