Control: Selector múltiple

La sentencia If permite una ejecución condicional entre dos posibles caminos en la ejecución de un programa: si la condición era cierta se ejecuta un bloque y si no se ejecuta otro.

Cuando hay más posibilidades debíamos usar múltiples if..else anidados, complicando el código, mira el ejemplo de las notas en la página dedicada al condicional. Y un código claro es importante.

Para esos casos en los que el programa deba tener más de dos alternativas se usa otra sentencia de control, la selección múltiple: switch(condicion) ...case...default. El argumento condición es una expresión que devuelve un valor concreto que se usa para elegir el camino a seguir por el programa

Una aplicación sencilla en este ejemplo: queremos un script que presente un título en un idioma de cuatro posibles.

var idioma="castellano"

switch (idioma) {

      case 'castellano' :

            pagCast();

            break;

      case 'ingles' :

            pagIng();

            break;

      case 'francés' :

            pagFran();

            break;

      case 'alemán' :

            pagAlem();

            break;
      default :

            error ('Idioma no presente');

}

Durante la ejecución se compara la variable idioma con cada uno de los posibles valores y cuando coincidan ejecuta el código correspondiente.

La instrucción break pone fin al bloque y hace que el programa salte a la instrucción siguiente a la sentencia switch(), si se omite el programa continuaría con la siguiente instrucción.

La sección de default es opcional, su finalidad es ejecutar algún código cuando ninguna de las condiciones se cumpla.

Como ves no he usado llaves, aquí no se necesitan: la condición y el break ponen límites al bloque perfectamtne reconocibles.

Esta instrucción solo vale para valores discretos, o sea, una expresión con un número finito de resultados. por ejemplo si quieres aplicar un descuento en función de lo que gasta esta estructura no sirve. No pueden enumerarse los valores posibles de la compra.

Ejemplo

Compara el ejemplo de las notas con esta otra versión.

var nivel, nota;

switch (nota){

    case 1:  case 2:  case 3: case 4:

           nivel = "suspenso";

            break;

    case 5:           

    case 6:

           nivel = "aprobado";

            break;

    case 7:

    case 8:

           nivel = "notable";

            break;

    case 9: case10:

           nivel = "sobresaliente";

           break;

    default:
          nivel = "Nota inválilda"

}         

Es más claro, y oberva como se unen diversos valores que deban dar el mismo resultado