No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

14 Días
7 Hrs
35 Min
43 Seg

La sentencia switch

20/26

Lectura

Hola, quiero felicitarte por haber llegado hasta aquí. Estamos casi por llegar al final de este curso y en este momento conocerás la sentencia Switch.

...

Regístrate o inicia sesión para leer el resto del contenido.

Aportes 22

Preguntas 2

Ordenar por:

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

Al buen entendedor, pocas palabras jejejejejeje, todo claro =D

Creo que no todos los videos se lograron subir, bug!

Realice este ejercicio como si se tratara de un menú, con Switch se puede evitar el uso de If – Else If – Else If – Else If-- Else … El último Else sería como el default, y el If y cada Else If como cada case…

public static void Main()
        {
            Console.WriteLine("Ingrese el número de su color favorito: ");
            Console.WriteLine("  1. Azul  ");
            Console.WriteLine("  2. Rojo  ");
            Console.WriteLine("  3. Verde ");
            string caseSwitch = Console.ReadLine();

            switch (caseSwitch)
            {
                case "1":
                    Console.WriteLine("Su color favorito es el Azul");
                    break;
                case "2":
                    Console.WriteLine("Su color favorito es el Rojo");
                    break;
                case "3":
                    Console.WriteLine("Su color favorito es el Verde");
                    break;
                default:
                    Console.WriteLine("ERROR: No ha ingresado una opción correcta.");
                    break;
            }
        }

hello world.en el curso de fundamentos de c# no salen las lecturas y esa es al respecto mi lectura.

Aquí solo lo usé para un “control” de entrada de alguna cantina / botanero. En su momento intenté hacerlo con ifs pero me falló con un caso específico jajajaja

Ok, todas las lecturas no fueron colocadas y ni se dieron cuenta. 😕

Bugs ?

😃

Les dejo mi versión del ejemplo 😃

Console.WriteLine("Topic: Case Statement");

Console.WriteLine("Soda Shop");

Console.WriteLine("Select a soda and enter the number of your choice ");
Console.WriteLine("Options:\n 1.Cola \n 2.Lime \n 3.Orange \n 4.Apple");

int customerChoice = int.Parse(Console.ReadLine()); 


