Vous êtes sur la page 1sur 9

ALGORITMOS Y PROGRAMACIN

ING. JULIAN GIRALDO

ESTRUCTURAS DE DECISIN
(CLASE 6)

1
Desventajas de la estructura if
Aunque la sentencia if de C++ es muy potente, en ocasiones su escritura
puede resultar tediosa, sobre todo en casos en los que el programa presenta
varias elecciones despus de chequear una expresin: seleccin mltiple o
multialternativa.

En situaciones donde el valor de una expresin determina que sentencias sern


ejecutadas es mejor utilizar una sentencia Smith en lugar de una if.

Algoritmos y programacin Ing. Julin Giraldo


2
Estructura switch
Cuando se ejecuta una sentencia switch, se escoge una de varias alternativas. Para
determinar cual de los casos se debe ejecutar se utiliza lo que se conoce como la
expresin de control de la sentencia, que se escribe entre parntesis. La expresin de
control escrita entre parntesis deber siempre ser un valor booleano (FALSE o TRUE),
un valor entero o un carcter. Durante la ejecucin de la sentencia switch, se analiza la
expresin de control para obtener su valor.

Cada una de las alternativas de la seleccin mltiple se representa por el identificador


case seguido de un valor constante (entero, carcter o booleano) y dos puntos. Se
compara el valor de la expresin de control con los valores constantes de los casos de la
sentencia. Cuando encuentra el caso cuya constante sea igual al valor de la expresin de
control, se ejecutan las sentencias correspondientes a dicho caso (hasta encontrar una
sentencia break). Si por alguna razn no se encuentra ninguna constante igual a la
expresin de control, entonces se ejecutan las sentencias que corresponden al caso
default, que generalmente se escribe al final de la sentencia switch (si ste caso no
existiera, entonces no se ejecutara ninguna de las alternativas).

Algoritmos y programacin Ing. Julin Giraldo


3
Sintaxis de la estructura de control switch
switch (selector)
{
case opcion 1:
{
<bloque de instrucciones>
}break;
case opcion 2:
{
<bloque de instrucciones>
}break;
.
.
.
case opcion n:
{
<bloque de instrucciones>
}break;
default:
{
<bloque de instrucciones>
}
}

Algoritmos y programacin Ing. Julin Giraldo


4
Ejemplo 1
switch (selector) En este ejemplo, si el selector se evala y
{ su valor es 1 o 2, se ejecuta, en ambos
case 1: casos, la instruccin printf (\Salida para
case 2: los casos 1 y 2");
printf("Salida para los casos 1 y 2\n");
break; En este caso particular puede apreciarse
case 3: la utilidad de break a la hora de detener
printf("Salida para el caso 3\n"); el flujo del programa. La sentencia switch
break; puede incluir la opcin default para
default: establecer la secuencia de sentencias a
printf("Salida para los restantes ejecutar en el caso de que ninguna
casos\n"); etiqueta concuerde con el valor de la
} expresin case.

El tipo de esta expresin case y el de las


etiquetas tiene que ser el mismo.

Algoritmos y programacin Ing. Julin Giraldo


5
Ejemplo 2 (if vs switch)
if (operador == +) switch (operador)
resultado = A + B; {
else if (operador == -) case + :
resultado = A - B; resultado = A + B;
else if (operador == *) break;
resultado = A * B; case - :
else if (operador == /) resultado = A - B;
resultado = A / B; break;
else case * :
cout << "Operador invalido"; resultado = A * B;
Jose break;
case / :
resultado = A / B;
break;
default :
cout << "Operador invalido";
}

Algoritmos y programacin Ing. Julin Giraldo


6
Break y default
La palabra reservada break permite que el flujo de programa se detenga justo
despus de la ejecucin de la sentencia anterior a ese break, impidiendo que
se ejecuten las sentencias correspondientes a las siguientes alternativas del
switch. Por tanto, debemos obligatoriamente acabar cada bloque de sentencias
correspondiente a cada alternativa con una sentencia break.

Por otro lado, la alternativa default es opcional y engloba un conjunto de


sentencias (que puede ser vaco, contener una sola sentencia o varias) que se
ejecutan en caso de que ninguna de las alternativas del switch tenga un valor
coincidente con el resultado de evaluar la expresin del selector.

Algoritmos y programacin Ing. Julin Giraldo


7
Ejemplo 3
#include <iostream.h> case 5:
#include<stdlib.h> cout<<Viernes;
int main() break;
{ case 6:
int dia; cout<<Sabado;
cout<<Dame un numero entero entre 1 y 7 \n; break;
cin>>dia; case 7:
cout<<\nEl dia correspondiente es ; cout<<Domingo;
switch(dia) break;
{ default:
case 1: cout<<Error en el numero;
cout<<Lunes; }
break; cout<<\n;
case 2: return 0;
cout<<Martes; system(PAUSE);
break; }
case 3:
cout<<Miercoles;
break;
case 4:
cout<<Jueves;
break;

Algoritmos y programacin Ing. Julin Giraldo


8
Taller sentencias if y switch
Estos ejercicios deben resolverse con sentencia if
1. Disee un programa en C++ que pida al usuario tres nmeros y los ordene en
pantalla de menor a mayor
2. Disee un programa que permita el ingreso de una letra cualquiera e informe si la
letra ingresada es una vocal
3. Disee un programa que permita el ingreso de tres nmeros e informe si el tercer
nmero ingresado es la suma de los dos primeros

Estos ejercicios deben resolverse con sentencia switch


1. Disee un programa que pida un nmero del 1 al 12 y muestre el mes equivalente
segn dicho nmero
2. Reescriba el problema #2 (para sentencia if) pero utilizando como estructura de
seleccin la sentencia switch
3. Cree un programa con men para las cuatro operaciones bsicas. El programa debe
mostrar en pantalla las cuatro opciones de operacin (suma, resta, multiplicacin y
divisin), identificadas con un nmero. Luego debe solicitar al usuario que escoja la
operacin ingresando el nmero correspondiente. Cuando el usuario escoja la
operacin, cada case debe encargarse de solicitar los datos, realizar la operacin y
mostrar el resultado en pantalla

Algoritmos y programacin Ing. Julin Giraldo


9

Vous aimerez peut-être aussi