El switch
es una estructura de control en C++ que permite ejecutar diferentes bloques de código basados en el valor de una expresión. Es una alternativa a las sentencias if-else
cuando se necesita comparar una variable con múltiples valores posibles.
Conceptos Clave
- Expresión de Control: La expresión que se evalúa y cuyo valor se compara con las constantes definidas en los casos.
- Casos: Bloques de código que se ejecutan si la expresión de control coincide con el valor del caso.
- Break: Una sentencia que termina la ejecución del
switch
y evita que se ejecuten los casos siguientes. - Default: Un bloque opcional que se ejecuta si ningún caso coincide con la expresión de control.
Sintaxis Básica
switch (expresión) { case valor1: // Código a ejecutar si expresión == valor1 break; case valor2: // Código a ejecutar si expresión == valor2 break; // Puedes tener tantos casos como necesites default: // Código a ejecutar si ningún caso coincide }
Ejemplo Práctico
Vamos a ver un ejemplo donde utilizamos switch
para determinar el día de la semana basado en un número del 1 al 7.
#include <iostream> using namespace std; int main() { int dia; cout << "Ingrese un número (1-7) para el día de la semana: "; cin >> dia; switch (dia) { case 1: cout << "Lunes" << endl; break; case 2: cout << "Martes" << endl; break; case 3: cout << "Miércoles" << endl; break; case 4: cout << "Jueves" << endl; break; case 5: cout << "Viernes" << endl; break; case 6: cout << "Sábado" << endl; break; case 7: cout << "Domingo" << endl; break; default: cout << "Número inválido" << endl; } return 0; }
Explicación del Código
- Entrada del Usuario: Se solicita al usuario que ingrese un número del 1 al 7.
- Evaluación del
switch
: La expresióndia
se evalúa y se compara con cada caso. - Casos: Si
dia
coincide con uno de los valores de los casos (1 a 7), se ejecuta el bloque de código correspondiente. - Break: Cada caso termina con una sentencia
break
para evitar la ejecución de los casos siguientes. - Default: Si
dia
no coincide con ninguno de los casos, se ejecuta el bloquedefault
que imprime "Número inválido".
Ejercicio Práctico
Ejercicio 1
Escribe un programa que utilice switch
para convertir una calificación numérica (0-10) en una calificación de letra (A-F).
Requisitos
- 10: A+
- 9: A
- 8: B
- 7: C
- 6: D
- 5 o menos: F
Solución
#include <iostream> using namespace std; int main() { int calificacion; cout << "Ingrese una calificación (0-10): "; cin >> calificacion; switch (calificacion) { case 10: cout << "A+" << endl; break; case 9: cout << "A" << endl; break; case 8: cout << "B" << endl; break; case 7: cout << "C" << endl; break; case 6: cout << "D" << endl; break; default: cout << "F" << endl; } return 0; }
Explicación del Código
- Entrada del Usuario: Se solicita al usuario que ingrese una calificación del 0 al 10.
- Evaluación del
switch
: La expresióncalificacion
se evalúa y se compara con cada caso. - Casos: Si
calificacion
coincide con uno de los valores de los casos (10 a 6), se imprime la calificación de letra correspondiente. - Default: Si
calificacion
es 5 o menos, se imprime "F".
Errores Comunes y Consejos
- Olvidar el
break
: Si olvidas la sentenciabreak
, el programa continuará ejecutando los casos siguientes hasta encontrar unbreak
o el final delswitch
. - Valores fuera del rango: Asegúrate de manejar los valores que no coinciden con ningún caso utilizando el bloque
default
. - Tipos de datos: La expresión de control y los valores de los casos deben ser del mismo tipo de datos.
Conclusión
El switch
es una herramienta poderosa para manejar múltiples condiciones de manera clara y eficiente. Es especialmente útil cuando se tienen muchas comparaciones de igualdad. Asegúrate de usar break
para evitar la ejecución no deseada de múltiples casos y utiliza default
para manejar valores no esperados.
En el próximo tema, exploraremos las sentencias break
y continue
, que son útiles para controlar el flujo de los bucles y otras estructuras de control.
Curso de Programación en C++
Módulo 1: Introducción a C++
- Introducción a C++
- Configuración del Entorno de Desarrollo
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
- Entrada y Salida
Módulo 2: Estructuras de Control
Módulo 3: Funciones
- Introducción a las Funciones
- Parámetros de Función y Tipos de Retorno
- Sobrecarga de Funciones
- Recursión
Módulo 4: Arreglos y Cadenas
- Introducción a los Arreglos
- Arreglos Multidimensionales
- Introducción a las Cadenas
- Manipulación de Cadenas
Módulo 5: Punteros y Referencias
- Introducción a los Punteros
- Aritmética de Punteros
- Punteros y Arreglos
- Referencias
- Asignación Dinámica de Memoria
Módulo 6: Programación Orientada a Objetos
- Introducción a la POO
- Clases y Objetos
- Constructores y Destructores
- Herencia
- Polimorfismo
- Encapsulación y Abstracción
Módulo 7: Temas Avanzados
- Plantillas
- Manejo de Excepciones
- Entrada/Salida de Archivos
- Biblioteca Estándar de Plantillas (STL)
- Expresiones Lambda
- Multihilo