Curso de C++ desde cero

¿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.

Programación Fácil YouTube

Suscríbete

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.