switch (customerChoice)
{
    case 1:
        Console.WriteLine("Cola soda - $2 USD");
        break;
    case 2:
        Console.WriteLine("Lime soda - $1 USD");
        break;

    case 3:
        Console.WriteLine("Orange soda - $1.5 USD");
        break;
    case 4:
        Console.WriteLine("Apple soda - $1 USD");
        break;

    default:
        Console.WriteLine("Select a valid option");
        break;

}
### **Patrones de coincidencia (C# 7.0 y posterior)** Desde C# 7.0, se pueden usar patrones en la sentencia `switch`, lo que permite hacer coincidir tipos, comparar expresiones más complejas, y realizar más verificaciones dentro de cada caso: switch (valor) { case int n when n > 0: Console.WriteLine("Número positivo"); break; case string s: Console.WriteLine($"Una cadena: {s}"); break; default: Console.WriteLine("Otro tipo o valor"); break; } Con este enfoque, puedes evaluar condiciones más complejas directamente dentro del `switch`, aumentando la flexibilidad y la capacidad de manejar múltiples escenarios dentro de tu código. En .NET 8 y .NET 9, se han introducido mejoras y nuevas características que afectan el uso de la sentencia `switch`, especialmente en términos de rendimiento, legibilidad del código y nuevas funcionalidades disponibles en C# 12 y C# 13. ### Mejoras en .NET 8 y .NET 9: 1. **Mejoras en Coincidencia de Patrones (Pattern Matching)**: * Tanto en .NET 8 como en .NET 9, se han mejorado las capacidades de coincidencia de patrones dentro de las expresiones `switch`. Esto permite condiciones más complejas y patrones más expresivos, como el uso de combinadores de patrones (`and`, `or`, `not`) y patrones relacionales directamente dentro de las sentencias `switch`. 2. **Mejoras de Rendimiento**: * .NET 9 incluye optimizaciones de rendimiento que impactan cómo se compilan y ejecutan las sentencias `switch`. Estas mejoras son particularmente útiles en escenarios que involucran coincidencias complejas o grandes volúmenes de datos. 3. **Nuevas Funcionalidades en C# 13**: * **Indexación Implícita en Inicializadores de Objetos**: Una característica nueva en C# 13 que permite inicializaciones de objetos más expresivas, que se pueden combinar con expresiones `switch` para inicializar matrices o colecciones con lógica condicional. * **Tipado Natural de Grupos de Métodos**: Mejora en C# 13 que permite al compilador inferir el "tipo natural" para grupos de métodos, lo cual es útil cuando las expresiones `switch` se utilizan junto con delegados o asignaciones de grupos de métodos. ### Ejemplo de Uso: Con estas mejoras, una expresión `switch` en C# 13 podría verse así: int numero = 5; string resultado = numero switch { \> 0 and <= 5 => "Número pequeño", \> 5 => "Número grande", \_ => "Desconocido" }; Este ejemplo demuestra cómo se pueden usar patrones relacionales directamente dentro de una sentencia `switch`, ofreciendo una forma más concisa y legible de expresar lógica condicional.
les dejo aquí mi calculador a con la sentencia switch: para el que la quiera ampliar o modificar: `using System;` `using System.Collections.Generic;` `using System.Linq;` `namespace CalculatorMethods` `{` ` internal class Program` ` {` ` public void IntegerAddition(int a, int b)` ` {` ` int addition = a + b;` ` Console.WriteLine("Result of the integer addition: " + addition);` ` }` ` public void Division(float a, float b)` ` {` ` if (b != 0)` ` {` ` float result = a / b;` ` Console.WriteLine("Result of the division: " + result);` ` }` ` else` ` {` ` Console.WriteLine("Error: Cannot divide by zero.");` ` }` ` }` ` public void Multiplication(int a, int b)` ` {` ` int multiplication = a * b;` ` Console.WriteLine("Result of the integer multiplication: " + multiplication);` ` }` ` public void SquareRoot(double a)` ` {` ` if (a >= 0)` ` {` ` double squareRoot = Math.Sqrt(a);` ` Console.WriteLine("Square root: " + squareRoot);` ` }` ` else` ` {` ` Console.WriteLine("Error: Cannot calculate the square root of a negative number.");` ` }` ` }` ` static void Main(string[] args)` ` {` ` Program calculator = new Program();` ` char option;` ` do` ` {` ` Console.WriteLine("Select an option:");` ` Console.WriteLine("1. Integer addition");` ` Console.WriteLine("2. Division of numbers");` ` Console.WriteLine("3. Integer multiplication");` ` Console.WriteLine("4. Square root");` ` Console.WriteLine("5. Exit");` ` option = Console.ReadKey().KeyChar;` ` Console.WriteLine();` ` switch (option)` ` {` ` case '1':` ` Console.Write("Enter the first integer: ");` ` int num1 = Convert.ToInt32(Console.ReadLine());` ` Console.Write("Enter the second integer: ");` ` int num2 = Convert.ToInt32(Console.ReadLine());` ` calculator.IntegerAddition(num1, num2);` ` break;` ` case '2':` ` Console.Write("Enter the numerator: ");` ` float numerator = Convert.ToSingle(Console.ReadLine());` ` Console.Write("Enter the denominator: ");` ` float denominator = Convert.ToSingle(Console.ReadLine());` ` calculator.Division(numerator, denominator);` ` break;` ` case '3':` ` Console.Write("Enter the first integer: ");` ` int factor1 = Convert.ToInt32(Console.ReadLine());` ` Console.Write("Enter the second integer: ");` ` int factor2 = Convert.ToInt32(Console.ReadLine());` ` calculator.Multiplication(factor1, factor2);` ` break;` ` case '4':` ` Console.Write("Enter the number to calculate the square root: ");` ` double number = Convert.ToDouble(Console.ReadLine());` ` calculator.SquareRoot(number);` ` break;` ` case '5':` ` Console.WriteLine("Exiting the program.");` ` break;` ` default:` ` Console.WriteLine("Invalid option. Please select a valid option.");` ` break;` ` }` ` Console.WriteLine("\nPress any key to continue...");` ` Console.ReadKey();` ` Console.Clear();` ` } while (option != '5');` ` }` ` }` `}`

