Dev-C++, clase12 – evaluando casos

Hola a todos/as,

Ya he explicado los otros dos tipos de instrucciones selectivas que son:

A) Selectiva simple ( if )

B) Selectiva doble ( if – else )

Ahora voy a dedicar ésta entrada para hablar sobre los «casos ( case )» que vendrian a ser nuestra ultima selectiva ( multiple ).

En ocaciones un algoritmo o un programa tendrá una serie de decisiones en las que se tendrá que evaluar una variable, y cada evalucaión

se la hará de manera separada, pues como hemos inidicado pueden darse «multiples casos«.

Para ello vamos a usar la instrucción selectiva multiple: Switch.

¿ Para qué nos sirve ?

Pues la instrucción selectiva multiple switch, puede manipular una serie de «casos» ( case ) y tiene un caso opcional que es el de «por defecto» ( default )

Bien, ahora vamos a ver su sintaxis; como sabemos toda instrucción\funcion\prototipo\.. tiene tu sintaxis, si se omite algo en la sintaxis el compilador al momento de analizar si el programa está correcto para ejecutarlo, no podrá hacerlo y desplegará un mensaje de error en ésa linea.

Bien la forma de escribir la instruccion selectiva multiple Switch es la siguiente:

1) Cuando evaluamos por numero:

switch ( lo que queramos evaluar, por lo general variables pero pueden ser funciones también.. )

{

case 1 : aqui va lo que deberá pasar en caso de que haya sido 1 ; break ;

case 2 : aqui va lo que deberá pasar en caso de que haya sido 2 ; break ;

case 3 : aqui va lo que deberá pasar en caso de que haya sido 3 ; break ;

}

2) Cuando evaluamos por caracter:

switch ( lo que queramos evaluar, por lo general variables pero pueden ser funciones también.. )

{

case1‘ : aqui va lo que deberá pasar en caso de que haya sido 1 ; break ;

case2‘ : aqui va lo que deberá pasar en caso de que haya sido 2 ; break ;

case3‘ : aqui va lo que deberá pasar en caso de que haya sido 3 ; break ;

}

Bien como podemos ver, la diferencia es que cuando evaluamos por numero, se coloca directamente el numero mientras que cuando evaluamos por caracter se coloca el caracter entre comillas simples. Entonces la variable que se va a evaluar con el switch, importa al momento de hacerlo. Ya saben:

Si van a evaluar por numero: necesitan que la variable sea numerica ( es decir, int / short .. )

Si van a evaluar por caracter: necesitan que la varible sea caracter ( es decir, char )

Y no olvidarse que cuando se evalua a un char, los casos van con comillas simples ( ‘ ‘ ) , como vimos en el ejemplo de arriba.

Nota: «break» es una instrucción de bifurcación, osea que interrumpe el proceso normal de un programa. Por ejemplo en el codigo de arriba, existe un break en el caso 1, ésto hará que si el caso 1 fué verdadero se harán las acciones que estén programadas en él y luego saldrá del switch porque está el break.

Continuemos, como hemos visto arriba, es sencillo usar ésta selectiva multiple pues nosotros decidimos muy claramente que hacer, si ése caso se cumple.

Ahora, recuerdan que arriba mencioné que existia un «caso opcional» que era: default , pues a éste por lo general siempre se lo pone al final

de los casos para que si no encuentra ningun caso; se ejecute él ( osea el default ) y muestre algun mensaje de error ó haga alguna acción que

le hayamos indicado. De ésta manera lo colocariamos:

switch ( lo que evaluamos )

{

case 1 : ….. ; break ;

case 2 : ….. ; break ;

default : ………. ;

}

Nota: default no necesita llevar » break ; » al final, puesto que si llegamos a él significa que no se encontró ninguno de los casos y una vez ejecutado lo que tenia que hacer el caso default, terminará la instrucción ( es decir, saldrá del switch ) .

Ok, ahora tenemos una idea más clara de como es la estructura de ésta instruccion selectiva multiple, ahora vamos a ver un ejemplo claro de como usariamos nosotros el switch – case, para tomar decisiones dependiendo de los casos que se den, vamos a ello:

16.) Hacer un programa que muestre dos opciones:

1) Aire

2) Agua

Y que dependiendo de la opción que se escoja, deberá mostrar un mensaje:

– Para aire, el mensaje: » Aire: las aves «.

– Para agua, el mensaje: » Agua los peces «.

En caso de que el usuario/a, no ingrese ninguna de las opciones mencionadas desplegar un mensaje: » Hasta pronto! «.

Por favor antes de ver ésta entrada recomiendo ver la entrada:

