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>intmain(void){int option1 =0;// opción principalswitch(option1){case0:// Platzi bebidasprintf("Bienvenido a Platzi Store. Opción 0: bebidas.\n");int option2 =0;// submenú bebidasswitch(option2){case0:// Platzi cola ceroprintf("Usted eligió Platzi cola cero.\n");break;default:break;}break;case1:// Platzi comidas// Código de comidas.break;case2:// Platzi postres// Código de postres.break;default:// Opción no válida.break;}return0;}
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.