Eposodio 150: ¡Rápido! ¡Cambio!

Transcripción de Comic

Pánel 1.
Ludd: ¿Qué otro tipo de declaraciones condicionales hay?
Kodu: La declaración tipo “switch” te permite verificar una variable con un gran número de valores …

Pánel 2.
Kodu: … y ejecutar un código de programación distinto dependiendo de su valor.
Ludd: ¿Y si no coincide con ninguno de los valores?

Pánel 3.
Kodu: ¿Cómo que qué pasa? ¿Por que lo programarías para que no coincidiera?
Baltie: Creo que lo que Ludd…

Pánel 4.
Kodu: Estás interrumpiendo de nuevo.
Laby: Déjalo hablar, Kodu. Quizá tu también puedas aprendar algo. Continúa, Baltie.

Pánel 5.
Baltie: Eh… las declaraciones tipo “switch” típicamente vienen con una sección predeterminada que corre un conjunto determinado de código si ninguno de los casos coinciden.

Pánel 6.
Kodu: Ah, sí, eso tiene sentido… ¡gracias Baltie!
Baltie: ¡De nada!

Esconder transcripción

¡En nuestra lengua por favor!

Las declaraciones tipo “switch” (que significa cambio en inglés) hacen que las declaraciones condicionales sean más fáciles de escribir al quitar la necesidad de escribir una serie de declaraiones tipo “if” para validar el valor de una variable. Analizemos un ejemplo. Al igual que antes, este ejemplo no representa ningún lenguaje de programación en particular. Start Programa

Int primerNum
Int segundoNum
Int resultado
String operacion

Bool respuestaExiste = true

Main {

Print “Introduzca el primer número:”
Input primerNum
Print “Introduzca el segundo número:”
Input segundoNum
Print “Introduzca ‘+’ para sumar o ‘-’ para restar:”
Input operacion

resultado = Calculadora(primerNum, segundoNum, operacion)

if (respuestaExiste)
{
Print “El resultado de tu cálculo es: “ + resultado
}
Else
{
Print “Un operador numérico inválido fue introducido.”
}
}

Int Calculadora(Int num1, Int num2, String operador) {

respuesta = 0

Switch (operador) {

Caso “+” :
respuesta = num1 + num2
break
Caso “-” :
respuesta = num1 – num2
break
Default :
respuestaExiste = false
break
}

Return respuesta

}

End Programa

Echemos un vistazo en el nuevo código presentado aquí. Bool respuestaExiste = true

“Bool” es la contracción de Booleano, y se refiere al tipo de datos que tiene uno de dos valores, ya sea true (que en inglés significa verdadero) o false (que en inglés significa falso). Esta variable puede actuar como un simple switch de prendido o apagado; hacer algo si es verdadero (true), o hacer otra cosa si no lo es (false). Aquí la variable es inicializada, o sea que tiene el valor predeterminado de true. Esto puede ser cambiado por el programa más adelante, como verás a continuación.

Siguiendo con el ejemplo, es más fácil continuar con la definición de la función “Calculadora”. Int Calculadora(Int num1, Int num2, String operador) {

Sin importar cuantos parámetros requiera la función, solo puede regresar un solo valor. (Hay tipos de datos que pueden tener muchos valores dentro de los mismos. Un ejemplo sería un vector de enteros.) Esta función necesita tres parámetros, dos datos tipo “Int” y uno tipo “String”, y regresa un dato tipo “Int”.      Int respuesta = 0

La declaración de una variable dentro de la función limita el rango de la variable y su alcance dentro de la función. Esto significa que si “respuesta” es inicializada con un valor predeterminado de “0”, no puede ser utilizada en la función “Main”. Sí podrá pasar su valor a “Main” por medio de la función incorporada “Return”, que veremos más adelante.      Switch (operador)

La declaración “Switch” es la segunda declaración condicional más utilizada en la programación. Tiene una variable qué observar, “operador” en este caso, y ejecutará alguna acción dependiendo de su valor.           Caso “+” :
respuesta = num1 + num2
break
Caso “-” :
respuesta = num1 – num2
break

Este conjunto de código ejecuta la tarea basada en el valor de la variable “Switch”. Si el valor de “operador” es “+”, entonces sumará el valor de “num1” y “num2” ingresados en la función “Calculadora” por la función “Main”. Si es “-”, entonces restará “num2” de “num1”. La instrucción “break” (que significa interrupción o salida en inglés) quiere decir que si la función encuentra un valor que coincide no sigue revisando los otros casos.           Default :
respuestaExiste = false
break

Si el valor de “operador” no coincide con ninguno de los casos de la declaración tipo “Switch”, entonces la función hará lo que haya sido predeterminado (o por “default”). Notarás como este pedazo de código cambia el valor de “respuestaExiste” de “true” (definido al principio del programa) a “false”. Esto determinará cual de las declaraciones tipo “if” será ejecutada en la función “Main”.      Return respuesta

Al igual que en el ejemplo anterior, la línea regresa el valor de “respuesta” a la función “Main”. Incluso si el “Switch” ejecuta el “default” o el valor predeterminado, y no ha asignado ningún valor a “respuesta”, regresará el valor de 0 (cero) a “Main”. La razón de esto es que habíamos hecho que “respuesta” tuviera un valor igual a 0 cuando la declaramos para que se cumpliera lo que la función “Calculadora” requiere de regresar un entero. De no ser así, el programa podría funcionar de manera inesperada o incluso podría fallar.      resultado = Calculadora(primerNum, segundoNum, operacion)

if (respuestaExiste) {
Print “El resultado de tu cálculo es: “ + resultado
}
Else {
Print “Un operador numérico inválido fue introducido.”
}

El valor regresado por la función “Calculadora” es asignado a “respuesta”. Así que si el valor de “respuestaExiste” no ha sido cambiado por “Calculadora”, entonces la declaración tipo “if” ejecutará el resultado del cálculo. De no ser así, imprimirá que el operador matemático introducido es inválido.