Resumen

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.

      Estructura switch en C para menús