Estructura switch en C para menús
Clase 5 de 13 • Curso de Control de Flujo en C
Contenido del curso
Toma de decisiones
Control de Bucles en C
Uso de las instrucciones break y continue
Cierre
Domina el control de flujo en C con la instrucción switch. Aprende a decidir qué código ejecutar con casos claros, a evitar múltiples else if, y a construir máquinas de estado eficientes. Además, refuerza buenas prácticas de indentación y solución de errores de compilación por llaves.
¿Qué es switch en C y cuándo usarlo?
La declaración switch permite tomar decisiones entre múltiples rutas usando valores constantes. Es ideal cuando la variable de control se compara contra números o cadenas fijas. Así evitas cadenas largas de if/else if y haces el flujo más legible.
- Usa valores constantes por case: enteros o cadenas. No expresiones complejas.
- Trabaja sobre una variable de control. Si hace “match”, ejecuta ese bloque.
- Piensa en el switch como un “cubo de formas”: si la forma coincide, entra.
- Excelente para máquinas de estado con pasos predefinidos.
- El bloque que no coincide puede caer en default.
¿Cómo se estructura un switch con case, break y default?
Un switch agrupa rutas claras con case, y cada ruta termina con break para evitar caídas accidentales a otros casos. Default actúa como else.
#include <stdio.h>
int main(void) {
int option1 = 0; // opción principal
switch (option1) {
case 0: // Platzi bebidas
printf("Bienvenido a Platzi Store. Opción 0: bebidas.\n");
int option2 = 0; // submenú bebidas
switch (option2) {
case 0: // Platzi cola cero
printf("Usted eligió Platzi cola cero.\n");
break;
default:
break;
}
break;
case 1: // Platzi comidas
// Código de comidas.
break;
case 2: // Platzi postres
// Código de postres.
break;
default:
// Opción no válida.
break;
}
return 0;
}
- switch (expresión): evalúa la variable de control.
- case constante: ruta exacta por valor. Código específico.
- break: indica que el caso terminó y sale del switch.
- default: se ejecuta si ningún case coincide.
- Puedes combinar con if o anidar otro switch cuando aplique.
¿Por qué la indentación importa en C aunque el compilador no la use?
Aunque al compilador “no le importa”, a ti sí. La indentación hace el código legible y reduce errores.
- Muestra el alcance de cada bloque con claridad.
- Evita confusiones en switch anidados y múltiples llaves.
- Facilita encontrar dónde abre y cierra cada estructura.
¿Cómo crear un menú y una máquina de estados con switch?
Un patrón práctico: un switch principal define estados del sistema (por ejemplo, un menú). Cada case representa un estado o sección. Dentro, puedes abrir otro switch para subopciones.
- Menú principal: 0 bebidas, 1 comidas, 2 postres.
- Submenú bebidas: 0 Platzi cola cero, más opciones según necesites.
- Máquinas de estado: cada case es un estado con acciones definidas.
// Fragmento ilustrativo del menú (salidas con printf)
printf("Bienvenido a Platzi Store.\n");
printf("Opción 0: Platzi bebidas.\n");
printf("Opción 1: Platzi comidas.\n");
printf("Opción 2: Platzi postres.\n");
- Usa stdio.h para imprimir con printf.
- Declara int option1 = 0; y int option2 = 0; según el menú.
- Cierra siempre con return 0; en main.
¿Qué error común evitar con llaves y cómo corregirlo?
Un fallo típico es el error del compilador: "Expected declaration or statement". Suele aparecer por llaves mal cerradas.
- Verifica que el switch interno no cierre el main por accidente.
- Asegura la llave de cierre del switch grande antes de la llave final de main.
- Indenta para ver qué llave cierra qué bloque.
¿Qué habilidades y conceptos te llevas?
- Control de flujo con switch, case, break y default.
- Diseño de máquinas de estado legibles y escalables.
- Uso de valores constantes y variable de control.
- Combinación con if/else y switch anidado cuando sea necesario.
- Indentación como buena práctica de legibilidad.
- Depuración de errores de compilación por llaves.
- Elementos base: stdio.h, main, return, printf, variables int.
¿Qué otro menú o máquina de estado crearías con switch? Comparte tus ideas y casos de uso.