Está en la página 1de 5

Universidad Técnica de Oruro

Facultad Nacional de Ingeniería


Carrera Ingeniería de Sistemas
Oruro - Bolivia

LABORATORIO Nro. 9
SIS 1110 METODOLOGÍA DE LA PROGRAMACIÓN I

TEMA: ESTRUCTURA ALTERNATIVA MÚLTIPLE POR CASO

1. LOGROS A ACANZAR

 Conocer una alternativa de selección múltiple y aplicarla al diseño de menús


 Aplicar el uso de la estructura a la solución de problemas.

2. FUNDAMENTO TEÓRICO

La instrucción switch() es una instrucción de decisión múltiple, donde el compilador prueba o busca el valor
contenido en una variable contra una lista de constantes de tipo int o tipo char, cuando el computador
encuentra el valor de igualdad entre variable y constante, entonces ejecuta el grupo de instrucciones asociados
a dicha constante, si no encuentra el valor de igualdad entre variable y constante, entonces ejecuta un grupo
de instrucciones asociados a un default, aunque este último es opcional.

El formato de esta instrucción es el siguiente;

switch(var int o char)


{
case const1:
instrucciones;
break;
case const2:
instrucciones;
break;
case const3:
instrucciones;
break;
..................
default:
instrucciones;
}
Notas:

1.- Solo se puede usar como variable de condición una variable entera o variable char.
2.- Las constantes de tipo char, deben encerrarse entre apóstrofes (‘ ').
3.- Si se quiere resolver el problema de mayúsculas o minúsculas en el teclado, se usan dos case, pero con un
solo break;
4.- Si no se usa la sentencia break en un case, se siguen ejecutando las sentencias del siguiente case, hasta
encontrar un break o hasta terminar la estructura.

3. ACTIVIDAD DE CLASE

Ejemplo1.- Leer una fecha representada por dos enteros: mes y año y dar como resultado los días
correspondientes al mes. Tener en cuenta que Febrero puede tener 28 o 29 días si el año es bisiesto. Un año es
bisiesto cuando es múltiplo de 4 pero no de 100 o cuando es múltiplo de 400.

Pseudocódigo:
Inicio
Escribir “ Ingrese mes y año”
Leer mes, anio;

switch(mes)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
UltDia=31;
break:
case 4: case 6: case 9: case 11:
UltDia=30;
break;
case 2: Si ((anio % 4 ==0) && (anio %100!=0)||(anio%400==0))
UltDia=29;
Sino
UltDia=28;
break;
default: escribir “mes no válido”
}

Si(mes >=1 && mes <=12) hacer


Escribir “Total días del mes”, UltDia:
fin

Ejemplo 2.- Evaluar una expresión de 2 enteros de acuerdo al operador que se elija, mostrar el resultado
considerando la posibilidad de que en la división se intente dividir por 0 para lo cual el resultado debe ser
también 0 (aunque matemáticamente es infinito)
Pseudocódigo:

Inicio

Escribir “Mas +“
Escribir “Menos - “
Escribir “Por *“
Escribir “Entre / “

leer operador
leer operando1, operando2
switch(operador)
{
case ‘+’: resultado = operando1 + opèrando2;
break;
case ‘-’: resultado = operando1 - opèrando2;
break;
case ‘*’: resultado = operando 1 * opèrando2;
break;
case ‘/’: Si (operando2!=0)
resultado = operando1/ opèrando2;
sino
resultado = 0
finSi
break;
default: Escribir “Opción equivocada”
}
Escribe resultado

Fin

Ejemplo 3.- Programa en C++ que convierte un número entero a su correspondiente literal (número entre 1-
1000)

int main()
{
int x,unidad,decena,centena;
cout<<"ingrese un numero entre 1-1000"<<endl;
cin>>x;
if((x<1)||(x>1000)) cout<<"INGRESA UN NUMERO DEL 0 AL 1000\n";
else if(x==0)cout<<"CERO";
else if(x==1000)cout<<"MIL";
else
{
unidad=x%10;
decena=(x%100)/10;
centena=x/100;
switch(centena)
{
case 9:cout<<"NOVECIENTOS " ;x=x-900;break;
case 8:cout<<"OCHOCIENTOS " ;x=x-800;break;
case 7:cout<<"SETECIENTOS " ;x=x-700;break;
case 6:cout<<"SEISCIENTOS " ;x=x-600;break;
case 5:cout<<"QUINIENTOS " ;x=x-500;break;
case 4:cout<<"CUATROCIENTOS " ;x=x-400;break;
case 3:cout<<"TRESCIENTOS " ;x=x-300;break;
case 2:cout<<"DOSCIENTOS " ;x=x-200;break;
case 1:
if(x>100)
cout<<"CIENTO " ;
else cout<<"CIEN" ;x=x-100;
break;
}
switch(decena)
{
case 9:if(x>90) cout<<"NOVENTA Y " ;
else cout<<"NOVENTA" ;x=x-90; break;
case 8:if(x>80) cout<<"OCHENTA Y " ;
else cout<<"OCHENTA" ;x=x-80; break;
case 7:if(x>70) cout<<"SETENTA Y " ;
else cout<<"SETENTA" ;x=x-70; break;
case 6:if(x>60) cout<<"SESENTA Y " ;
else cout<<"SESENTA" ;x=x-60; break;
case 5:if(x>50) cout<<"CINCUENTA Y " ;
else cout<<"CINCUENTA" ;x=x-50; break;
case 4:if(x>40) cout<<"CUARENTA Y " ;
else cout<<"CUARENTA" ;x=x-40; break;
case 3:if(x>30) cout<<"TREINTA Y " ;
else cout<<"TREINTA" ;x=x-30; break;
case 2:if(x>20) cout<<"VEINTI " ;
else cout<<"VEINTE" ;x=x-20; break;
case 1: if (x>=16)
{
cout<<"DIECI";
}
else if(x>=10)
{
switch(x)
{
case 15: {cout<<"QUINCE" ; break;}
case 14: {cout<<"CATORCE" ; break;}
case 13: {cout<<"TRECE" ;break; }
case 12: {cout<<"DOCE" ;break; }
case 11: {cout<<"ONCE" ; break;}
case 10: {cout<<"DIEZ" ; break;}
}
}
}
switch(unidad)
{
case 9: {cout<<"NUEVE" ;break; }
case 8: {cout<<"OCHO" ;break; }
case 7: {cout<<"SIETE" ;break; }
case 6: {cout<<"SEIS" ;break; }
case 5: if(decena!=1){cout<<"CINCO" ;break; }
case 4: if(decena!=1){cout<<"CUATRO" ;break; }
case 3: if(decena!=1){cout<<"TRES" ;break; }
case 2: if(decena!=1){cout<<"DOS" ;break; }
case 1: if(decena!=1){cout<<"UNO" ;break; }
}
cout<<endl;
}
return 0;
}

4. PROBLEMAS PROPUESTOS.

a) Hacer correr los ejemplos anteriores y capturar las pantallas de los corridos.
b) Modificar el ejemplo 2 para que en el caso de la división entre enteros, muestre el cociente y el residuo
de la división.
c) Hacer un programa que lea el mes del año en número e imprima en literal. Por ejemplo: si el usuario
introduce 2 que imprima Febrero.

5. CUESTIONARIO

a) ¿Para qué se utiliza la sentencia break?


b) ¿En qué casos no debo escribir la sentencia break en una o varias alternativas case?
c) ¿Se puede utilizar un tipo float o double como selector en la estructura repetitiva switch? ¿Por qué?

También podría gustarte