El condicional switch
en C++ es una estructura de control que permite ejecutar diferentes bloques de código en función del valor de una expresión.
Si quieres aprender más sobre el condicional SWITCH
consulta el Curso de Introducción a la Programación leer más ⯈
A veces es una alternativa más limpia y legible a una serie de instrucciones if-else
anidadas. Aunque, mucha gente opina (yo incluido), en lugar de mejorar la legibilidad, frecuentemente la empeora
Sintaxis básica
La sintaxis básica de un condicional switch
en C++ es:
switch (expresion) {
case valor1:
// Código a ejecutar si expresion es igual a valor1
break;
case valor2:
// Código a ejecutar si expresion es igual a valor2
break;
// Puedes añadir más casos aquí
default:
// Código a ejecutar si expresion no coincide con ningún caso
break;
}
- expresión: Es la expresión cuyo valor se evalúa y compara con los valores de los casos.
- case: Cada
case
representa un valor específico que se compara con la expresión. - default: Es un bloque opcional que se ejecuta si ningún
case
coincide con el valor de la expresión.
Vamos a ver un ejemplo básico de uso del switch
:
#include <iostream>
int main() {
int numero = 2;
switch (numero) {
case 1:
std::cout << "Uno" << std::endl;
break;
case 2:
std::cout << "Dos" << std::endl;
break;
case 3:
std::cout << "Tres" << std::endl;
break;
default:
std::cout << "Número no válido" << std::endl;
break;
}
return 0;
}
En este ejemplo,
- Dependiendo del valor de
numero
, el programa imprimirá el número correspondiente en la consola. - Si el valor no coincide con ninguno de los casos definidos, se imprimirá Número no válido.
Fall-Through entre Casos
En C++ no es obligatorio incluir un break
al final de cada case
(a diferencia de otros lenguajes como C#).
Si se omite el break
, el flujo del programa continuará ejecutando el código de los siguientes case
(esto se conoce como “fall-through”).
#include <iostream>
int main() {
int numero = 2;
switch (numero) {
case 1:
case 2:
case 3:
std::cout << "Número entre 1 y 3" << std::endl;
break;
default:
std::cout << "Número no válido" << std::endl;
break;
}
return 0;
}
En este ejemplo,
- Tanto los casos
1
,2
y3
ejecutarán el mismo bloque de código y después terminarán con elbreak
.
Aunque esto puede ser útil en algunos casos, también puede llevar a errores si no se maneja con cuidado
En general, no lo hagáis :::
Ejemplos prácticos
determinar el nombre de un número
En este ejemplo, usamos el switch
para determinar el nombre de un número basado en su valor.
#include <iostream>
int main() {
int numero = 2;
switch (numero) {
case 1:
std::cout << "Uno" << std::endl;
break;
case 2:
std::cout << "Dos" << std::endl;
break;
case 3:
std::cout << "Tres" << std::endl;
break;
default:
std::cout << "Número no válido" << std::endl;
break;
}
return 0;
}
Determinar la operación matemática según el operador
Este código muestra cómo usar switch
para seleccionar la operación matemática según el operador proporcionado.
#include <iostream>
int main() {
char operador = '+';
switch (operador) {
case '+':
std::cout << "Suma" << std::endl;
break;
case '-':
std::cout << "Resta" << std::endl;
break;
case '*':
std::cout << "Multiplicación" << std::endl;
break;
case '/':
std::cout << "División" << std::endl;
break;
default:
std::cout << "Operador no válido" << std::endl;
break;
}
return 0;
}
Determinar el nombre de un día de la semana
Aquí, usamos un switch
para determinar el nombre del día de la semana basado en su número.
#include <iostream>
int main() {
int dia = 3;
switch (dia) {
case 1:
std::cout << "Lunes" << std::endl;
break;
case 2:
std::cout << "Martes" << std::endl;
break;
case 3:
std::cout << "Miércoles" << std::endl;
break;
// Agregar más casos para otros días
default:
std::cout << "Día no válido" << std::endl;
break;
}
return 0;
}
Determinar el nombre de un mes (con enumeración)
En este ejemplo, usamos un switch
para determinar el nombre de un mes según su valor en una enumeración.
#include <iostream>
enum Meses { Enero = 1, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre };
int main() {
Meses mes = Mayo;
switch (mes) {
case Enero:
std::cout << "Enero" << std::endl;
break;
case Febrero:
std::cout << "Febrero" << std::endl;
break;
// Agregar más casos para otros meses
default:
std::cout << "Mes no válido" << std::endl;
break;
}
return 0;
}
Estos ejemplos tienen el propósito de mostrar cómo utilizar el condicional Switch
. No significa que sea la mejor forma de resolver el problema que abordan. Lo normal es que haya alternativas mejores