¿Cómo funciona switch en C++?
Capítulo 13: El condicional switch
Otro condicional que tenemos disponible en C++, es switch
. Este condicional suele utilizarse para condiciones que requerirían de muchos else if
.
Pseudocódigo C++
switch (expresión) {
case a:
// Código a ejecutar si la condición se cumple
break;
case b:
// Código a ejecutar si la condición se cumple
break;
case c:
// Código a ejecutar si la condición se cumple
break;
default:
// Código a ejecutar si ninguno de los case se cumple
}
En los switch
podemos tener tantos case
como queramos. Estos vienen sujetos a la expresión que escribimos en los paréntesis.
La expresión del switch
se evalúa. A partir de esa evaluación, se compara con cada uno de los case
. Si ninguno de estos case
es true
, se ejecuta el bloque default
, que es opcional. En caso de que no lo escribas, no se ejecutará nada si no se cumple ningún case
.
Veamos un ejemplo con código real. No te asustes, son muchas líneas pero son fáciles de entender.
int numero;
cout << "introduce un número del 0 al 9 y te devuelvo una frase." << endl;
cin >> numero;
switch (numero) {
case 0:
cout << "No renuncies a tus sueños, sigue durmiendo.";
break;
case 1:
cout << "No tengo claro si soy indeciso.";
break;
case 2:
cout << "Si el mundo es un pañuelo, ¿nosotros que seremos?";
break;
case 3:
cout << "El que ríe el ultimo piensa más lento.";
break;
case 4:
cout << "Recuerdo favorito de la infancia: no pagar facturas.";
break;
case 5:
cout << "He quemado 1000 calorías hoy. He dejado la pizza demasiado tiempo en el horno.";
break;
case 6:
cout << "Necesito ir al oculista, pero no veo el momento.";
break;
case 7:
cout << "La vida es aquello que pasa mientras buscas wifi.";
break;
case 8:
cout << "Tú eres como el 30 de febrero para mí.";
break;
case 9:
cout << "Madurar es estar triste y no publicarlo en Facebook.";
break;
default:
cout << "Número incorrecto. Tienes que escribir uno del 0 al 9.";
break;
}
Si introduzco uno de los valores de los case
, por ejemplo 7
, ese case
devuelve true
y es el único que se ejecuta.
introduce un número del 0 al 9 y te devuelvo una frase.
7
La vida es aquello que pasa mientras buscas wifi.
Si pongo cualquier otro número que no esté en los case
, da false
y ejecuta el bloque default
, que para que te hagas una idea, es el equivalente al else
en un condicional if else
.
introduce un número del 0 al 9 y te devuelvo una frase.
15
Número incorrecto. Tienes que escribir uno del 0 al 9.
Si pones un carácter o un conjunto de caracteres que no sean un número, el switch
no se va a comportar como esperamos. Ejecuta el primer case
que encuentra.
introduce un número del 0 al 9 y te devuelvo una frase.
pf
No renuncies a tus sueños, sigue durmiendo.
No entremos en detalles con esto, pero es algo que tendrás que manejar con el control de excepciones. Ya veremos como.
Te explico como funciona el código.
En la línea 7 se inicia el condicional switch con la expresión. En dicha expresión, le pasamos el valor que va a introducir el usuario en la consola.
Con la expresión que acaba de introducir el usuario, se lee el primer case
. ¿Es la expresión (numero
) igual a 0
? Si la respuesta es que sí (devuelve true
), se ejecuta el código de este bloque y gracias al break
, se rompe la ejecución, si no, se seguirían ejecutando los otros bloques uno detrás de otro hasta encontrar un break
o hasta terminar todo el switch
.
En el caso que el primer bloque no coincida con la expresión, se va a por el siguiente, así hasta encontrar una coincidencia.
Si el valor no es ninguno de los contemplados en los case
, se ejecuta el bloque default
.
Comentarios
Si te quedan dudas sobre el temario, sobre C++, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.