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
switchy 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óndiase evalúa y se compara con cada caso. - Casos: Si
diacoincide 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
breakpara evitar la ejecución de los casos siguientes. - Default: Si
diano coincide con ninguno de los casos, se ejecuta el bloquedefaultque 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óncalificacionse evalúa y se compara con cada caso. - Casos: Si
calificacioncoincide con uno de los valores de los casos (10 a 6), se imprime la calificación de letra correspondiente. - Default: Si
calificaciones 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 unbreako 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
