No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
4 Hrs
6 Min
45 Seg

Condicional Switch

15/20
Recursos

Aportes 20

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

<string number;
int opt = 2;
 
switch(opt)
{
    case 1: 
        number = "One";
        break;
    case 2: 
        number = "Two";
        break;
    default:
        number = "Error";
        break;
}
Console.WriteLine("El número es: " + number);> 

Condicional SWITCH

La instrucción switch selecciona una lista de instrucciones para ejecutarla en función de la coincidencia de un patrón con una expresión de coincidencia, como se muestra en el ejemplo siguiente:

DisplayMeasurement(-4);  // Output: Measured value is -4; too low.
DisplayMeasurement(5);  // Output: Measured value is 5.
DisplayMeasurement(30);  // Output: Measured value is 30; too high.
DisplayMeasurement(double.NaN);  // Output: Failed measurement.

void DisplayMeasurement(double measurement)
{
    switch (measurement)
    {
        case < 0.0:
            Console.WriteLine($"Measured value is {measurement}; too low.");
            break;

        case > 15.0:
            Console.WriteLine($"Measured value is {measurement}; too high.");
            break;

        case double.NaN:
            Console.WriteLine("Failed measurement.");
            break;

        default:
            Console.WriteLine($"Measured value is {measurement}.");
            break;
    }
}

En el ejemplo anterior, una instrucción switch usa los siguientes patrones:

