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.
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>
int main() {
// Este programa genera menús según lo que el usuario elija.
int option_one = 0; // 0: bebidas, 1: comidas, 2: postres
int option_two = 2; // 0: Platicola Cero, 1: Platicola Normal, 2: Platicpiña Colada
if (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");
} else if (option_two == 1) {
printf("Usted eligio una Platicola con mucha azucar. Azucar!\n");
} else if (option_two == 2) {
printf("Usted eligio una Plaxipina colada.\n");
} else {
printf("Opcion invalida.\n");
}
} else if (option_one == 1) {
// Aqui va el menu de alimentos.
} else if (option_one == 2) {
// Aqui va el menu de postres.
} else {
printf("Opcion invalida.\n");
}
return 0;
}
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.
Hola Ricardo , Como estas? Realize un programa calculadora , utilizando if anidados, lo unico que cambie es el metodo de mostrar y pedir datos (utilize cout / cin), aca le dejo el codigo
#include <iostream>
using namespace std;
int main() {
int a,b,respuesta,opcion;
cout << "Menu Calculadora :"<<endl;
cout << "1 - Suma "<<endl;
cout << "2 - Resta"<<endl;
cout << "3 - Multiplicacion"<<endl;
cout << "4 - division"<<endl;
cout << "Ingrese una opcion : "; cin >> opcion;
cout << endl ;
if(opcion == 1){
cout << "Ingrese el primer numero: "; cin >> a ;
cout << endl << "Ingrese el segundo numero: "; cin >> b;
respuesta = a + b;
cout << endl <<"El resultado de "<<a<<" + "<<b<<" es : "<<respuesta;
}else if(opcion == 2){
cout << "Ingrese el primer numero: "; cin >> a ;
cout << endl << "Ingrese el segundo numero: "; cin >> b;
respuesta = a - b;
cout << endl <<"El resultado de "<<a<<" - "<<b<<" es : "<<respuesta;
}else if(opcion == 3){
cout << "Ingrese el primer numero: "; cin >> a ;
cout << endl << "Ingrese el segundo numero: "; cin >> b;
respuesta = a * b;
cout << endl <<"El resultado de "<<a<<" x "<<b<<" es : "<<respuesta;
}else if(opcion == 4){
cout << "Ingrese el primer numero: "; cin >> a ;
cout << endl << "Ingrese el segundo numero: "; cin >> b;
respuesta = a / b;
cout << endl <<"El resultado de "<<a<<" / "<<b<<" es : "<<respuesta;
}else{
cout << "Esa opcion no es correcta ... " << endl;
}
return 0;
}
Este es mi código terminado. Sé que está bastante extenso y seguro con otras funciones podría ser mas legible. Estoy empezando a aprender y quería terminar el código para practicar.
#include <stdio.h>
int opt1 = 1;
int opt2 = 2;
int main(){
printf("¡Bienvenido a PlatziStore!\nElige una opción para tu pedido:\n");
printf(" - Opción 0 para PlatziBebidas\n");
printf(" - Opción 1 para PlatziComidas\n");
printf(" - Opción 2 para PlatziPostres\n");
// este programa genera menus segun lo que el usuario elija
if (opt1 == 0){
printf("Usted eligió la opción 0. Verá nuestro menú de bebidas. Elija una:\n");
printf(" - Opción 0 para PlatziCola-0\n");
printf(" - Opción 1 para PlatziCola-N\n");
printf(" - Opción 2 para PlatziPiña-Colada\n");
if (opt2 == 0)
printf("Usted eligió una PlatziCola-0\n");
else if (opt2 == 1)
printf("Usted eligió una PlatziCola-N\n");
else if (opt2 == 2)
printf("Usted eligió una PlatziPiña-Colada\n");
else
printf("Elija una opción válida");
}
else if (opt1 == 1){
//aqui va el menu de alimentos
printf("Usted eligió la opción 1. Verá nuestro menú de alimentos. Elija una PlatziComida:\n");
printf(" - Opción 0 para PlatziBurritos\n");
printf(" - Opción 1 para PlatziPizza\n");
printf(" - Opción 2 para PlatziMaster\n");
if (opt2 == 0)
printf("Usted eligió un PlatziBurritos\n");
else if (opt2 == 1)
printf("Usted eligió una PlatziPizza\n");
else if (opt2 == 2)
printf("Usted eligió una PlatziMaster\n");
else
printf("Elija una opción válida\n");
}
else if (opt1 == 2){
//aqui va el menu de postres
printf("Usted eligió la opción 2. Verá nuestro menú de pastres. Elija un PlatziPostres:\n");
printf(" - Opción 0 para Platzi3Leches\n");
printf(" - Opción 1 para PlatziBacano\n");
printf(" - Opción 2 para PlatziRecargado\n");
if (opt2 == 0)
printf("Usted eligió un Platzi3Leches\n");
else if (opt2 == 1)
printf("Usted eligió un PlatziBacano\n");
else if (opt2 == 2)
printf("Usted eligió un PlatziRecargado\n");
else
printf("Elija una opción válida\n");
}
else {
printf("Por favor, elija una opción válida\n");
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int opt;
int drink;
int eat;
int main()
{
printf("Buenos dias, bienvenido al menu de Daniel'Restaurant\n");
printf("Dime, prefieres beber o comer algo\n");
printf("1 = Beber\n");
printf("2 = Comer\n");
scanf("%i",&opt);
if (opt == 1){
printf("Perfecto, bebamos entonces \n");
printf("Tenemos estos refrescos para que puedas elegir \n");
printf("1 = CocaCola Zero\n");
printf("2 = Cerveza\n");
printf("3 = Agua\n");
scanf("%i",&drink);
if (drink == 1)
printf("Genial, elegiste Coca Cola Zero, te estas cuidando \n");
else if (drink == 2)
printf("Una cerveza?, estas seguro que sera solo una jajajaja no te creo \n");
else if (drink == 3)
printf("Aguita, que rico, obviamente que no sera de la llave");
else
printf("Creo que no elegiste ninguna de las opciones");
}
else if (opt == 2){
printf("Genial, me soltare el cinturon entonces\n");
printf("Tenemos estos deliciosos platos para ti \n");
printf("1 = Congrio\n");
printf("2 = Cazuela\n");
printf("3 = Tallarines con salsa roja\n");
scanf("%i",&eat);
if (eat == 1)
printf("Mmmmmm se me hace agua la boca, el dia esta para un congrio\n");
else if (eat == 2)
printf("Una cazuelita, la especialidad de la casa\n");
else if (eat == 3)
printf("La fieja confiable, los infantables tallarines con salsa");
else
printf("Creo que no elegiste ninguna de las opciones");
}
else {
printf("Entonces a que vienes? o esto es una camara indiscreta");
}
return 0;
}```
Hola! He realizado un programa para observar los precios de alguno mareriales recicables
#include <stdio.h>
int opt1 = 0;
int opt2 = 2;
int main()
{
printf("bienvenid al menu de precios de la zona Industrial de reciclaje:\n");
printf("opcion 0 para papel \n");
printf("opcion 1 para botellas \n");
printf("opcion 2 para carton \n");
if(opt1 == 0)
{
printf("usted eligio la opcion 0, nuestro menu de papel elija una opcion:\n");
printf("opcion 0 papel cuadernos \n");
printf("opcion 1 papel revistas \n");
printf("opcion 2 papel reciclado \n");
if (opt2 == 0)
printf("usted eligio el papel de cuadernos el kg tiene un costo de $1000");
else if (opt2 == 1)
printf("usted eligio papel de revistas el kg tiene un costo de $500");
else if (opt2 == 2)
printf("Usted eligio papel reciclado el kg tiene un costo de $200");
else
printf("Ese material no se maneja en esta zona industrial");
}
else if (opt1==1)
{
printf("usted eligio la opcion 2, nuestro menu de botellas elija una opcion :\n");
printf("opcion 0 botella pet \n");
printf("opcion 1 botella polietileno\n");
printf("opcion 2 botella polipropileno \n");
if (opt2 == 0)
printf("usted eligio botellas pet, el kg tiene un costo de $1200 ");
else if (opt2 == 1)
printf("usted eligio botellas de polietileno, el kg tiene un costo de $800 ");
else if (opt2 == 2)
printf("usted eligio botellas de polipropileno, el kg tiene un costo de $1000");
else
printf("Ese material no se maneja en esta zona industrial");
}
else if (opt1==2)
{
printf("usted eligio la opcion 2, nuestro menu de carton elija una opcion:\n");
printf("opcion 0 carton liso \n");
printf("opcion 1 carton corrugado\n");
printf("opcion 2 carton doble\n");
if (opt2 == 0)
printf("usted eligio carton liso, el kg tiene un costo de $500 ");
else if (opt2 == 1)
printf("usted eligio carton corrugado, el kg tiene un costo de $800 ");
else if (opt2 == 2)
printf("usted eligio carton doble, el kg tiene un costo de $1000");
else
printf("Ese material no se maneja en esta zona industrial");
}
else
{
printf("Agradecemos su consulta pero no contamos con esa opcion ");
}
Tengo unas dudas. Las estructuras anidadas sirven para otros tipos de sentencias de control, como las selectivas o repetitivas.
En las estructuras anidadas if se pueden anidar mas de una vez o tiene limite
eje:
int main(int argc, char const *argv[])
{
printf("Welcome to Platzi Store: \n", );
printf(" Type 0 for the drink menu \n", );
printf(" Type 1 for the food menu \n", );
printf(" Type 2 for the dessert menu \n", );
scanf("%d", %opt1);
if(opt == 0)
{
printf("You choose the option 0 -> Welcome to the drink menu: \n", );
printf(" Type 0 for cold water \n", );
printf(" Type 1 for warm water \n", );
printf(" Type 2 for coca cola \n", );
scanf("%d", %opt2);
if(opt == 0)
{
printf("You've chossen cold water. Enjoy! \n", );
}
else if(opt == 1)
{
printf("You've chossen warm water. Enjoy! \n", );
}
else if(opt == 2)
{
printf("You've chossen coca cola. Enjoy! \n", );
}
else
{
printf("Invalid Option \n", );
}
}
else if(opt == 1)
{
printf("You choose the option 1 -> Welcome to the food menu: \n", );
printf(" Type 0 for pizza \n", );
printf(" Type 1 for omelette \n", );
printf(" Type 2 for tamale \n", );
scanf("%d", %opt2);
if(opt == 0)
{
printf("You've chossen pizza. Enjoy! \n", );
}
else if(opt == 1)
{
printf("You've chossen omelette. Enjoy! \n", );
}
else if(opt == 2)
{
printf("You've chossen tamale. Enjoy! \n", );
}
else
{
printf("Invalid Option \n", );
}
else if(opt == 2)
{
printf("You choose the option 2 -> Welcome to the dessert menu: \n", );
printf(" Type 0 for ice cream \n", );
printf(" Type 1 for carlota pay \n", );
printf(" Type 2 for chocolate \n", );
scanf("%d", %opt2);
if(opt == 0)
{
printf("You've chossen ice cream. Enjoy! \n", );
}
else if(opt == 1)
{
printf("You've chossen carlota pay. Enjoy! \n", );
}
else if(opt == 2)
{
printf("You've chossen chocolate. Enjoy! \n", );
}
else
{
printf("Invalid Option \n", );
}
else
{
printf("Invalid Option \n", );
}
return 0;
}
<
#include <stdio.h>
int op1 = 0;
int op2 = 0;
int main(){
if(op1 == 0){
printf("Bienvenido a la tienda\n");
printf("Ingrese opcion 0 para bebidas:\n");
printf("Ingrese opcion 0 para comidas \n");
printf("Ingrese opcion 1 para postres \n");
// Este programa genera menus segun lo que el usuario elija
if(op1 == 0){
printf("Ingrese opcion 0, vera nuestro menú de bebidas:\n");
printf("Ingrese opcion 0 para coca cola zero \n");
printf("Ingrese opcion 1 para coca cola con azucar \n");
printf("Ingrese opcion 2 para coca cola con piña \n");
if(op2 == 0)
printf("Usted eligio una coca cola zero");
else if (op2 == 1)
printf("Usted eligio una coca cola con azúcar");
else if (op2 == 2)
printf("Usted eligio una coca cola con piña");
else
printf("Opción invalida");
}
else if (op1 == 1){
// Acá va el codigo del menu de alimentos
printf("Ingrese opcion 0 para pizza\n");
printf("Ingrese opcion 1 para hamburguesa\n");
}
else if (op1 == 1){
// Acá va el codigo del menu de postres
printf("Ingrese opcion 0 para helado\n");
printf("Ingrese opcion 1 para ponque\n");
}
else if (op1 == 1){
// Opcion invalida
printf("Ingreso una opcion invalida\n");
}
}
return 0;
}
>