Realicé el ejemplo, me quedó de este modo:

Console.WriteLine("Bienvenido a Soda Sale\nEscriba la soda elegida para ver su precio");
string soda = Console.ReadLine();
switch (soda)
{
    case "cola":
        Console.WriteLine("Cola Soda - S/. 2.50");
        break;
    case "lime":
        Console.WriteLine("Lime Soda - S/. 1.50");
        break;
    case "inka":
        Console.WriteLine("Inka Cola -S/. 2.50 ");
        break;
        default: Console.WriteLine("El valor ingresado es incorrecto");
        break;
}

Para introducir una opcion en el menu switch no podemos predecir si el usuario usara una mayuscula al inicio o si por algun motivo en medio de la oracion.

using System;

public class switchExample
{
    public static void Main()
    {
        Console.WriteLine("Enter the selected soda: ");
        string caseSwitch = Console.ReadLine();
        caseSwitch = caseSwitch.ToLower();

        switch (caseSwitch)
        {
            case "cola":
                Console.WriteLine("Cola soda - $2 USD");
                break;
            case "lime":
                Console.WriteLine("Lime soda - $1 USD");
                break;
            case "orange":
                Console.WriteLine("Orange soda - $1.5 USD");
                break;
            case "apple":
                Console.WriteLine("Apple soda - $1 USD");
                break;
            default:
                Console.WriteLine("ERROR: You did not select a soda or you entered an incorrect value.");
                break;
        }
    }
}

lo que hace “caseSwitch = caseSwitch.ToLower();” es tomar la oracion y cambiar todos los caracteres por su equivalente a minusculas, si van a usar un input en algo que desarrollen, siempre es buena practica, al igual que usar el “.ToUpper” para los nombres (para poner solo la letra inicial en mayuscula se debe tratar a los STRINGS como una lista de CHAR, entonces el primer caracter es seleccionado usando posicionies[ ] y se le aplica el “.ToUpper”).

Espero les sea de ayuda para los interesados en desarrollar apps o videojuegos con C#!

Mi aporte

Console.WriteLine("Please select one game to play \n " + "Pac-man \n" + " Pepsi-Man \n" + " Crash CTR \n" + " Mario Cart \n");
string game = Console.ReadLine();

switch (game)
{
    case "Pac-man":
        Console.WriteLine("Pleae enter 2 coins");
        break;
    case "Pepsi-Man":
        Console.WriteLine("Pleae enter 4 coins");
        break;
    case "Crash CTR":
        Console.WriteLine("Pleae enter 3 coins");
        break;
    case "Mario Cart":
        Console.WriteLine("Pleae enter 8 coins");
        break;

        default: Console.WriteLine("Enter A valid game");
        break;

}

mas claro que el agua … imposible mas sencillo

Dejo aca una claculadora básica usando Switch
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SwitchCase
{
internal class Program
{
static void Main(string[] args)
{
Program program = new Program();
program.IniciarCalculadora();
}

    //inicia la calculadora básica
    public void IniciarCalculadora()
    {
        Console.WriteLine("Bienvenido a tu calculadora Básica");
        Console.WriteLine(" Escriba las siguientes palabras de acuerodo a la operación a realizar");
        Console.WriteLine(" Las operaciones que puede realizar son:");
        Console.WriteLine(" suma, resta, multiplicación y división");
        string opcion = Console.ReadLine();
        switch (opcion)
        {
            case "suma":
                Console.WriteLine("Ingrese el primer numero a sumar");
                float n1= (float)Convert.ToDecimal(Console.ReadLine());    
                Console.WriteLine("Ingrese el Segunto numero a sumar");
                float n2 = (float)Convert.ToDecimal(Console.ReadLine());
                float suma = n1 + n2;
                Console.WriteLine("El resultado de la suma es " + suma);
                break;

            case "resta":
                Console.WriteLine("Ingrese el primer numero a restar");
                float n3 = (float)Convert.ToDecimal(Console.ReadLine());
                Console.WriteLine("Ingrese el Segunto numero a restar");
                float n4 = (float)Convert.ToDecimal(Console.ReadLine());
                float resta = n3-n4;
                Console.WriteLine("El resultado de la resta es " + resta);
                break;

            case "multiplicación":
                Console.WriteLine("Ingrese el primer numero a multiplicar");
                float n5 = (float)Convert.ToDecimal(Console.ReadLine());
                Console.WriteLine("Ingrese el Segunto numero a multiplicar");
                float n6 = (float)Convert.ToDecimal(Console.ReadLine());
                float multiplicacion = n5*n6;
                Console.WriteLine("El resultado de la multiplicación es " + multiplicacion);
                break;

            case "división":
                Console.WriteLine("Ingrese el primer numero a dividir");
                float n7 = (float)Convert.ToDecimal(Console.ReadLine());
                Console.WriteLine("Ingrese el Segunto numero a dividir");
                float n8 = (float)Convert.ToDecimal(Console.ReadLine());
                float division = n7/n8;
                Console.WriteLine("El resultado de la división es " + division);
                break;
                
            default:
                Console.WriteLine("Esa operación no la puedo realizar");
                break;

        }
    }
}

}

