1.9 Decisión múltiple: switch

La instrucción if se llama de decisión simple, porque sólo puede elegir entre dos caminos: si el resultado de la condición es verdadero, elige un camino; si es falso, elige el otro camino.

Cuando se desea poder elegir entre múltiples caminos, se debe recurrir a múltiples instrucciones if, o se puede utlizar la instrucción switch, denominada de decisión múltiple.

La instrucción switch analiza una variable y según el resultado de esa variable, selecciona el camino a seguir. Como la cantidad de caminos posibles a seguir debe ser finitas, la variable a analizar debe ser de un tipo discreto (int o char).

Veamos el siguiente ejemplo:



// ejemplo6.cpp: Instrucción switch
//

#include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
int n1,n2,r;
char op;
cout<<"Ingrese dos números:";
cin>>n1>>n2;
cout<<"Ingrese la operación a realizar:";
cin>>op;
switch(op)
{
case '+': r = n1 + n2;
               break;
case '-': r = n1 - n2;
               break;
case '*': r = n1 * n2;
               break;
case '/': if (n2 != 0)
                      {
                             r = n1 / n2;
                      }
               else
                   {
                          r = 0;
                          cout<<"No se puede dividir por cero.";
                   }
               break;
default:  cout<<"Operación inválida.";
}
cout<< "El Resultado es "<<r;


cin>>r;

}


La instrucción switch analiza el valor de la variable op, y elegirá el camino según dicho valor. Si el contenido de la variable es el caracter '+', continúa ejecutando el programa en el primer case. Si el contenido es '-' continúa ejecutando el segundo, y así con las cuatro operaciones matemáticas. La instrucción break al final de cada case hace que se finalice la ejecución del switch y pase a la instrucción siguiente, que muestra el resultado final. Si no se coloca el break al final de un case, se continúan ejecutando las instrucciones del case siguiente. (A veces, eso es lo deseado).
Si el valor ingresado en la variable no coincide con ninguno de los valores especificados en los case, se ejecutan las instrucciones que estén tras la etiqueta default. Esta etiqueta no es obligatoria, pero es muy recomendable colocarla siempre.
El último case de la instrucción (generalmente el default), no necesita de un break, ya que cuando termine no hay nada más dentro del switch, por lo que seguirá con la instrucción siguiente, que es lo mismo que haría si hubiera un break.

El siguiente ejemplo mustra diferentes alternativas de cases con y sin break.



// ejemplo7.cpp: Variantes de la instrucción switch
//

#include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
int r;
cout<<"Ingrese un número:";
cin>>r;
switch(r)
{
case 1: cout<<"Esta instrucción se ejecuta en el caso 1"<<endl;
               break;
case 2: cout<<"Esta instrucción se ejecuta en el caso 2"<<endl;

case 3: cout<<"Esta instrucción se ejecuta en los casos 2 y 3"<<endl;
               break;             
case 4:
case 5: cout<<"Esta instrucción se ejecuta en los casos 4 y 5"<<endl;
               break;
default:  cout<<"Esta instrucción se ejecuta para cualquier caso mayor a 5.";
}


cin>>r;

}



Uno de los usos más comunes de la instrucción switch es para presentar al usuario menúes de opciones, correspondiendo un case a cada opción de menú. 

No hay comentarios:

Publicar un comentario