El elemento Switch nos permite evaluar una variable y realizar diferentes cosas según el resultado de la evaluación. Es parecido a usar múltiples IF de manera secuencial, aunque se podría decir que con Switch puedes lograr un código más ordenado. Entonces… ¿cuándo usar switch o if? Depende de ti como desarrollador usar lo que creas más conveniente dentro de tu programa, ya sabes que siempre debes tener en cuenta que tu código sea entendible. ¡No serás el único que lo va a modificar!
Personalmente, solo suelo usar switch cuando tengo que evaluar la respuesta de un servicio (esto es algo que aprenderemos mucho más adelante), y mostrar un mensaje según el código que retornen. O cuando me piden mostrar un mensaje personalizado según la acción que haya realizado el usuario en nuestro programa.
Ahora vamos a ver como es la sintaxis dentro de C# para empezar a usarlo.
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);
En el ejemplo anterior, lo que estamos haciendo es evaluar la variable «opt» (dentro de switch), la cual es numérica (también podemos evaluar variables tipo texto, booleanos y caracteres),y luego definimos los diferentes resultado con case. En ese caso, estamos indicando que cuando el número sea uno (case 1), vamos a guardar en la variable number la palabra «One». En el caso que la variable sea dos (case 2), vamos a guardar en la variable number la palabrea «Two». Por último, tenemos un comodín llamado «Default«, este se usa cuando queremos hacer algo luego que la evaluación no ha caído en ninguna condición previamente programada. En nuestro ejemplo, si la variable opt no es ni uno ni dos, irá a «default» y guardará en la variable number la palabra «Error».
Por último, debemos tener en cuenta la palabra clave «break» el cual se usa para indicar que el «case» ya ha terminado y se puede continuar con el siguiente. Es obligatorio usarlo, o sino, el sistema lo marcará como error.
Y eso es todo, no hay mucho más que explicar de Switch, ahora vamos a resolver algunos ejercicios para terminar de entender esta condicional.
Ejercicio 1. Diseñe una calculadora que permita sumar, restar, multiplicar, dividir y elevar a la potencia dos números. Recuerda que no puedes dividir entre 0.
using System;
namespace switch1
{
class Program
{
static void Main(string[] args)
{
// Declaramos nuestras variables
int option;
double numberOne;
double numberTwo;
double result;
string message;
// Dibujamos el menú para que el usuario pueda ver que opciones tiene.
Console.WriteLine("***** CALCULADORA *****");
Console.WriteLine("1. Sumar.");
Console.WriteLine("2. Restar.");
Console.WriteLine("3. Multiplicar.");
Console.WriteLine("4. Dividir.");
Console.WriteLine("5. Elevar a la potencia.");
Console.Write("Seleccione una opción (1 - 5): ");
// Guardamos la variable
option = int.Parse(Console.ReadLine());
// Ahora pedimos los dos números.
Console.Write("Ingrese el primer número: ");
numberOne = double.Parse(Console.ReadLine());
Console.Write("Ingrese el segundo número: ");
numberTwo = double.Parse(Console.ReadLine());
// Evaluamos la opción elegida y retornamos los resultados.
switch(option)
{
case 1:
result = numberOne + numberTwo;
message = "El resultado de la suma de " + numberOne.ToString() + " y " + numberTwo.ToString() + " es: " + result.ToString();
break;
case 2:
result = numberOne - numberTwo;
message = "El resultado de la resta de " + numberOne.ToString() + " y " + numberTwo.ToString() + " es: " + result.ToString();
break;
case 3:
result = numberOne * numberTwo;
message = "El resultado de la multiplicación de " + numberOne.ToString() + " y " + numberTwo.ToString() + " es: " + result.ToString();
break;
case 4 when numberTwo > 0:
// Con when, podemos realizar validaciones adicionales, en este caso, validamos que el segundo número sea mayor a 0, sino se cae la división.
result = numberOne / numberTwo;
message = "El resultado de la división de " + numberOne.ToString() + " y " + numberTwo.ToString() + " es: " + result.ToString();
break;
case 5:
result = Math.Pow(numberOne, numberTwo);
message = "El resultado de elevar " + numberOne.ToString() + " a la potencia de " + numberTwo.ToString() + " es: " + result.ToString();
break;
default:
result = 0;
message = "Seleccione una opción correcta.";
break;
}
// Imprimimos el mensaje.
Console.WriteLine(message);
}
}
}
Guardamos nuestro código, ejecutamos y probamos para ver si funciona correctamente.
¡Vamos a resolver otro ejercicio!
Ejercicio 2. Cree un programa que permita ingresar un edad y te diga que tipo de persona eres, considerar los siguientes rangos. Validar que la edad sea mayor o igual a 0.
- De 0 a 3 años, recién nacido.
- De 4 a 9 años, infante.
- De 10 a 12 años, puberto.
- De 13 a 19 años, adolescente.
- de 20 a 29 años, joven.
- de 30 a 39 años, adulto.
- de 50 a 59 años, adulto mayor.
- de 60 a más, anciano.
Nota: Para que switch funcione correctamente, no puede haber dos case con el mismo resultado. Si tu pones case > 60 y luego case > 80, y vas a evaluar el número 85, tu programa se va a caer porque el resultado coincide con dos de tus case (85 es mayor que 60 y 80). Siempre tienes que programar tus case pensando que los resultados son únicos. De todas formas, el sistema no te dejará compilar si no lo haces bien.
using System;
namespace switch2
{
class Program
{
static void Main(string[] args)
{
// Declaramos nuestras variables.
int years;
string type;
// Solicitamos la información al usuario.
Console.Write("Ingrese su edad: ");
years = int.Parse(Console.ReadLine());
// Evaluamos la edad
switch(years)
{
case >= 60:
type = "anciano";
break;
case >= 50:
type = "adulto mayor";
break;
case >= 30:
type = "adulto";
break;
case >= 20:
type = "joven";
break;
case >= 13:
type = "adolescente";
break;
case >= 10:
type = "puberto";
break;
case >= 4:
type = "infante";
break;
case >= 0:
type = "recién nacido";
break;
default:
type = "ingrese una edad correcta";
break;
}
Console.WriteLine("Usted es: " + type);
}
}
}
Probemos nuestro programa.
¡Un ejercicio más para que quede claro!
Ejercicio 3. Cree un programa que permita ingresar una vocal y te devuelva una palabra que empiece por esa vocal.
using System;
namespace switch3
{
class Program
{
static void Main(string[] args)
{
// Declaramos nuestras variables
char vocal;
string word;
// Solicitamos al usuario la información
Console.Write("Ingrese una vocal: ");
vocal = char.Parse(Console.ReadLine());
// Recuerda, un char es una letra, vocal o signo que se representa con comillas simples
// Ejemplo: 'A', '+', 'd'
// Un texto se representa con comillas dobles
// Ejemplo: "Hola", "Amarillo", "Carro rojo".
// Evaluamos el char ingresado.
// Convertimos a mayúscula para hacer la validación más simple.
switch(char.ToUpper(vocal))
{
case 'A':
word = "Avión";
break;
case 'E':
word = "Elefante";
break;
case 'I':
word = "Iglesia";
break;
case 'O':
word = "Octubre";
break;
case 'U':
word = "Universidad";
break;
default:
word = "Ingrese una vocal válida.";
break;
}
Console.WriteLine("Palabra con la vocal ingresada: " + word);
}
}
}
Probemos nuestro programa.
Espero que con todos esos ejercicios haya quedado claro, ¡ahora te toca a ti!
Ejercicio 4. Cree un programa que permita ingresar una de las estaciones del año y te devuelva el rango de fechas de su duración (de tu país). Validar que ingrese una estación válida.
Ejercicio 5. Cree un programa que te permita ingresar un número en romanos y te devuelva su valor en números enteros. Solo considerara del 1 al 20.
Ejercicio 6. Crea un programa que te permita ingresar un número de teléfono y te devuelva que tipo de teléfono es, según las siguientes condiciones.
- Si tiene 7 dígitos, es fijo local.
- Si tiene 9 dígitos es móvil.
- Si tiene 9 dígitos y empieza por 99 es móvil – movistar.
- Si tiene 9 dígitos y empieza por 98 es móvil – claro.
- Si tiene más de 9 dígitos es un número internacional.
Espero que el contenido de esta clase te haya servido de mucho, y si aún tienes dudas, o algo no está claro, déjanos tu comentario para tenerlo en cuenta y explayarnos un poco más (o corregir) en caso sea necesario.
Nos sería de mucha ayuda que compartas el contenido si te ha gustado y te invitamos a seguirnos en nuestras redes sociales de Clase13, estamos en Facebook, Instagram y Twitter como @Clase13lat, de esa manera te enterarás de las últimas novedades de manera rápida. También te invito a seguirme en Instagram como @rodolfopenia donde estaré subiendo contenido adicional para complementar la clase.