calculadora con cambio a case
--
namespace caseStatment
{
class Program
{
static void Main(string[] args)
{
double suma = 0;
double resta = 0;
double division = 0;
double multiplicacion = 0;
double raiz2 = 0;
double num1;
double num2;
Console.WriteLine(“CALCULADORA”);
Console.WriteLine("ingresa numero: ");
num1 = double.Parse(Console.ReadLine());
Console.WriteLine("ingresa segundo numero: ");
num2 = double.Parse(Console.ReadLine());
Console.WriteLine("elige la opcion del 1 al 5: ");
Console.WriteLine("1 - Sumar: ");
Console.WriteLine("2 - Restar: ");
Console.WriteLine("3 - Dividir: ");
Console.WriteLine("4 - Multiplicar: ");
Console.WriteLine("5 - Raiz 2: ");
int opcion = int.Parse(Console.ReadLine());
switch (opcion)
{
case 1:
suma = num1 + num2;
Console.WriteLine("La suma es: " + suma);
break;
case 2:
resta = num1 - num2;
Console.WriteLine("La resta es: " + resta);
break;
case 3:
if (num2 != 0)
{
division = num1 / num2;
Console.WriteLine("La division es: " + division);
}
else
{
Console.WriteLine(“La division entre 0 no exite”);
}
break;
case 4:
multiplicacion = num1 * num2;
Console.WriteLine("La multiplicacion es: " + multiplicacion);
break;
case 5:
if (num1 > 0)
{
raiz2 = Math.Sqrt(num1);
Console.WriteLine($“La raiz cuadrada de: {num1} es {raiz2}”);
}
else
{
Console.WriteLine($“La raiz cuadrada de: {num1} no existe”);
}

                if (num2 > 0)
                {
                    raiz2 = Math.Sqrt(num2);
                    Console.WriteLine($"La raiz cuadrada de: {num2} es {raiz2}");
                }
                else
                {
                    Console.WriteLine($"La raiz cuadrada de: {num2} no existe");
                }
                break;
            default:
                Console.WriteLine("La opcion que ingreso no es la correcta");
                break;
        }
    }
}

}

Yo use el mismo ejemplo de la calculadora del video anterior e intercambie los if e else if por los swiitch case

using System;