Un patrón relacional (disponible en C# 9.0 y versiones posteriores), para comparar el resultado de una expresión con una constante.
Patrón constante: pruebe si un resultado de expresión es igual a una constante.

En el ejemplo anterior también se muestra el caso default. El caso default especifica las instrucciones que se ejecutarán cuando una expresión de coincidencia no coincida con ningún otro patrón de caso. Si una expresión de coincidencia no coincide con ningún patrón de caso y no hay ningún default caso, el control pasa por una switch instrucción.

Una instrucción switch ejecuta la lista de instrucciones en la primera sección de switch cuyo patrón de caso coincida con una expresión de coincidencia y cuya restricción de caso, de haberla, se evalúe como true. Una instrucción switch evalúa los patrones de casos en el orden de texto de arriba a abajo. El compilador genera un error cuando una instrucción switch contiene un caso inaccesible.

Ejemplos de la sentencia SWITCH y su uso:

La sentencia switch no es ampliamente utilizada por programadores senior debido a algunas limitaciones y consideraciones en cuanto a su mantenimiento y legibilidad del código. Aquí hay algunas razones:

  • Complejidad y dificultad de mantenimiento: A medida que aumenta el número de casos en una sentencia switch, se vuelve más difícil de mantener y comprender. El código puede volverse largo y enredado, lo que dificulta su lectura y comprensión.

  • Falta de flexibilidad: La sentencia switch solo puede evaluar expresiones de igualdad. No permite la evaluación de expresiones lógicas o condiciones complejas. Esto puede ser limitante y requerir el uso de estructuras de control adicionales para abordar casos más complejos.

  • Duplicación de código: Si hay múltiples casos que requieren la misma lógica de ejecución, es necesario repetir ese código en cada caso correspondiente. Esto puede conducir a una mayor duplicación de código y dificultar la mantenibilidad y la introducción de errores.

  • Mayor propensión a errores: La sentencia switch puede ser propensa a errores, especialmente si se olvida agregar una instrucción break al final de cada caso. Esto puede llevar a que se ejecuten casos no deseados o múltiples casos debido a una falta de manejo adecuado.

En cambio, los programadores pueden preferir utilizar estructuras de control más flexibles, como declaraciones if-else o diccionarios/mapeos, que pueden proporcionar una mayor legibilidad, modularidad y flexibilidad en el código.

Comparto mi código de un menu con distintos juegos:

int totalPlayer;
int totalDealer = 15;
string message;
int option;

Console.WriteLine("Menu: \n 1 - BlackJack \n 2 - Rock/Paper/Siccers \n 3 - Tik Tak Toe \n choose a game");
option = Convert.ToInt32(Console.ReadLine());

switch (option)
{
    case 1:
        Console.WriteLine("BlackJack Game");
        Console.WriteLine("Enter the total value of your cards");
        totalPlayer = Convert.ToInt32(Console.ReadLine());

        if (totalPlayer > totalDealer && totalPlayer < 22)
        {
            message = "You win :D";
        }
        else if (totalPlayer <= totalDealer || totalPlayer > 21)
        {
            message = "You lost :(";
        }
        else
        {
            message = "upps!!!";
        }

        Console.WriteLine(message);

        break;
    case 2:
        Console.WriteLine("2 - Rock/Paper/Siccers \n COMMING SOON");
        break;
    case 3:
        Console.WriteLine("3 - Tik Tak Toe \n COMMING SOON");
        break;
    default: Console.WriteLine("upss, option not valid");
        break;
}

Bienvenido y muchas gracias por su feedback.

Me gustaría dejar aquí mis modificaciones,

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
int totalJugador = 0;
string mensaje;
int totalDealer = 15;
string controladorSwitch = "menu";

Console.WriteLine("Bienvenido, digita '21' para jugar al juego del 21");
controladorSwitch = Console.ReadLine();
switch (controladorSwitch)
{ 
    case "21":
        Console.WriteLine("Ingresa la sumatoria de tus cartas");
        totalJugador = Convert.ToInt32(Console.ReadLine());
        if ((totalJugador > totalDealer) && (totalJugador <= 21))
        {
            mensaje = "Venciste al Dealer, Felicidades.";
        }
        else if (totalJugador <= totalDealer)
        {
            mensaje = "No lograste vencer al Dealer.";
        }
        else if (totalJugador > 21)
        {
            mensaje = "No lograste vencer al Dealer, sacaste más de 21";
        }
        else
        {
            mensaje = "Condicón no válida para el juego.";
        }

        Console.WriteLine(mensaje);
        break;
    default:
        Console.WriteLine("No se reconoce el comando ingrsado");
        break;

}
Console.WriteLine("Hello, World!");

Console.WriteLine(" Switch ");

// variables

int totalJugador = 25;
int totalMaquina = 15;
string mensaje = "";
string switchControl = "15";

// Juego Blackjack

switch (switchControl)
{
    case "menu":
        Console.WriteLine(" Bienvenido al casino online: ");
        Console.WriteLine(" escriba 21 para entrar al juego: ");
        switchControl = Console.ReadLine();
        break;

    case "21":


        if (totalJugador > totalMaquina && totalJugador<22)
        {
            mensaje = " Le ganaste a la maquina felicidades ";
        }
        else if (totalJugador >= 22)
        {
            mensaje = " Perdiste contra la maquina te pasaste de 21 ";
        }

        else if (totalJugador <= totalMaquina)
        {
            mensaje = " perdiste game over ";
        }
        else
        {
            mensaje = " condicion no valida ";
        }

        Console.WriteLine(mensaje);
        break;
        default:
        Console.WriteLine(" Valor ingresado no valido: ");
        break;
}

En la empresa donde trabajo utilizamos ni switch o else lo consideran mala practica. en lugar a eso utilizamos mas patrones de diseño

Para que no rompa como el ejemplo que puso el maestro en el primer caso no se pone el break para que siga en ejecución y este valide la nueva variable, que es lo mismo que poner continué.

Que buenas analogías, me encanta ver plasmados los temas con robótica. Gracias maestro, un honor!!

Esta es la modificación que realicé con el switch: ```c# Random aleatorioJugador = new Random(); Random aleatorioDealer = new Random(); Console.WriteLine("Bienvenidos al juego BlackJack. Es hora de jugar: \n"); int cartasJugador = aleatorioJugador.Next(1, 11); int cartasDealer = aleatorioDealer.Next(1, 11); int totalDealer = 0; int totalJugador = 0; string message = ""; string finJuego = "No"; string ultimaCarta = "No"; string otraCarta = "Si"; string switchControl = "Dealer"; //Blackjack, juntar 21 o en caso de tener menos de 21, tener más puntos que el dealer while (finJuego == "No") { switch (switchControl) { case "Dealer": totalDealer += cartasDealer; Console.WriteLine($"El dealer inicia con: {totalDealer}"); while (totalDealer <= 15) { cartasDealer = aleatorioDealer.Next(1, 11); totalDealer += cartasDealer; Console.WriteLine($"El acumulado del dealer, después de esta carta {cartasDealer}, es: {totalDealer}"); if (totalDealer > 21) { message = "El dealer ha perdido!!!"; ultimaCarta = "Si"; finJuego = "Si"; } } switchControl = "Jugador"; break; case "Jugador": Console.WriteLine("\n"); totalJugador += cartasJugador; Console.WriteLine($"El jugador inicia con: {totalJugador}"); while (ultimaCarta == "No") { Console.WriteLine("Deseas otra carta"); otraCarta = Console.ReadLine(); if (otraCarta == "Si") { cartasJugador = aleatorioJugador.Next(1, 11); totalJugador += cartasJugador; Console.WriteLine($"El acumulado del jugador, después de esta carta {cartasJugador}, es: {totalJugador}\n"); if (totalJugador > 21) { message = "Lo siento, perdiste porque te pasaste!!!"; finJuego = "Si"; ultimaCarta = "Si"; } } else if (otraCarta == "No") { if (totalJugador > totalDealer) { message = "Has vencido al dealer!!!"; ultimaCarta = "Si"; finJuego = "Si"; } else if (totalJugador <= totalDealer) { message = "Lo siento, perdiste porque tienes menos que el dealer!!!"; ultimaCarta = "Si"; finJuego = "Si"; } else { message = "Condición no válida."; ultimaCarta = "Si"; finJuego = "Si"; } } else { Console.WriteLine("Opción no válida, intenta nuevamente!!!"); } } break; default: Console.WriteLine("Opción no válida, inténtalo nuevamente"); break; } } Console.WriteLine($"Las cartas del dealer son: {totalDealer} y las cartas tuyas son: {totalJugador}. {message}"); ```
Use la condicional de switch combinada con un if y un bucle for y este fue mi resultado ![](https://static.platzi.com/media/user_upload/image-e6fe8d89-52a3-4ecf-a68b-eedbe7a49ff0.jpg) Adjunto mi codigo ```js //Menu Basico de juego //Declaro variables Random random = new Random(); String opcionmenu = ""; String opcionsubmenu = ""; String message = ""; int dealer = random.Next(0, 21); int jugador = 0; //Empiezo a gestionar las operaciones Console.WriteLine($" Menu disponible \n Inicio \n"); opcionmenu = Console.ReadLine(); switch (opcionmenu) { case "Inicio": //Menu basico de opciones Console.WriteLine($"\n Opciones disponibles: \n Nueva partida \n Scores \n Cerrar Sesion \n"); opcionsubmenu = Convert.ToString(Console.ReadLine()); //Seleciona una opcion del submenu switch (opcionsubmenu) { case "Nueva partida": // Se Inicia una partida ingresando valores Console.WriteLine("Ingrese un valor"); jugador = Convert.ToInt32(Console.ReadLine()); if (jugador > dealer) { message = $"Ganaste al dealer con {jugador}"; } else if (jugador < dealer) { message = $"El dealer gano con {dealer}"; } else { message = "Opción no valida"; } break; case "Scores": Console.WriteLine("En construcción"); break; case "Cerrar Sesion": Console.WriteLine("En los proximos minutos se cerrara la sesión"); for (int i = 5; i >= 0; i--) { Console.WriteLine($"Saliendo del sistema {i} \n"); System.Threading.Thread.Sleep(1000); } Console.WriteLine("Sesión cerrada"); break; default: Console.WriteLine("Opción no valida"); break; } break; default: Console.WriteLine("Opcion no valida"); break; } Console.WriteLine(message); ```//Menu Basico de juego //Declaro variables Random random = new Random(); String opcionmenu = ""; String opcionsubmenu = ""; String message = ""; int dealer = random.Next(0, 21); int jugador = 0; //Empiezo a gestionar las operaciones Console.WriteLine($" Menu disponible \n Inicio \n"); opcionmenu = Console.ReadLine(); switch (opcionmenu) { case "Inicio": //Menu basico de opciones Console.WriteLine($"\n Opciones disponibles: \n Nueva partida \n Scores \n Cerrar Sesion \n"); opcionsubmenu = Convert.ToString(Console.ReadLine()); //Seleciona una opcion del submenu switch (opcionsubmenu) { case "Nueva partida": // Se Inicia una partida ingresando valores Console.WriteLine("Ingrese un valor"); jugador = Convert.ToInt32(Console.ReadLine()); if (jugador > dealer) { message = $"Ganaste al dealer con {jugador}"; } else if (jugador < dealer) { message = $"El dealer gano con {dealer}"; } else { message = "Opción no valida"; } break; case "Scores": Console.WriteLine("En construcción"); break; case "Cerrar Sesion": Console.WriteLine("En los proximos minutos se cerrara la sesión"); for (int i = 5; i >= 0; i--) { Console.WriteLine($"Saliendo del sistema {i} \n"); System.Threading.Thread.Sleep(1000); } Console.WriteLine("Sesión cerrada"); break; default: Console.WriteLine("Opción no valida"); break; } break; default: Console.WriteLine("Opcion no valida"); break; } Console.WriteLine(message);
< `string country;` `Console.WriteLine(@"*******************` ` COMO SE OYE` `*******************` `");` `Console.WriteLine("Escribe tu país:");` `Console.WriteLine(@"` ` - ESPAÑA` ` - ARGENTINA` ` - USA` ` - MEXICO` ` - COLOMBIA` `");` `country = (Console.ReadLine() ?? string.Empty).ToUpper();` `switch (country)` `{` ` case "ESPAÑA":` ` Console.WriteLine($"En {country} se dice: Que Bonita Canción");` ` break;` ` case "ARGENTINA":` ` Console.WriteLine($"En {country} se dice: Que Bonita Canción");` ` break;` ` case "USA":` ` Console.WriteLine($"En {country} se dice: What a beatiful Song");` ` break;` ` case "MEXICO":` ` Console.WriteLine($"En {country} se dice: Oí nomás ese cumbion");` ` break;` ` case "COLOMBIA":` ` Console.WriteLine($"En {country} se dice: Mucho Tema");` ` break;` ` default:` ` Console.WriteLine("Entrada no Valida :(");` ` break;` `}` \>
revisen Pattern matching y switch puede reemplazar a if, Gleam es un lenguaje nuevo no utiliza if ni for ... interesante ojala crezca la adopción de ese lenguaje esta genial
![](https://static.platzi.com/media/user_upload/codigoSWITCH-44614bba-1c81-44b7-97c5-b20ea03597cf.jpg)

Mejoraría mucho el curso si tuviese los playground para practicar después de este tipo de clases.

En la versión Microsoft Visual Studio Community 2022 (64 bits) - Current Versión 17.8.6 No me aceptada el "break"..,. decía que en este nuevo contexto ya no era valida. Al checar documentación encontre que en lugar de break se usaba "return" Este código si fue valido son errores y compilo correctamente int numero; numero = 4; switch (numero) { case 1: Console.WriteLine("Este es un uno"); return; case 2: Console.WriteLine("Este es un dos"); return; case 3: Console.WriteLine("Este es un tres"); return; default: Console.WriteLine("Fallo de numero"); return; }
![](https://static.platzi.com/media/user_upload/Switch_Casino-80ae975f-d636-4581-8fdb-c44c17e102ad.jpg)

Yo estuve haciendo una calculadora en lo mas adelante la dejare por si me quieren dar un consejo.

var num1 = 0d;
var num2 = 0d;
var result = 0d;

Console.WriteLine(“Elija una opcion: Suma, Resta, Multiplicacion, Division”);
string input = Console.ReadLine();

Console.WriteLine(“Ingrese el primer valor”);
num1 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine(“Ingrese el segundo valor”);
num2 = Convert.ToDouble(Console.ReadLine());

switch (input.ToLower())
{
case “suma” or “+”:
result = num1 + num2;
Console.WriteLine("EL resultado de su suma es: " + result);
break;

case "resta" or "-":
    result = num1 - num2;
    Console.WriteLine("El resultado de su resta es: " + result);
    break;

case "multiplicacion" or "*":
    result = num1 * num2;
    Console.WriteLine("El resultado de su multiplicacion es: " + result);
    break;

case "division" or "/":
    result = num1 / num2;
    Console.WriteLine("El resultado de su division es: " + result);
    break;

default: 
    Console.WriteLine("La opcion elegida no esta disponible");
    break;

}

Aquí mi practica😀

con este cogio hacer que al escribir 21 entren al jeugo de 21

int totalJugador = 25;
int totalDealer = 15;
string message = “”;
string switchControl = “menu”;
//Blackjack, Juntar 21 pidiendo, en casa de pasarte de 21 pierdes.
//cartas o en caso de tener menos
//de 21 igual tener mayor puntuación que el dealer
switch (switchControl)
{
case “menu”:
Console.WriteLine(“Welcome al c a s i n o”);
Console.WriteLine(“Escriba ‘21’ para jugar al 21”);
switchControl = Console.ReadLine();
switch (switchControl) {
case “21”:
if (totalJugador > totalDealer && totalJugador < 22)
{
message = “Venciste al dealer, felicidades”;
}
else if (totalJugador >= 22)
{
message = “Perdiste vs el dealer, te pasaste de 21”;
}
else if (totalJugador <= totalDealer)
{
message = “Perdiste vs el dealer, lo siento”;
}
else
{
message = “condición no válida”;
}
Console.WriteLine(message);
break;

    }
    break;

default:
    Console.WriteLine("Valor ingresa no válido en el  C A S I N O");
    break;

}