FACULTAD DE INGENIERÍA Y NEGOCIOS EAP INGENIERÍAS Curso: Algoritmos Semana 6: ESTRUCTURAS CONDICIONALES MÚLTIPLES Estructura de Selección Múltiple o en Cascada si-sino-si • La estructura de selección múltiple o en cascada esta formada por varias estructuras de selección doble SI-SINO puestas una a continuación de otra de forma que a un SISINO le sigue otro SI-SINO. • Se utiliza cuando hay múltiples condiciones para evaluar Estructura de Selección Múltiple o en Cascada La instrucción de selección Anidada permite expresar situaciones donde hay más de una condición que se debe tomar en cuenta. Una de las formas de expresarlo es: SI (condición1) ENTONCES Acciones 1 SINO SI (condición2) ENTONCES Acciones2 SINO ... Fin-Si Ejemplo de Instrucción de Selección Anidadas - 1 Enunciado del Problema Diseñe un algoritmo que dado dos números A y B, determine si A es mayor, igual o menor a B. Algoritmo Datos de Entrada: A y B Datos de Salida: Mensaje indicando si A es mayor, igual o menor a B. Proceso: Leer A y B Comparar A y B Si (A > B) entonces se escribe el mensaje “A es mayor que B” . Si la condición es falsa (A<=B) preguntar si (A = B) Si ésta es verdadera se escribe el mensaje “A es igual a B” y si es falsa, por defecto se escribe el mensaje “A es menor que B” Ejemplo de Instrucción de Selección Anidadas - 1 Problema : Dado dos números A y B, determina si A es mayor, igual o menor a B. Pseudocódigo Inicio Entero: A, B Leer A y B Si ( A > B ) entonces Escribir “A es mayor que B“ sino Si ( A = B ) entonces Escribir “A es igual a B“ sino Escribir “A es menor que B“ Fin-Si Fin- Si Fin algoritmo Ejemplo de Instrucción de Selección Anidadas - 1 Problema : Dado dos números A y B, determina si A es mayor, igual o menor a B. Diagrama de Flujo Inicio Entero: A, B Leer A, B verdadero falso A>B Escribir “A es mayor que B” verdadero falso A=B Escribir “A es igual a B” Escribir “A es menor que B” Fin Ejemplo de Instrucción de Selección Anidadas - 2 /*Crear un menú áreas para hallar el área de un circulo, rectángulo y cuadrado*/ programa areas const pi=3.1416 var opcion,radio,base,altura,lado,area:numerico inicio cls() imprimir("Areas: \n1.-Circulo\n2.-Rectangulo\n3.-Cuadrado") imprimir("\nSeleccione Opcion(1 o 2 o 3): ") leer(opcion) si (opcion==1) { imprimir("Ingrese radio: ") leer(radio) area=pi*radio^2 imprimir("Area circulo: ",area) Continua 2 sino si (opcion==2) imprimir("Ingrese base: ") leer(base) imprimir("Ingrese altura: ") leer(altura) area=base*altura imprimir("Area Rectangulo: ",area) sino si (opcion==3) imprimir("Ingrese lado: ") leer(lado) area=lado^2 imprimir("Area Cuadrado: ",area) sino imprimir("Opción incorrecta") } fin Ejemplo 3 /*Crear algoritmo que ingrese nombre, curso y nota de un alumno, determine si es: mal alumno si nota entre 0 y 10, regular alumno nota entre 11 y 14, buen alumno nota entre 15 y 17, excelente alumno nota entre 18 y 20 sino mostrar nota incorrecta*/ programa notas var nombre,curso:cadena nota:numerico inicio cls() imprimir("Ingrese Nombre: ") leer(nombre) imprimir("Ingrese Curso: ") leer(curso) imprimir("Ingrese Nota: ") leer(nota) Continua 3 si (nota>=0 and nota<=10) { imprimir(nombre," es Mal alumno") sino si (nota>=11 and nota<=14) imprimir(nombre, " es regular alumno") sino si (nota>=15 and nota<=17) imprimir(nombre, " es buen alumno") sino si (nota>=18 and nota<=20) imprimir(nombre, " es excelente alumno") sino imprimir("Nota incorrecta") } fin Ejemplo 4 /*Generar un numero al azar entre 1 y 100, determinar en que rango esta, si esta entre 1 y 25 es rango1, 26 y 50 es rango2, 51 a 75 es rango 3 sino es rango 4*/ programa azarnumero var num:numerico inicio cls() num=random(100)+1 imprimir("Numero: ",num,"\n") si (num>=1 and num<=25) { imprimir(num, " esta en rango 1 entre 1 y 25") sino si (num>=26 and num<=50) imprimir(num, " esta en rango 2 entre 26 y 50") sino si (num>=51 and num<=75) imprimir(num, " esta en rango 3 entre 51 y 75") sino imprimir(num, " esta en rango 4 entre 76 y 100") } fin Ejemplo 5 /*Crear algoritmo lotería centavo que el usuario ingrese un numero y su apuesta para adivinar un numero entre 1 y 20 , si adivina gana 100 veces su apuesta sino pierde la apuesta*/ programa loteria1 var num,apuesta,azar,ganancia:numerico inicio cls() imprimir("Ingrese su numero ganador: ") leer(num) imprimir("Ingrese su apuesta: ") leer(apuesta) azar=random(20)+1 imprimir("Numero Ganador: ",azar,"\n") si (num==azar) { ganancia=apuesta*100 imprimir("Suertudo ganaste: ",ganancia) sino imprimir("Piña perdiste: ", apuesta) } fin Ejemplo 6 /*Lanzar 2 dados y hallar la suma, si suma es 2,3 o 12 mostrar perdiste piña, si suma es 7 0 11 mostrar ganaste suertudo sino mostrar no pasa nada juega de nuevo*/ programa juega_dados var dado1,dado2,suma:numerico inicio cls() dado1=random(6)+1 dado2=random(6)+1 suma=dado1+dado2 imprimir("\nDado 1: ",dado1) imprimir("\nDado 2: ",dado2) imprimir("\nSuma: ",suma) si (suma==2 or suma==3 or suma==12) { imprimir("\nPerdiste Piña") sino si (suma==7 or suma==11) imprimir("\nGanaste suertudo") sino imprimir("\nNo pasa nada juega de nuevo") } fin Ejemplo7 /*crear algoritmo que ingrese nombre y horas trabajadas de un obrero, hallar su salario, se sabe que: Trabaja 48 horas a la semana, pago por hora es 20 soles, Si trabaja mas horas se paga el 25% mas por pago hora extra*/ programa salario_obrero var salario, horas,hex, ph,phex: numerico nombre: cadena inicio cls() imprimir ("\n Ingrese su nombre: ") leer (nombre) imprimir ("\n Ingrese sus horas trabajadas: ") leer(horas) ph=20 Continua 7 si (horas<=48) { salario=horas*ph imprimir("\n ",nombre, " Su salario es: ", salario) sino hex=horas-48 phex=hex*(ph*1.25) salario=48*20+phex imprimir("\n Su salario de horas normales es de: ", 48*20) imprimir("\n La cantidad de horas extras es de: ", hex) imprimir("\n El pago correspondiente será de: ", phex) imprimir("\n ",nombre, " Su salario total es de: ", salario) } fin ¡Muchas gracias!