• 10 hours
  • Easy

Free online content available in this course.

course.header.alt.is_certifying

Got it!

Last updated on 6/12/20

El condicional Switch

Log in or subscribe for free to enjoy all this course has to offer!

 

Anteriormente has visto cómo funciona la sentencia condicional  if  y  else if : Evalúas una o varias condiciones, y ejecutas el código que cumpla con la condición evaluada. El condicional  switch , se parece mucho y puede ser utilizado en lugar del  if  en ciertas ocasiones. Sin embargo, cuando quieres evaluar el valor de una determinada expresión entre un amplio número de posibilidades, se prefiere utilizar el condicional  switch . La razón es que enlazar muchos  if  y  else if  seguidos es difícil de leer y menos eficiente.

El condicional switch

La sintaxis del condicional switch es la siguiente:

switch (expresión) {
    case valor:
        // bloque de código      
        break;
    case valor:
        // bloque de código
        break;
    default:
        // bloque de código
}

Cadacase , se interpreta de la siguiente forma: "si la expresión es igual al valor, ejecuta el bloque de código siguiente". Si un caso es igual a la expresión, una vez que el código del caso se ha ejecutado, se hace uso delbreak . Esto hace que la ejecución salte fuera del código switch para que no se ejecute los casos que vienen a continuación. Eldefaultes como el else de los condicionales if, indica qué hacer si ninguno de los casos anteriores son iguales a la expresión. 

 

 Piensa que "switch" puede traducirse por "cambiar". Si la expresión proporcionada en el switch no coincide con el primer caso o supuesto, cambia al siguiente. Este es el aspecto que tiene un bloque switch en JavaScript:

switch (estacion) {
  
  case "primavera":
    // bloque de código
    break;
    
  case "verano":
    // bloque de código
    break;
    
  case "otoño":
    // bloque de código
    break;
    
  case "invierno":
    // bloque de código
    break;
    
  default:
    // bloque de código si no coincide ningún caso anterior
    
}

Completemos el anterior ejemplo para ver cómo implementar el condicional  switch :

var estacion = prompt("¿Cuál es tu estación del año preferida?");

switch (estacion) {
  
  case "primavera":
    // si la variable estacion contiene la cadena de texto "primavera"
    // se ejecutará este bloque de código
    console.log('la primavera');
    break;
    
  case "verano":
    // si la variable estacion contiene la cadena de texto "verano"
    // se ejecutará este bloque de código
    console.log('el verano');
    break;
    
  case "otoño":
    // si la variable estacion contiene la cadena de texto "otoño"
    // se ejecutará este bloque de código
    console.log('el otoño');
    break;
    
  case "invierno":
    // si la variable estacion contiene la cadena de texto "invierno"
    // se ejecutará este bloque de código
    console.log('el invierno');
    break;
    
  default:
    // si la variable estacion no contiene ningún nombre válido
    // se ejecutará este bloque de código
    console.log('no es una estación del año');
    
}

Analicemos los siguientes elementos de la sentencia  switch :

  • La expresión a evaluar: se pasa entre paréntesis después de la palabra clave  switch . En este caso hacemos uso de la variable  estacion que guarda la información introducida por el usuario. 

  • El caso o supuesto: la sentencia  case evalúa la condición para verificar si el supuesto se corresponde con la expresión evaluada por el  switch . Si no coincide, salta al siguiente supuesto. Por ejemplo,  estacion == "otoño" .

  • La palabra reservada  break : La mayoría de las veces, una vez que un supuesto coincide con la expresión proporcionada por el switch, quieres que sólo se ejecute el bloque de código dentro de ese supuesto. Para ello se hace uso del break. Esta sentencia le indica a JavaScript que salga del código switch en ese punto. La ejecución continuaría en la siguiente línea de código debajo del switch.

  • La sentencia  default : es el bloque de código que se ejecutará si el resto de supuestos no coinciden. No es obligatorio añadir un default, si no hay ninguna coincidencia, entonces no se ejecutará ningún bloque del switch.

 

Qué ocurre si no utilizamos break

Si retiramos la sentencia  break de cada caso, obtendremos lo que se llama "falsos positivos". Se ejecutará todo el código debajo del primer caso coincidente, sin importar si los siguientes supuestos no coinciden con la expresión del switch.

En el siguiente ejemplo, he eliminado todos los  break para que puedas ver el resultado.

var estacion = prompt("¿Cuál es tu estación del año preferida?");

switch (estacion) {
  
  case "primavera":
    console.log('la primavera');
    
  case "verano":
    console.log('el verano');
    
  case "otoño":
    console.log('el otoño');
    
  case "invierno":
    console.log('el invierno');
    
  default:
    console.log('no es una estación del año');
    
}

Copia el código en sublime o en la consola y prueba introducir diferentes valores para la variable  estacion .

Introducimos la estación
Introducimos la estación

Introduzco el valor "verano", y al no encontrar ningún  break , todo el código después del caso coincidente se ejecuta.

 

Resultado
Resultado con falsos positivos

 

 

Practica tú mismo

Desarrolla algunos programas en los que se utilice un condicional switch para elegir entre diferentes opciones.

Día siguiente

Escribe un programa que pida al usuario un día de la semana y que muestre por consola el día siguiente. Si se introduce un valor que no corresponda a un día de la semana, se le mostrará un mensaje al usuario.

El usuario ha introducido el martes
El usuario ha introducido el martes

 

Número de días del mes

Escribe un programa que pida al usuario el número del mes (un número entre 1 y 12) y que muestre el número de días que tiene ese mes. No tendremos en cuenta los años bisiestos. Si se introduce un número mayo que 12 o menor que 1, se mostrará un mensaje indicando al usuario que el mes elegido es incorrecto. 

 

Solución de los ejercicios

Intenta primero resolver los ejercicios propuestos por ti mismo. Si ves que te bloqueas, suele venir bien cambiar de actividad y volver a intentarlo más adelante. Si no lo consigues, puedes consultar las soluciones aquí

 

 

 

Example of certificate of achievement
Example of certificate of achievement