Uso de la aplicacion

Bueno pues, éste es un tipico ejercicio donde vemos con claridad que se deben usar «casos» para sacar mejor partida; ya que conocemos hasta ahora:

Selectiva simple –> para un solo caso, y dado por verdadero.

Selectiva doble –> para cuando son dos casos, verdadero y falso.

Y pues aqui tenemos tres casos:

1) Aire , 2) Agua , x) Hasta pronto!

Entonces, no entra ninguna de las dos selectivas mencionadas 😉

Pero si entra una «selectiva multiple» que como su nombre lo indica trata de multiples casos, para ello usamos el switch.

ATENCION: en las clases anteriores he explicado las lineas y que hace cada una, entonces les sugiero que vean las entradas anteriores para entender las lineas de las que no voy a hacer mucha enfasis.

Las lineas que ya hayamos visto, les colocaré ” *** “  al final para que sepan que ya lo hemos visto con anterioridad ( entiendase como “anterioridad” a la/las clases anteriores ademas de sus correspondientes entradas en la seccion “General” del mapa de sitio ).

#include <iostream.h>
#include <conio.h>

main()
{
short opcion;
cout << » – – Opciones – – « << endl
<< » 1) Aire » << endl
<< » 2) Agua » << endl
<< » Seleccione una opcion: « ;
cin  >> opcion;
switch ( opcion )
{
case 1 : cout << » Aire: las aves «; break;
case 2 : cout << » Agua: los peces «; break;
default : cout << » Hasta pronto! «;
}
getch();
}

– linea 1 – 2: la cabecera y libreria ***

– linea 3: funcion principal ***

– linea 4 – 18: inicio y fin del programa ***

– linea 5: declaramos variables ***

– linea 6 – 9: recurso ” cout ” ***

– linea 10: recurso ” cin ” ***

– linea 11: instruccion selectiva multiple: ” switch ”

Bien como vemos, aqui está la novedad pero como ya he venido explicando más arriba se debe evaluar una variable, en éste caso

estamos evaluando a la variable «opcion» que fué declarada como short, por lo tanto es numerica. Y al ser una evaluacion numerica

¿ que habia dicho ? 😉 , pues que los casos no iban con comillas simples; si no, directamente con los numeros a evaluar.

– linea 12 – 16: inicio y fin del » switch »

– linea 13: evaluando un caso

Pues aqui nos encontramos con que vamos a evaluar el caso 1 , es decir el caso en que el usuario/a ingresó la opcion » 1 «.

Porque habia para escoger » 3 » opciones, Aire – Agua – Nada.

Al escoger » 1 » , es decir la primera opcion pues eso tendrá una consecuencia, la consecuencia será la que nos inidica

el problema. Bien, dice claramente que en caso de que haya sido » 1 » , se deberá mostrar el mensaje: » Aire: las aves «

y eso es lo que hacemos aqui, como pueden ver en la sintaxis:

case 1 : cout << » Aire: las aves «; break;

Traduciondo ésto decimos que:

En caso de que haya sido 1 la opcion, entonces: muestre ésto: » Aire: las aves » y salga del switch.

Y la misma logica la aplicamos, en los demas casos.

– linea 14: evaluando un caso ***

– linea 15: evaluando un caso ***

Como ya dije con anterioridad, el caso default es un caso «especial» al cual podemos acudir cuando queremos evaluar «todo lo demas«.

Es decir, son infinitas opciones que pudo haber ingresado el usuario ( ya que no hemos validado ) y por ello si solo estamos exponiendole

tres casos, habrá quien ponga cualquier otra cosa, menos la que se le pide; entonces como son opciones infinitas que no podemos ponernos

a imaginar que ingresaria un usuario/a » X » , entonces usamos el default, que a todo lo que no esté en los casos expuestos le aplicara una accion

que nosotros decidimos, ya sea mostrar un mensaje de error, o salir del programa como hemos hecho en éste.

– linea 17: pausando el programa ***

Bueno, eso es todo; espero les haya servido. Cualquier duda/comentario/sugerencia la atenderé lo mas pronto posible. Saludos!

Una respuesta

  1. Buenas tardes… me pareció bastante sencillo y fácil de entender. Todo el sitio en realidad está fantástico. Vengo siguiendo todas las clases de C++ desde hace unos días y te felicito de verdad, tenes cualidades de profe =D
    En cualquier case XD tengo una duda:
    Cual es la diferencia entre usar «case» y usar muchos if ??? es solo que no veo la diferencia entre case – default y if – else…
    Gracias 😀 y de nuevo te felicito

Deja un comentario