Contenido del curso
Primeros pasos con C#
- 6

Tipos de datos primitivos en C#
11:38 min - 7

Área de un rectángulo en C#
12:08 min - 8

var en C# para declarar variables sin tipo
05:25 min - 9

Cálculo del Área de un Círculo en C# Usando Constantes y Variables
14:39 min - 10

Operadores aritméticos en C# explicados
09:57 min - 11

Operadores lógicos AND OR NOT XOR en C#
17:30 min - 12

Operadores relacionales para comparar números en C#
11:05 min - 13

Interpolación de strings en C#
11:47 min
Bucles y estructuras de control en C#
- 14

Condicionales IF en C#: Estructura y Uso Práctico en Blackjack
15:23 min - 15

Switch en C# para máquinas de estado
Viendo ahora - 16

Ciclos while y do-while en C#
18:00 min - 17

Refactorizar el juego de 21 en C#
11:37 min - 18

Uso de ciclos FOR en programación C#
18:51 min - 19

Cómo corregir el bug del bucle for en C#
08:27 min
Próximos pasos
Switch en C# para máquinas de estado
Resumen
La sentencia switch en C# sigue siendo útil cuando programas máquinas de estado, sistemas embebidos o videojuegos. Si estás aprendiendo a controlar el flujo de tu código según múltiples valores, esta estructura te ahorra escribir cadenas largas de if-else y deja tu lógica más legible.
¿Qué es una máquina de estados y por qué necesita switch?
Una máquina de estados es un patrón donde tu programa solo puede estar en un estado a la vez y cambia entre ellos según ciertos eventos. El switch encaja perfecto aquí porque cada caso representa un estado distinto.
Piensa en un robot centinela de seguridad. Tiene dos estados básicos: búsqueda y detección, y persecución con alerta. Mientras sus sensores no detecten a un humano, se queda indefinidamente en búsqueda. Cuando detecta a alguien, cambia al estado de alerta y persigue hasta que el intruso sea neutralizado. Solo entonces vuelve al estado inicial.
Lo mismo pasa en un videojuego de pelea de arcade. La pantalla de menú se repite con el mensaje insert coin hasta que metes una moneda. Ahí entras al estado de juego, eliges personaje, peleas, avanzas. Si pierdes, pasas al estado game over y de ahí regresas automáticamente al menú inicial.
¿Cuándo conviene usar switch en lugar de if? Cuando comparas una sola variable contra varios valores fijos y cada valor dispara un bloque distinto. El switch es más legible y es el estándar para representar estados.
¿Cómo se escribe un switch en C#?
El switch necesita una variable controladora. Puede ser un string, un entero u otro tipo compatible. Esa variable es la que decide a qué case entrar.
La estructura básica se ve así:
csharp string switchControl = "menu";
switch (switchControl) { case "menu": Console.WriteLine("Welcome al casino"); Console.WriteLine("Escriba '21' para jugar al 21"); switchControl = Console.ReadLine(); break;
case "21": // aquí va la lógica del juego con if-else break; default: Console.WriteLine("Valor ingresado no válido en el casino"); break;
}
Fíjate en tres piezas obligatorias:
- La palabra clave switch seguida de la variable entre paréntesis.
- Cada case con el valor exacto que quieres comparar.
- La instrucción break al final de cada bloque para salir del switch.
¿Para qué sirve el case default?
El default es el caso de respaldo. Se ejecuta cuando ninguno de los case coincide con el valor de la variable. Si el usuario escribe "gato" en lugar de "21", el programa cae en default y muestra el mensaje de valor no válido.
Puedes tener tantos case como necesites, pero solo un default por switch.
¿Qué hace el break en un switch? Indica al programa que termine la ejecución del switch una vez que el caso correspondiente terminó. Sin él, el compilador marca error en C#.
¿Cómo aplicar switch a un casino en consola?
Partiendo del código de la clase anterior, donde ya tenías un if que evaluaba si el jugador ganaba o perdía contra el dealer en el 21, el siguiente paso es envolver esa lógica dentro de un switch para construir un menú.
El flujo queda así:
- Creas un nuevo proyecto de consola llamado SwitchExample y pegas el código previo.
- Declaras la variable controladora
string switchControl = "menu";para que el programa entre por defecto al menú de bienvenida. - En el case "menu" muestras el mensaje Welcome al casino, pides al usuario que escriba "21" y guardas su respuesta con
Console.ReadLine()en la misma variableswitchControl. - En el case "21" colocas toda la lógica del if que compara las cartas del jugador y del dealer.
- En el default avisas que el valor ingresado no es válido.
Cuando ejecutas el programa, si la variable inicia en "menu", verás la bienvenida y la instrucción para jugar. Si la inicias en "21", el programa salta directo a la lógica del juego y evalúa quién ganó con los valores de 25 y 15, mostrando el mensaje Perdiste versus el dealer, te pasaste de 21.
Aquí queda claro que el switch ejecuta solo el caso que coincide, llega al break y sale. Por eso el programa se cierra después de una jugada: no hay nada que lo mantenga corriendo.
¿Por qué el programa termina después de un case?
Porque el switch es una estructura de decisión única, no un ciclo. Una vez evaluada la variable y ejecutado el break, el flujo continúa después del switch y, si no hay más código, el programa termina.
Para que tu casino siga preguntando jugada tras jugada sin cerrarse, necesitas envolver el switch en un bucle. Ahí es donde entra la sentencia while, que es el siguiente paso natural para que tu juego empiece a sentirse como un juego de verdad.
¿Ya pensaste qué otros juegos podrías agregar al menú: solitario, póker, ruleta? Cuéntame en los comentarios cuál programarías primero.