namespace SwitchCase
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello Folks!\n");
            Console.WriteLine("Ingresa una opcion(letra):\na) suma\nb) resta\nc) multiplicacion\nd) divicion");
            string option = Console.ReadLine();
            option = option.ToLower();

            switch(option)
                {

                case "a":
                    Console.WriteLine("Seleccionaste suma...");
                    Console.WriteLine("Ingresa el primer valor: ");
                    int num1 = int.Parse(Console.ReadLine());
                    Console.WriteLine("Ingresa el segundo valor: ");
                    int num2 = int.Parse(Console.ReadLine());
                    int result1 = num1 + num2;
                    Console.WriteLine($"El resultado es: {result1}");

                    break;

                case "b":
                    Console.WriteLine("Seleccionaste resta...");
                    Console.WriteLine("Ingresa el primer valor: ");
                    int num3 = int.Parse(Console.ReadLine());
                    Console.WriteLine("Ingresa el segundo valor: ");
                    int num4 = int.Parse(Console.ReadLine());
                    int result2 = num3 - num4;
                    Console.WriteLine($"El resultado es: {result2}");

                    break;

                case "c":
                    Console.WriteLine("Seleccionaste multiplicacion...");
                    Console.WriteLine("Ingresa el primer valor: ");
                    int num5 = int.Parse(Console.ReadLine());
                    Console.WriteLine("Ingresa el segundo valor: ");
                    int num6 = int.Parse(Console.ReadLine());
                    int result3 = num5 * num6;
                    Console.WriteLine($"El resultado es: {result3}");
                    break;

                case "d":
                    Console.WriteLine("Seleccionaste division...");
                    Console.WriteLine("Ingresa el primer valor: ");
                    int num7 = int.Parse(Console.ReadLine());
                    Console.WriteLine("Ingresa el segundo valor: ");
                    int num8 = int.Parse(Console.ReadLine());
                    int result4 = num7 / num8;
                    Console.WriteLine($"El resultado es: {result4}");
                    break;

            default:
                    Console.WriteLine("\nSeleccione una opcion correcta...");
                    break;
            }

        }
    }
}

El buen switch, aunque siento que se usa poco en los lenguajes de programacion.

Mi aporte:

using System;
namespace _20_LaSentenciaSwitch
{
    internal class Program
    {
        static void Main()
        {
            /* ***** Switch ***** */
            /* En esta seccion veremos el funcionamiento de la sentencia switch, que en si es una alternativa a el if/else que vimos en la clase pasada.
             * Con un ejemplo practico veremos como se usa. Ejemplo: Calculadora
             */
            Console.WriteLine("Por favor ingrese el primer numero: ");
            int number1 = Convert.ToInt32(Console.ReadLine());
            // Console.WriteLine(number1);

            Console.WriteLine("Por favor ingrese el segundo numero: ");
            int number2 = Convert.ToInt32(Console.ReadLine());
            // Console.WriteLine(number2);

            Console.WriteLine("Seleccione la operacion que desea realizar: ");
            Console.WriteLine("-> 1. Suma(+)");
            Console.WriteLine("-> 2. Resta(-)");
            Console.WriteLine("-> 3. Multiplicacion(*)");
            Console.WriteLine("-> 4. Division(/)");
            int userOperation = Convert.ToInt32(Console.ReadLine());
            // Console.WriteLine(userOperation);

            int resultOperation = 0;

            switch (userOperation)
            {
                case 1:
                    resultOperation = number1 + number2;
                    break;
                case 2:
                    resultOperation = number1 - number2;
                    break;
                case 3:
                    resultOperation = number1 * number2;
                    break;
                case 4:
                    if (number2 != 0)
                        resultOperation = number1 / number2;
                    else
                        Console.WriteLine("You don't divide a number to 0");
                    break;
                default:
                    Console.WriteLine("Operation isn't valid!");
                    break;
            }
            Console.WriteLine($"Result: { resultOperation }");

        }
    }
}

Repasando ando

funciona como cajas de decisiones a diferencia del if que va desordenado por eso se utiliza para algo en especifico

using System;

namespace La_caja_switch
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Elige un super poder: ");
Console.WriteLine(“1.ojos laser”);
Console.WriteLine(“2.volar”);
Console.WriteLine(“3.super fuerza”);
Console.WriteLine(“4.Telequinesis”);

        string caseSwitch = Console.ReadLine();

        switch (caseSwitch)
        {
            case "1":
                Console.WriteLine("Elegiste lanzar rayos de tus ojos");
                break;
            case "2":
        Console.WriteLine("Elegiste poder volar");
                break;
            case "3":
        Console.WriteLine("Elegiste la super fuerza");
                break;
            case "4":
        Console.WriteLine("Elegiste la telequinesis");
                break;
            default:
                Console.WriteLine("Elegiste no tener ningun poder y ser como batman");
                break;
        }
    }
} 

}