Aprende a dominar los if anidados en C con un ejemplo claro: crear menús y submenús que reaccionan según la opción del usuario. Verás cómo estructurar el boilerplate, aplicar indentación correcta, usar el operador de comparación (==) y evitar errores típicos de llaves y retorno. Todo con un tono práctico y directo.
¿Qué son los if anidados en C y cuándo usarlos?
Los if anidados son decisiones dentro de decisiones. En C, permiten construir flujos como submenús: primero eliges una categoría (bebidas, comidas o postres) y luego una opción específica. Esta técnica es útil para sistemas de menús y para crear lógicas que se ramifican paso a paso.
Funcionan con bloques de código dentro de otros bloques.
Se combinan con else if y else para cubrir todos los casos.
Requieren indentación consistente para mantener legibilidad.
El estilo de llaves puede variar por preferencia, pero la indentación no.
C es un lenguaje lanzado en 1972 y aún vigente, ideal para aprender bases sólidas.
¿Cómo preparar el boilerplate y las condiciones?
Primero, arma la plantilla mínima: función main, llaves y variables. Aquí se “falsean” las entradas: no hay inputs del usuario todavía, así que se asignan valores a las opciones al inicio.
Usa comentarios para describir el algoritmo: genera menús según la elección del usuario.
Declara variables enteras para las opciones del menú.
Aplica el operador de comparación (==) en los if.
Cuida el bloque de main y su return 0.
¿Cómo escribir el menú principal y anidar if?
Ejemplo simplificado del flujo mostrado: si la opción 0 es bebidas, se imprime un submenú y se decide con un segundo if.
#include<stdio.h>intmain(){// Este programa genera menús según lo que el usuario elija.int option_one =0;// 0: bebidas, 1: comidas, 2: postresint option_two =2;// 0: Platicola Cero, 1: Platicola Normal, 2: Platicpiña Coladaif(option_one ==0){printf("Usted eligio la opcion 0, vera nuestro menu de bebidas. Elija una.\n");printf("0: Platicola Cero\n");printf("1: Platicola Normal\n");printf("2: Platicpina Colada\n");if(option_two ==0){printf("Usted eligio una Platicola cero. Mmm, rico.\n");}elseif(option_two ==1){printf("Usted eligio una Platicola con mucha azucar. Azucar!\n");}elseif(option_two ==2){printf("Usted eligio una Plaxipina colada.\n");}else{printf("Opcion invalida.\n");}}elseif(option_one ==1){// Aqui va el menu de alimentos.}elseif(option_one ==2){// Aqui va el menu de postres.}else{printf("Opcion invalida.\n");}return0;}
Observa la anidación: el segundo if depende de que option_one sea 0.
Usa saltos de línea con \n para imprimir el menú de forma legible.
¿Cómo imprimir opciones y mantener legibilidad?
Imprime un mensaje de bienvenida y explica qué hace cada número.
Ordena el contenido: primero el menú principal, luego el submenú.
Repite la estructura con else if para las demás categorías.
¿Qué errores evitar y qué buenas prácticas seguir?
En el ejemplo se muestran fallos comunes y cómo corregirlos. Mantén un flujo claro y separa cada bloque.
Respeta la indentación a un nivel dentro de cada bloque.
Verifica el cierre de llaves: cada if/else if/else debe cerrar correctamente.
No olvides el return 0; al final de main.
No confíes ciegamente en el autocomplete: puede insertar llaves innecesarias.
Si algo “se anidó” por error, revisa dónde abren y cierran las llaves.
Puedes compilar y ejecutar desde tu entorno con la tecla configurada (ejemplo: F6).
Mientras no uses inputs, asigna las opciones arriba para probar rápidamente.
¿Te animas al reto? Completa las ramas para comidas y postres replicando la misma estructura con else if, imprime sus submenús y maneja bien las opciones inválidas con un else final.
Comparte tu versión del menú en los comentarios: qué categorías agregaste, cómo organizaste las opciones y qué mensaje de error usaste.