Estructura switch en C para menús
Clase 5 de 13 • Curso de Control de Flujo en C
Contenido del curso
Clase 5 de 13 • Curso de Control de Flujo en C
Contenido del curso
Andrés Fernando Cortés Pinzón
Juan Pablo Perez
Irving Juárez
Youssef Abarca
Irving Juárez
Erick Alay
Jesús Ignacio García Fernández
Irving Juárez
Ivan E. Batista-Ochoa
Edith Elizabeth Narváez Higuera
Jorge Varas
Cristian dario toro marin
Roberto Palomino
Luis Lira
Roberto Palomino
Fabio Andrés Hernández Rueda
Luis Manuel Maya Castrejón
Jose Luis Saldarriaga Bravo
Luis Manuel Maya Castrejón
Roberto Palomino
Gabriel Obregón
Jess Jay
Andres Ricardo Chacon Barrueco
Erik Ucenik
Walter Omar Barrios Vazquez
Daniel Adolfo Ordoñez Rubio
Walter Omar Barrios Vazquez
jorge Zavala Olivares
Ernesto Fierro Meléndez
Jorge Varas
Daniel Humberto Ortiz Vargas
Fernando Sánchez Mejía
Fernando Sánchez Mejía
Fernando Sánchez Mejía
Como consejo para aquellos que no tienen buena indentación y la corrigen de forma manual, línea por línea, les recomiendo utilizar en Visual Studio Code la combinación de teclas Shift+Alt+F, la cual nos formatea el documento. Así no estarán corrigiendo línea por línea para indentar el código de manera ordenada.
Gracias por el consejo Andres
Gracias a dios no uso Visual Studio Code
También existen los switch entre rangos, como:
#include <stdio.h> #define Msg1 printf("\nTu ciclo de vida es: \n"); int age = 99; int main(int argc, const char* argv[]) { switch(age) { case 0 ... 5: Msg1; printf("Primera Infancia\n"); break; case 6 ... 11: Msg1; printf("Infancia\n"); break; case 12 ... 18: Msg1; printf("Adolescencia\n"); break; case 19 ... 26: Msg1; printf("Juventud\n"); break; case 27 ... 59: Msg1; printf("Adultez\n"); break; case 60 ... 125: Msg1; printf("Persona Mayor\n"); break; default: printf("Valor incorrecto\n"); break; } return 0; }
O switch con múltiples condiciones, como:
#include <stdio.h> int X = 0; int Y = -2; int main(int argc, const char* argv[]) { switch ((X >= 0 ? 1 : 0) + (Y >= 0 ? 2 : 0)) { case 0: printf("X e Y son menores que 0\n"); break; case 1: printf("X es mayor que 0, Y es menor que 0\n"); break; case 2: printf("X es menor que 0, Y es mayor que 0\n"); break; case 3: printf("X e Y son mayores que 0\n"); break; } return 0; }
Woow, eso si esta loco
Para los que se preguntan, que es la expresión del segundo switch:
switch ((X >= 0 ? 1 : 0) + (Y >= 0 ? 2 : 0))
Funciona de forma sencilla como:
condición ? valor_true : valor_false
Seguimos con mis menu de carreras y cursos de platzi (un extracto)
#include <stdio.h> int opt1 = 2; int opt2 = 1; int main (void) { // este programa genera menus de carreras printf("Bienvenido al menu de carreras\n"); printf("1) Desarrollo e ingeniería\n"); printf("2) Diseño y UX\n"); printf("3) Marketing\n"); printf("4) Producción audiovisual\n"); switch (opt1) { case 1: printf("usted eligió la carrera de desarrollo e ingeniería\n"); // este programa genera menus de cursos printf("Bienvenido al menu de cursos\n"); printf("1) Seguridad Informática\n"); printf("2) Base de datos\n"); printf("3) Fundamentos de programación\n"); printf("4) Inteligencia Artificial y Matching Learnig\n"); switch (opt2) { case 1: printf("usted eligió el curso de seguridad informática\n"); break; case 2: printf("usted eligió el curso de base de datos\n"); break; case 3: printf("usted eligió el curso de fundamentos de programación\n"); break; case 4: printf("usted eligió el curso de inteligencia artificial y matching learnig\n"); break; default: printf("opción invalida\n"); break; } break; case 2: printf("usted eligió la carrera de diseño y UX\n"); // este programa genera menus de cursos printf("Bienvenido al menu de cursos\n"); printf("1) Diseño gráfico\n"); printf("2) Diseño de experiencia de usuario\n"); printf("3) Diseño de interfaces\n"); switch (opt2) { case 1: printf("usted eligió el curso de diseño gráfico\n"); break; case 2: printf("usted eligió el curso de diseño de experiencia de usuario\n"); break; case 3: printf("usted eligió el curso de diseño de interfaces\n"); break; default: printf("opción invalida\n"); break; } break; case 3: printf("usted eligió la carrera de marketing\n"); // este programa genera menus de cursos printf("Bienvenido al menu de cursos\n"); printf("1) Marketing Digital\n"); printf("2) Marketing y Ventas\n"); printf("3) Inbound Marketing\n"); printf("4) Outbound Marketing\n"); switch(opt2) { case 1: printf("usted eligió el curso de marketing digital\n"); break; case 2: printf("usted eligió el curso de marketing y venta\n"); break; case 3: printf("usted eligió el curso de inbound marketing\n"); break; case 4: printf("usted eligió el curso de outbound marketing\n"); break; default: printf("opción invalida\n"); break; } break; case 4: printf("usted eligió la carrera de Producción audiovisual\n"); // este programa genera menus de cursos printf("Bienvenido al menu de cursos\n"); printf("1) Producción audiovisual\n"); printf("2) Periodismo digital\n"); switch (opt2) { case 1: printf("usted eligió el curso de producción audiovisual\n"); break; case 2: printf("usted eligió el curso de periodismo digital\n"); break; default: printf("opción invalida\n"); break; } break; default: printf("opción invalida\n"); break; } return (0); }``` Salida
Bienvenido al menu de carreras
Buen ejemplo
Comparto el código completo. Reto a todo el que pase por esta clase a completar el código y compartirlo en esta sección. . ¡La practica hace al maestro! ;)
#include<stdio.h> int opt1 = 1; int opt2 = 3; int main(void) { 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"); switch (opt1) { case 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"); switch (opt2) { case 0: printf("Usted eligió una PlatziCola-0\n"); break; case 1: printf("Usted eligió una PlatziCola-N\n"); break; case 2: printf("Usted eligió una PlatziPiña-Colada\n"); break; default: printf("Elija una opción válida, por favor\n"); break; } break; case 1: 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"); switch (opt2) { case 0: printf("Usted eligió un PlatziBurritos\n"); break; case 1: printf("Usted eligió una PlatziPizza\n"); break; case 2: printf("Usted eligió una PlatziMaster\n"); break; default: printf("Elija una opción válida, por favor\n"); break; } break; case 2: printf("Usted eligió la opción 2. Verá nuestro menú de pastres. Elija un PlatziPostre:\n"); printf(" - Opción 0 para Platzi3Leches\n"); printf(" - Opción 1 para PlatziBacano\n"); printf(" - Opción 2 para PlatziRecargado\n"); switch (opt2) { case 0: printf("Usted eligió un Platzi3Leches\n"); break; case 1: printf("Usted eligió un PlatziBacano\n"); break; case 2: printf("Usted eligió una PlatziRecargado\n"); break; default: printf("Elija una opción válida, por favor\n"); break; } break; default: printf("Elija una opción válida, por favor\n"); } return 0; }
Son gigantes mis códigos.
#include <stdio.h> #define ERROR printf("opcion incorrecta \n")
int opt1 = 0 int opt2 = 0
int main (void) { //este programa genera menus de planetas printf("Bienvenid@ \n"); printf("Opción 1 para Mercurio \n"); printf("Opción 2 para Venus \n"); printf("Opción 3 para Tierra \n"); printf("Opción 4 para Marte \n"); printf("Opción 5 para Júpiter \n"); printf("Opción 6 para Saturno \n"); printf("Opción 7 para Urano \n"); printf("Opción 8 para Neptuno \n"); printf("Opción 9 para Luna \n");
switch (opt1) { case 1: printf("Usted eligió Mercurio"); //este programa genera menu de características printf("Bienvenido a Mercurio\n"); printf("1) Quieres saber su tamaño?"); printf("2) Quieres saber su posición en el sistema solar?"); printf("3) Quieres saber si es habitable?");
switch (opt2) { case 1: printf("Usted eligió TAMAÑO\n"); break; case 2: printf("Usted eligió POSICIÓN\n"); break case 3: printf("Usted eligió HABITABLE\n"); break default: printf("Opción Inválida\n"); } break; case 2: printf("Usted eligió Venus"); //este programa genera menu de características printf("Bienvenido a Venus\n"); printf("1) Quieres saber su tamaño?"); printf("2) Quieres saber su posición en el sistema solar?"); printf("3) Quieres saber si es habitable?"); switch (opt2) { case 1: printf("Usted eligió TAMAÑO\n"); break; case 2: printf("Usted eligió POSICIÓN\n"); break case 3: printf("Usted eligió HABITABLE\n"); break default: printf("Opción Inválida\n"); } break; case 3: printf("Usted eligió Tierra"); //este programa genera menu de características printf("Bienvenido a Tierra\n"); printf("1) Quieres saber su tamaño?"); printf("2) Quieres saber su posición en el sistema solar?"); printf("3) Quieres saber si es habitable?"); switch (opt2) { case 1: printf("Usted eligió TAMAÑO\n"); break; case 2: printf("Usted eligió POSICIÓN\n"); break case 3: printf("Usted eligió HABITABLE\n"); break default: printf("Opción Inválida\n"); } break; case 4: printf("Usted eligió Marte"); //este programa genera menu de características printf("Bienvenido a Marte\n"); printf("1) Quieres saber su tamaño?"); printf("2) Quieres saber su posición en el sistema solar?"); printf("3) Quieres saber si es habitable?"); switch (opt2) { case 1: printf("Usted eligió TAMAÑO\n"); break; case 2: printf("Usted eligió POSICIÓN\n"); break case 3: printf("Usted eligió HABITABLE\n"); break default: printf("Opción Inválida\n"); } break; case 5: printf("Usted eligió Júpiter"); //este programa genera menu de características printf("Bienvenido a Júpiter\n"); printf("1) Quieres saber su tamaño?"); printf("2) Quieres saber su posición en el sistema solar?"); printf("3) Quieres saber si es habitable?"); switch (opt2) { case 1: printf("Usted eligió TAMAÑO\n"); break; case 2: printf("Usted eligió POSICIÓN\n"); break case 3: printf("Usted eligió HABITABLE\n"); break default: printf("Opción Inválida\n"); } break; case 6: printf("Usted eligió Saturno"); //este programa genera menu de características printf("Bienvenido a Saturno\n"); printf("1) Quieres saber su tamaño?"); printf("2) Quieres saber su posición en el sistema solar?"); printf("3) Quieres saber si es habitable?"); switch (opt2) { case 1: printf("Usted eligió TAMAÑO\n"); break; case 2: printf("Usted eligió POSICIÓN\n"); break case 3: printf("Usted eligió HABITABLE\n"); break default: printf("Opción Inválida\n"); } break; case 7: printf("Usted eligió Urano"); //este programa genera menu de características printf("Bienvenido a Urano\n"); printf("1) Quieres saber su tamaño?"); printf("2) Quieres saber su posición en el sistema solar?"); printf("3) Quieres saber si es habitable?"); switch (opt2) { case 1: printf("Usted eligió TAMAÑO\n"); break; case 2: printf("Usted eligió POSICIÓN\n"); break case 3: printf("Usted eligió HABITABLE\n"); break default: printf("Opción Inválida\n"); } break; case 8: printf("Usted eligió Neptuno"); //este programa genera menu de características printf("Bienvenido a Neptuno\n"); printf("1) Quieres saber su tamaño?"); printf("2) Quieres saber su posición en el sistema solar?"); printf("3) Quieres saber si es habitable?"); switch (opt2) { case 1: printf("Usted eligió TAMAÑO\n"); break; case 2: printf("Usted eligió POSICIÓN\n"); break case 3: printf("Usted eligió HABITABLE\n"); break default: printf("Opción Inválida\n"); } break; case 9: printf("Usted eligió Luna"); //este programa genera menu de características printf("Bienvenido a Luna\n"); printf("1) Quieres saber su tamaño?"); printf("2) Quieres saber su posición en el sistema solar?"); printf("3) Quieres saber si es habitable?"); switch (opt2) { case 1: printf("Usted eligió TAMAÑO\n"); break; case 2: printf("Usted eligió POSICIÓN\n"); break case 3: printf("Usted eligió HABITABLE\n"); break default: printf("Opción Inválida\n"); } break; default: printf("Opción Inválida\n");
return 0; }
super
te falto los sncanf(%d,&a); donde a es la variable donde quieras guardarla
como pego el código de manera completa con ese fondo oscuro y letras en color?
Hola!
Para poner el código así lo haces con el formato de markdown, el cual se tratá de poner tres backtick, luego el código y cerrar con otras 3.
\``` // Aquí iría tu código (sin los \) \```
Luego tendrías este resultado
switch (variable) { case 1: // código break; }
Gracias!!
a Fredy no le gusta el switch case :c
Por qué?
En otros lenguajes directamente se desaconseja su uso. Python por ejemplo vivió mucho tiempo sin switch (se implementó a partir de la versión 3.10 con el nombre de match). Dependiendo del problema, existen mejores formas de hacer las cosas. Mira este artículo, trata sobre C# pero los conceptos son útiles.
Aquí está mi programa anterior con la opción que el usuario elija lo que desee pero ahora usando switch:
#include <stdio.h> int option1; int option2; int main(){ printf("Binvenidos al Restaurante de comida corrida 'Las Delicias'.\n\nElija una opción del Menú: \n"); printf("Opción 1: Primer tiempo \n"); printf("Opción 2: Segundo tiempo \n"); printf("Opción 3: Tercer tiempo \n"); printf("Opción 4: Bebidas \n"); printf("Opción 5: Postres \n"); scanf("%d",&option1); switch (option1){ case 1: printf("Eligió la opción del Primer Tiempo. Elija qué va a consumir: \n\n"); printf("Opción 1: Caldo de pollo \n"); printf("Opción 2: Sopa de lentejas \n"); printf("Opción 3: Caldo Tlalpeño \n"); printf("Opción 4: Crema de Champiñones \n"); scanf("%d",&option2); switch (option2){ case 1: printf("Usted eligió: Caldo de pollo \n"); break; case 2: printf("Usted eligió: Sopa de lentejas \n"); break; case 3: printf("Usted eligió: Caldo Tlalpeño \n"); break; case 4: printf("Usted eligió: Crema de Champiñones \n"); break; default: printf("Opción inválida \n"); break; } case 2: printf("Eligió la opción del segundo tiempo. Elija qué va a consumir: \n\n"); printf("Opción 1: Arroz \n"); printf("Opción 2: Espagueti blanco \n"); printf("Opción 3: Espagueti rojo \n"); scanf("%d",&option2); switch (option2){ case 1: printf("Usted eligió: Arroz \n"); break; case 2: printf("Usted eligió: Espagueti blanco \n"); break; case 3: printf("Usted eligió: Espagueti rojo \n"); break; default: printf("Opción inválida \n"); break; } case 3: printf("Eligió la opción del tercer tiempo. Elija qué va a consumir: \n\n"); printf("Opción 1: Carne asada con ensalada y papas a la francesa \n"); printf("Opción 2: Hamburguesa con ensalada y papas a la francesa \n"); printf("Opción 3: Pechuga de Pollo a la plancha \n"); printf("Opción 4: Pechuga de Pollo empanizada \n"); printf("Opción 5: Flautas de Pollo \n"); scanf("%d",&option2); switch (option2){ case 1: printf("Usted eligió: Carne asada con ensalada y papas a la francesa \n"); break; case 2: printf("Usted eligió: Hamburguesa con ensalada y papas a la francesa \n"); break; case 3: printf("Usted eligió: Pechuga de Pollo a la plancha \n"); break; case 4: printf("Usted eligió: Pechuga de Pollo empanizada \n"); break; case 5: printf("Usted eligió: Flautas de Pollo \n"); break; default: printf("Opción inválida \n"); break; } case 4: printf("Eligió la opción de Bebidas. Elija qué va a consumir: \n\n"); printf("Opción 1: Jarra de Agua simple \n"); printf("Opción 2: Jarra de Agua de horchata \n"); printf("Opción 3: Jarra de Agua de jamaica \n"); scanf("%d",&option2); switch (option2){ case 1: printf("Usted eligió: Jarra de Agua simple \n"); break; case 2: printf("Usted eligió: Jarra de Agua de horchata \n"); break; case 3: printf("Usted eligió: Jarra de Agua de jamaica \n"); break; default: printf("Opción inválida \n"); break; } case 5: printf("Eligió la opción de Postres. Elija qué va a consumir: \n\n"); printf("Opción 1: Gelatina \n"); printf("Opción 2: Duraznos en almibar \n"); printf("Opción 3: Plátanos con crema \n"); scanf("%d",&option2); switch (option2){ case 1: printf("Usted eligió: Gelatina \n"); break; case 2: printf("Usted eligió: Duraznos en almibar \n"); break; case 3: printf("Usted eligió: Plátanos con crema \n"); break; default: printf("Opción inválida \n"); break; } default: printf("Opción no válida."); break; } return 0; }
#include <stdio.h> int opt1 = 1; int opt2 = 2;
int main(){ printf("bienvenid a platzi store : \n"); printf("opcion 0 para platzi bebidas \n"); printf("opcion 1 para platzi comidas \n"); printf("opcion 2 para platzi postres \n");
switch (opt1){ case 0: printf("usted eligio la opcion 0, vera nuestro menu de bebidas elija una: \n"); switch (opt2){ case 0: printf("usted eligio una platzi cola cero, mmm rico"); break; case 1: printf("usted eligio una platzi cola con azucar, mmm rico"); break; case 2: printf("usted eligio una platzi pina colada con azucar, mmm rico"); break; default: printf("opcion invalida \n"); break; } break; case 1: printf("usted eligio la opcion 1, vera nuestro menu de comidas elija una: \n"); switch (opt2){ case 0: printf("usted eligio un arroz con pato, provecho man"); break; case 1: printf("usted eligio un ceviche peruano, lo máximo"); break; case 2: printf("usted eligio una causa de pulpa de cangrejo, mmm rico"); break; default: printf("opcion invalida \n"); break; } break; case 2: printf("usted eligio la opcion 2, vera nuestro menu de postres elija una: \n"); switch (opt2){ case 0: printf("usted eligio un arroz con leche, bien ahí"); break; case 1: printf("usted eligio un suspiro a la limeña, lo máximo"); break; case 2: printf("usted eligio una gelatina, simple pero rico"); break; default: printf("opcion invalida \n"); break; } break; default: printf("opcion invalida \n"); break; } return 0;
}
🖥️switch en C
🔹 ¿Qué es?
🔸 Controla el flujo del programa.
🔸 Ejecuta código según el valor de una variable.
🔸 Reemplaza varios else if.
🔸 Trabaja con constantes (números, cadenas).
🎯 Usos principales
📌 Ejemplo: un robot cambia de comportamiento según el estado (buscar intrusos, activar alarma, etc.).
🛠️ Sintaxis básica
switch (variable) {
case valor1:
// Código
break;
case valor2:
// Código
break;
default:
// Código por defecto
break;
}
👉 case → evalúa el valor.
👉 break → corta la ejecución del bloque.
👉 default → se ejecuta si no hay coincidencia.
🏪 Ejemplo: Menú Platzi Store
#include <stdio.h>
int main() {
int opcion;
printf("Bienvenido a Platzi Store\n");
printf("0: Bebidas\n1: Comidas\n2: Postres\n");
scanf("%d", &opcion);
switch (opcion) {
case 0: printf("🥤 Usted eligió Bebidas\n"); break;
case 1: printf("🍔 Usted eligió Comidas\n"); break;
case 2: printf("🍰 Usted eligió Postres\n"); break;
default: printf("❌ Opción no válida\n"); break;
}
return 0;
}
📐 Importancia de la indentación
✔ Mejora la legibilidad.
✔ Facilita el mantenimiento.
✔ Reduce errores.
👉 En switch, los case y break deben estar alineados.
🚀 Recomendación práctica
1️⃣ Copia el código en tu entorno local.
2️⃣ Ejecútalo con diferentes entradas.
3️⃣ Ajusta indentación y corrige errores.
💡 Así entenderás mejor cómo funciona switch en situaciones reales.
#include <stdio.h>
int a = 2;
int opt2 = 1;
int main(){
printf("********************** \n");
printf("Bienvenido a la tienda \n");
printf("opcion 0, para Bebidas \n");
printf("opcion 1, para Comidas\n");
printf("opcion 2, para Postres \n");
printf("********************** \n");
/* code */
switch (a){
case 0:
//aqui va el menu de Bebidas
Hola!
Tengo una duda: Cuál sería la diferencia entre la estructura de decisión if y un switch con break en cada case ?
En síntesis, ninguna. Pero hay algunas cosas a notar:
switch es muy ligeramente más rápido.¿El break para default se puede obviar sin ningún problema o puede generar alguno?
Hola, Walter :) Si dejas el default al final, break no haría nada; pero considera un escenario como el siguiente (tomado de este hilo en stack overflow)
switch(num) { case 1: DoSomething(); case 2: DoSomething2(); case 3: case 4: case 5: Console.WriteLine("You have entered {0}", num); break; default: Console.WriteLine("You have not entered a number between 1 and 10"); //break; This part is commented case 6: DoSomething3(); }
Si no hay un break, el código podría seguir cada paso, incluso después de default y entrar en case 6. Así que podrías considerar "siempre usar break" como una buena práctica, para evitar posible errores en la lógica de tu código.
El default siempre debe ir último no debería haber ningún case después.
comparto el codigo completo, he agregado la solicitud del nombre del usuario, para darle el toque personalizado de atención jaja, adjunto el codigo y el resultado 😊
Código:
#include <stdio.h> int opt1 = 0; int opt2 = 0; char nombre[10]; int main() { printf("Buen dia, ingrese su nombre porfavor: "); scanf("%s", &nombre); printf("\n\n\n###########################################################\n"); printf("Bienvenido %s al restaurant Jorge Z:\n", nombre); printf("Tiene tres categorias para elegir el menu:\n"); printf("Opcion 0: Bebidas\nOpcion 1: comidas\nOpcion 2: Postres\n"); printf("Ahora selecciona la categoria a revisar: "); scanf("%d", &opt1); printf("###########################################################\n\n\n"); switch (opt1) { case 0: printf("################################\n"); printf("%s, haz escogido la categoría [0]Bebidas\n", nombre); printf("Te presento la lista de bebidas para que elijas:\n"); printf("Opcion 0: Mojito\nOpcion 1: Pisco sour\nOpcion 2: Limonada Frozen\n"); printf("Ahora selecciona que deseas tomar: "); scanf("%d", &opt2); printf("##################################\n\n\n"); switch (opt2) { case 0: printf("%s, Usted ha elegido la bebida Mojito ", nombre); break; case 1: printf("%s, Usted ha elegido la bebida Pisco sour ", nombre); break; case 2: printf("%s, Usted ha elegido la bebida Limonada Frozen ", nombre); break; default: printf("%s, Ha elegido una opcion incorrecta", nombre); break; } break; case 1: printf("################################\n"); printf("%s, haz escogido la categoría [1]Comidas\n", nombre); printf("Te presento la lista de bebidas para que elijas:\n"); printf("Opcion 0: Lomo saltado\nOpcion 1: Ceviche\nOpcion 2: Carapulcra\n"); printf("Ahora selecciona que deseas tomar: "); scanf("%d", &opt2); printf("##################################\n\n\n"); switch (opt2) { case 0: printf("%s, Usted ha elegido la bebida Lomo saltado ", nombre); break; case 1: printf("%s, Usted ha elegido la bebida Ceviche ", nombre); break; case 2: printf("%s, Usted ha elegido la bebida Carapulcra ", nombre); break; default: printf("%s, Ha elegido una opcion incorrecta", nombre); break; } break; case 2: printf("################################\n"); printf("%s, haz escogido la categoría [2]Postres\n", nombre); printf("Te presento la lista de bebidas para que elijas:\n"); printf("Opcion 0: suspiro a la limeña\nOpcion 1: Mazamorra combinada\nOpcion 2: Cheesecake\n"); printf("Ahora selecciona que deseas tomar: "); scanf("%d", &opt2); printf("##################################\n\n\n"); switch (opt2) { case 0: printf("%s, Usted ha elegido la bebida suspiro a la limeña ", nombre); break; case 1: printf("%s, Usted ha elegido la bebida Mazamorra combinada ", nombre); break; case 2: printf("%s, Usted ha elegido la bebida Cheesecake ", nombre); break; default: printf("%s, Ha elegido una opcion incorrecta", nombre); break; } break; default: printf("ha seleccionado una categoria incorrecta\n"); printf("Adios"); break; } } ```Resultado:  
Pequeño ejemplo con switch:
#include <stdio.h> enum PriceTennis { AIR_FORCE_ONE = 2000, NEW_BALANCE_550v5 = 2500, Jordan_Original_2 = 3500 }; const int ENVIO = 300; int main(void) { int selector; printf("¿Cuáles quieres?\n"); scanf("%d", &selector); switch (selector) { case 1: printf("Los Nike Air Force One cuestan: %d\n", AIR_FORCE_ONE); printf("El costo de envío es: %d\n", ENVIO); printf("El costo total es: %d\n", AIR_FORCE_ONE + ENVIO); break; case 2: printf("Los New Balance 550v5 cuestan: %d\n", NEW_BALANCE_550v5); printf("El costo de envío es: %d\n", ENVIO); printf("El costo total es: %d\n", NEW_BALANCE_550v5 + ENVIO); break; case 3: printf("Los Jordan Originales 2 cuestan: %d\n", Jordan_Original_2); printf("El costo de envío es: %d\n", ENVIO); printf("El costo total es: %d\n", Jordan_Original_2 + ENVIO); break; default: printf("No hay más modelos en existencia\n"); } return 0; }
Excelente el uso de la instrucción switch
podemos decir que switch e if, ambas son condicionales
Mejor que una maquína de estado este hecha con switch-case que con if-else, porque tiene mejor estructura.
Cuando dice que se comparta diferente según el estado, me rcuerda la ley de la inercia de Newton, que dice.
Todo objeto en estado de movimiento o quitud ,se mantiene en ese estado hasta que se le aplique una fuerza externa, que lo cambie de su estado.
En este caso el cambio de estado es cambiar el valor de case.
Uno de los principales uso del switch case es crear maquindas de estado, donde el codigo se comparta de manera diferentes según el estado.