Ejercicios utilizando estructuras selectivas
Lapso 2012_I
17/05/2012 9:55 Profs: Vladimir Camacaro y Erys Piñero 1
Ejercicio 1
Una academia de idiomas ofrece a los estudiantes cursos de inglés, francés e italiano por niveles. El primer nivel de inglés cuesta 700Bs, el primer nivel de francés cuesta 600Bs y el de italiano 550Bs. El costo del segundo nivel de italiano es del 20% mas que el primer nivel, el segundo nivel de francés es de 25% mas, mientras que el costo del segundo nivel de inglés es de un 30% mas por el material de apoyo utilizado. Si se tiene como dato de entrada la cantidad de estudiantes, el idioma y el número que corresponde al nivel y el nombre de la academia. Calcule el monto de los ingresos y calcule el monto del IVA correspondiente.
17/05/2012 9:55
Profs: Vladimir Camacaro y Erys Piñero
2
Análisis del problema
Lista Clasificación Academia ------------- Clase Nombre ------------ Atributo/Academia CalcIngresos --------- Método/Academia CalcIVA -------------- Método/Academia Lista Clasificación Estudiante -------------- Clase Idioma ------------- Atributo/Estudiante NroNivel -------------- Atributo/Estudiante NroEstudiantes-------- Atributo/Estudiante
17/05/2012 9:55
Profs: Vladimir Camacaro y Erys Piñero
3
Análisis del problema
si (Idioma=“inglés”) inicio si ( Nronivel=1) TotIngresos ← NroEstudiantes*700 sino TotIngresos ← NroEstudiantes*(700*1,30) fin sino inicio si (Idioma=“francés”) inicio si ( Nronivel=1) TotIngresos ← NroEstudiantes*600 sino TotIngresos ← NroEstudiantes*(600*1,25) fin sino inicio si (Idioma=“italiano”) inicio si (Nronivel=1) TotIngresos ← NroEstudiantes*550 sino TotIngresos ← NroEstudiantes*(550*1,2) fin sino TotIngresos ← 0 fin fin MontoIVA ← TotIngresos*0,12 17/05/2012 9:55 Profs: Vladimir Camacaro y Erys Piñero 4
Diseño de la estructura de las clases Academia y Estudiantes
17/05/2012 9:55
Profs: Vladimir Camacaro y Erys Piñero
5
Diseño de las clases
Estudiante
alfanumerico Idioma entero NroNivel entero NroEstudiantes AsignarIdioma(alfanumerico ↓ TI ) AsignarNroNivel(entero ↓ Nn) AsignarNroEstudiante(entero ↓ Ne) alfanumerico SacarIdioma() real SacarNroNivel() real SacarNroEstudiante()
Academia
alfanumérico Nombre AsignarNombre(alfanuméricol ↓ Nomb) alfanumerico SacarNombre() real CalcIngresos(Estudiante↓ OEstud) real CalcMontoIva(Estudiante↓ OEstud)
17/05/2012
Introducción a la Computación.
6
// Definición de la estructura de la clase Estudiante clase Estudiante inicio privado: alfanumérico Idioma entero NroNivel entero NroEstudiantes publico: AsignarIdioma(alfanumerico↓TI) AsignarNroNivel(entero↓ Nn) AsignarNroEstudiante(entero ↓Ne) alfanumerico SacarIdioma( ) entero SacarNroNivel( ) entero SacarNroEstudiante( ) fin
17/05/2012 9:55
Profs: Vladimir Camacaro y Erys Piñero
7
//Métodos propios de la clase Estudiante Estudiante AsignarIdioma(alfanumerico ↓ TI) inicio Idioma TI fin Estudiante AsignarNroNivel(entero↓ Nn) inicio NroNivel Nn fin Estudiante AsignarNroEstudiante(entero ↓Ne) inicio NroEstudiantes Ne fin alfanumerico Estudiante SacarIdioma( ) inicio retornar Idioma fin
17/05/2012 9:55
Profs: Vladimir Camacaro y Erys Piñero
8
entero Estudiante SacarNroNivel( ) inicio retornar NroNivel fin entero Estudiante SacarNroEstudiante( ) inicio retonar NroEstudiantes fin
17/05/2012 9:55
Profs: Vladimir Camacaro y Erys Piñero
9
// Definición de la estructura de la clase Academia clase academia inicio privado: alfanumerico Nombre publico: AsignarNombre( alfanumerico ↓ Nomb) alfanumerico SacarNombre( ) real CalcIngresos(Estudiante ↓OEstud) real CalcMontoIva(Estudiante ↓OEstud) fin
17/05/2012 9:55
Profs: Vladimir Camacaro y Erys Piñero
10
//Métodos propios de la clase Academia Academia AsignarNombre( alfanumerico ↓ Nomb) inicio Nombre Nomb fin alfanumerico Academia SacarNombre( ) inicio retornar Nombre fin
17/05/2012 9:55
Profs: Vladimir Camacaro y Erys Piñero
11
real Academia CalcIngresos(Estudiante ↓OEstud) inicio real Totingresos si (OEstud.SacarIdioma( ) = “ingles”) inicio si (OEstud.SacarNroNivel( ) = 1) TotIngresos OEstud.SacarNroEstudiante( )*700 sino TotIngresos OEstud.SacarNroEstudiante( )*(700*1,30) fin sino inicio si (OEstud.SacarIdioma( ) = “francés”) inicio si (OEstud.SacarNroNivel( ) = 1) TotIngresos OEstud.SacarNroEstudiante( )*600 sino TotIngresos OEstud.SacarNroEstudiante( )*(600*1,25) fin sino inicio si (OEstud.SacarIdioma( ) = “italiano”) inicio si (OEstud.SacarNroNivel( ) = 1) TotIngresos OEstud.SacarNroEstudiante( )*550 sino TotIngresos OEstud.SacarNroEstudiante( )*(550*1,2) fin sino TotIngresos 0 retornar Totingresos fin
Declaración de la variable: Totalingresos
fin
Retornar la variable: Totalingresos
17/05/2012 9:55
Profs: Vladimir Camacaro y Erys Piñero
12
real Academia CalcMontoIva(Estudiante ↓OEstud) inicio retornar CalcIngresos(OEstud) *0,12 fin Otra forma de hacer Otra forma: el método
real Academia CalcMontoIva(Estudiante ↓OEstud) inicio real MontoIVA MontoIVA ← CalcIngresos(OEstud) *0,12 retornar MontoIVA fin
17/05/2012 9:55
Profs: Vladimir Camacaro y Erys Piñero
13
// Programa de aplicación principal( ) inicio Estudiante OEstud //Creación del objeto. Academia OAcademia //Creación del objeto. InterfazEntrada(OEstud,OAcademia) InterfazSalida(OEstud,OAcademia) fin
17/05/2012 9:55
Profs: Vladimir Camacaro y Erys Piñero
14
InterfazEntrada(Estudiante ↑ OEstud, Academia ↑ OAcademia) inicio entero Ne entero Nn alfanumerico nomb alfanumerico TI //Definición de Variables escribir “Introduzca el nombre de la Academia” leer nomb OAcademia.AsignarNombre(nomb) escribir “Introduzca la cantidad de estudiantes” leer Ne OEstudiante.AsignarNroEstudiante(Ne) escribir “Introduzca el idioma en curso” leer TI OEstudiante.AsignarIdioma(TI) Escribir “Introduzca el nivel del curso” leer Nn OEstudiante.AsignarNroNivel(Nn) fin
17/05/2012 9:55
Profs: Vladimir Camacaro y Erys Piñero
15
Interfazsalida(Estudiante ↓ OEstud, Academia ↓ OAcademia) inicio escribir “Total de ingresos es:”, OAcademia.CalcIngresos(OEstud) escribir “Monto por IVA es:”, OAcademia.CalcMontoIva(OEstud) fin
17/05/2012 9:55
Profs: Vladimir Camacaro y Erys Piñero
16