Está en la página 1de 4

U.T.O. – F.N.I. ING. DE SISTEMAS – ING.

INFORMÁTICA

SIS – 1100 METODOLOGÍA DE LA PROGRAMACIÓN I


GUÍA DE LABORATORIO # 10

TEMA: ESTRUCTURA ALTERNATIVA MÚLTIPLE POR CASO

OBJETIVOS.
 Conocer una alternativa de selección múltiple y combinando con bucles repetitivos aplicarla al
diseño de menús
 Aplicar el uso de la estructura a la solución de problemas.

BASE TEÓRICA.

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:
instrucción(es);
break;
case const2:
instrucción(es);
break;
case const3:
instrucción(es);
break;
..................
default: instrucción(es);
}

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 (‘ ').

Página 1
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.

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
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)
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 = ‘/’
Escribir Salir = ‘.’ “
Hacer
{
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;
Página 2
sino
resultado = 0
finSi
break;
default: Escribir “Opción equivocada”
}
Escribe resultado
} mientras ( operador!=’.’)
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 0-1000"<<endl;
cin>>x;
if((x<0)||(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 " ;
Página 3
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;
}

PROBLEMAS PROPUESTOS.

1- Ejecutar el ejemplo 3
2.- 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.
CUESTIONARIO:

1.- ¿Para qué se utiliza la sentencia break?


2.- ¿Si la expresión lógica en la estructura repetitiva do…while( ); es falsa, cuántas veces se repite el
ciclo?
3.- ¿En qué casos no debo escribir la sentencia break en una o varias alternativas case?
4.- ¿Se puede utilizar un tipo float o double como selector en la estructura repetitiva switch?

Página 4

También podría gustarte