Este documento presenta dos algoritmos que utilizan estructuras condicionales para la selección múltiple y simple. El primer algoritmo calcula el sueldo de un empleado incluyendo un incentivo del 5% si trabajó más de 40 horas usando IF-THEN. El segundo algoritmo lee un número del 1 al 7 e imprime el día de la semana correspondiente usando SWITCH.
1. Diseño de algoritmos OO usando la selección simple[IF THEN] En este punto se aplica la selección simple (IF THEN). Ejemplo: Siguiendo con el mismo problema de calcular el sueldo de un empleado, ahora se otorga de un incentivo de 5% si el empleado trabajó más de 40 horas, esto se agrega, independientemente del cálculo del sueldo. A continuación se presenta el algoritmo de la solución.
3. Algoritmo CALCULAR SUELDO CON INCENTIVO DE UN EMPLEADO Clase Empleado Declaraciones Datos nombreEmp: Cadena horasTrab: Entero cuotaHora: Real Sueldo: Real Método establecerNombreEmp(nom: Cadena) a. nombreEmp= nom Fin Método establecerNombreEmp 3. Método establecerHorasTrab(horasTr: Entero) a. horasTrab= horasTr Fin Método establecerHorasTrab 4. Método establecerCuotaHora(cuotaHr: Real) a. cuotaHora=CuotaHr Fin Método establecerCuotaHora
4. 5. Método calcularSueldo() a. sueldo = horasTrab * cuotaHora b. IF horasTrab > 40 THEN 1. sueldo = sueldo + (sueldo * 0.05) ENDIF Fin del Método calcularSueldo 6. Método obtenerNombreEmp(): Cadena return nombreEmp Fin Método ObtenerNombreEmp 7. Método obtenerSueldo():Real return sueldo Fin Método obtenerSueldo Fin Clase Empleado
5. Clase Ejecutaempleado Método principal a. Declaraciones Variables nomEmp: Cadena hrsTra: Entero cuoHr: Real b. Declarar, crear e iniciar objeto Empleado objEmpleado= new Empleado() c. solicitar Nombre, número de horas trabajadas y cuota por hora. d. Leer nomEmp, hrsTra, cuoHr e. Establecer objEmpleado. establecerNombreEmp(nomEmp) objEmpleado. establecerHorasTrab(hrsTra) objEmpleado. establecerCuotaHora(cuoHr) f. Calcular objEmpleado. CalcularSueldo() g. Imprimir objEmpleado. ObtenerNombreEmp() h. Fin Método principal Fin clase Ejecutaempleado Fin
6. Diseño de algoritmos OO usando la selección múltiple(SWITCH) En este punto se aplica la selección múltiple (SWITCH). Ejemplo: Elaborar un algoritmo que lea el numero de día (un valor entre 1 y 7);e imprima domingo si es 1, lunes si es 2,….,sábado si es 7. A continuación se presenta el algoritmo de la solución.
8. Algoritmo DiceDia Clase DiceDia 1. Declaraciones Datos numDia: Entero nombreDia: Cadena 2. Método establecerNumDia (num: Entero) a. numDia = num Fin establecerNumDia 3. Método calcularNombreDia() a. SWITCH numDia 1: nombreDia = “DOMINGO” 2: nombreDia = “LUNES” 3: nombreDia = “MARTES 4: nombreDia = “MIERCOLES” 5: nombreDia = “JUEVES 6: nombreDia = “VIERNES” 7: nombreDia = “SABADO” b. DEFAULT 1. nombreDia = “No esta en el rango de 1 a 7” ENDSWITCH Fin Método calcularNombreDia
9. 4. Método obtenerNombreDia(): cadena a. return nombreDia Fin método obtenerNombreDia Fin clase DiceDia Clase EjecutaDiceDia Método principal a. Declaraciones Variables nDia: Entero b. Declarar, crear e iniciar objeto DiceDia objDia = new DiceDia() c. Solicitar numero de día. d. Leer nDia e. Establecer objDia. establecerNumDia(nDia) f. Calcular objDia. calcularNombreDia() g. Imprimir objDia. obtenerNombreDia() Fin Método Principal Fin Clase EjecutaDiceDia Fin
10.
11. Tarea para el 27 de abril de 2011 Aparte del ejercicio 2, de la diapositiva anterior, realizar los siguientes ejercicios: a) Dados tres números enteros diferentes, determinar cuál es el mayor, utilizando la sentencia IF THEN ELSE b) Diseñar un algoritmo OO que tome el peso en kilos de una cantidad de ropa a lavar en una lavadora y nos devuelva el nivel de agua dependiendo del peso. Se sabe que con más de 30 kilos la lavadora no funcionara ya que es demasiado peso. Si la ropa pesa 22 ó más kilos, el nivel será de máximo; si pesa 15 ó más nivel será de alto; si pesa 8 ó más será un nivel medio o de lo contrario el nivel será mínimo. Utilizar la sentencia IF THEN ELSE