unidad vi. ciclo b

17
Ejercicio 4 Ejercicio 4 Se tiene el nombre y edad de 40 Se tiene el nombre y edad de 40 alumnos de una sección. alumnos de una sección. Calcular Calcular a.- Cantidad de alumnos menores de a.- Cantidad de alumnos menores de edad edad b.- Promedio de edad de la sección. b.- Promedio de edad de la sección.

Upload: erysintroduccion

Post on 03-Aug-2015

201 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Unidad VI. Ciclo B

Ejercicio 4Ejercicio 4

Se tiene el nombre y edad de 40 alumnos Se tiene el nombre y edad de 40 alumnos de una sección. Calcularde una sección. Calcular

a.- Cantidad de alumnos menores de edad a.- Cantidad de alumnos menores de edad

b.- Promedio de edad de la sección.b.- Promedio de edad de la sección.

Page 2: Unidad VI. Ciclo B

Análisis del problema Análisis del problema

ListaLista ClasificaciónClasificaciónEdad------------------------------------------Edad------------------------------------------ Atributo/Alumno Atributo/Alumno

Nombre--------------------------------------Nombre-------------------------------------- Atributo/Alumno Atributo/Alumno

Alumno--------------------------------------Alumno-------------------------------------- Clase Clase

Sección-------------------------------------------Sección------------------------------------------- Clase Clase

Calcule cantidad de alumnos menores--Calcule cantidad de alumnos menores-- Método/Sección Método/Sección

Calcular el Promedio de edad -------------Calcular el Promedio de edad ------------- Método/Sección Método/Sección

Page 3: Unidad VI. Ciclo B

Análisis del problema Análisis del problema

f.u. 1) Inicializar( ContMenores, AcumEdad) f.u. 1) Inicializar( ContMenores, AcumEdad)

f.m. 2)Leer(Nombre, Edad) f.m. 2)Leer(Nombre, Edad) f.m. 3)Contar_Menores:f.m. 3)Contar_Menores: si (Edad<18)si (Edad<18) ContMenoresContMenoresContMenores+1ContMenores+1f.m. 4)Acumular edad: f.m. 4)Acumular edad: AcumEdadAcumEdad←AcumEdad+Edad←AcumEdad+Edadf.u 5) Escribir (ContMenores) f.u 5) Escribir (ContMenores) f.u. 6) Calcular e imprimir Promedio de edad:f.u. 6) Calcular e imprimir Promedio de edad: PromedioEdadPromedioEdad←AcumEdad/40←AcumEdad/40

Page 4: Unidad VI. Ciclo B

DiagramaDiagrama

11

22

33

44

55

66

345

Repetir para(entero Cont 0, Cont<40, Cont Cont+1)

Page 5: Unidad VI. Ciclo B

Clase alumnoClase alumno

AlumnoAlumno

alfanumerico Nombrealfanumerico Nombreentero Edadentero EdadAsignarNombre(Nom)AsignarNombre(Nom)AsignarEdad(Ed)AsignarEdad(Ed)alfanumericoSacarNombre()alfanumericoSacarNombre()entero SacarEdad()entero SacarEdad()

Page 6: Unidad VI. Ciclo B

Clase SecciónClase Sección

entero ContMenoresentero ContMenoresentero AcumEdadentero AcumEdadInicializar()Inicializar()entero SacarContMenores()entero SacarContMenores()enteroSacarAcumEdad()enteroSacarAcumEdad()ContarMenores(ContarMenores(Alumno↓ AlumAlumno↓ Alum))AcumularEdad(AcumularEdad(Alumno↓ AlumAlumno↓ Alum))real CalcularProm()real CalcularProm()

Page 7: Unidad VI. Ciclo B

Nota: Los métodos ContarMenores y Nota: Los métodos ContarMenores y AcumularEdad utilizan el atributo Edad, AcumularEdad utilizan el atributo Edad, Edad no es un atributo de la clase Edad no es un atributo de la clase Sección por tanto el objeto Alum es un Sección por tanto el objeto Alum es un parámetro de estos métodos.parámetro de estos métodos.

Page 8: Unidad VI. Ciclo B

// Definición de la estructura de la clase Alumno// Definición de la estructura de la clase Alumnoclase Alumnoclase Alumno inicioinicio privado:privado: alfanumérico Nombrealfanumérico Nombre entero Edad entero Edad público:público: //Métodos para asignar o meter datos//Métodos para asignar o meter datos AsignarNombre (alfanumerico ↓Nom )AsignarNombre (alfanumerico ↓Nom ) AsignarEdad(entero ↓ Ed)AsignarEdad(entero ↓ Ed) //Métodos para sacar datos//Métodos para sacar datos alfanumerico SacarNombre()alfanumerico SacarNombre() entero SacarEdad()entero SacarEdad() fin // Alumnofin // Alumno

Page 9: Unidad VI. Ciclo B

//Desarrollo de los métodos de la clase Alumno//Desarrollo de los métodos de la clase AlumnoAlumno AsignarNombre(alfanumerico ↓ Nom) Alumno AsignarNombre(alfanumerico ↓ Nom)

inicioinicio Nombre ← NomNombre ← NomfinfinAlumno AsignarEdad(entero ↓ Ed) Alumno AsignarEdad(entero ↓ Ed) inicioinicio Edad ← EdEdad ← Edfinfinalfanumerico Alumno SacarNombre() alfanumerico Alumno SacarNombre() inicioinicio retornar Nombre retornar Nombre finfinentero Alumno SacarEdad() entero Alumno SacarEdad() inicioinicio retornar Edadretornar Edadfinfin

Page 10: Unidad VI. Ciclo B

// Definición de la estructura de la clase Sección// Definición de la estructura de la clase Secciónclase Secciónclase Sección inicioinicio privado:privado: entero ContMenores, AcumEdad entero ContMenores, AcumEdad público:público: //Métodos para inicializar datos//Métodos para inicializar datos Inicializar()Inicializar() //Métodos para sacar datos//Métodos para sacar datos entero SacarContMenores()entero SacarContMenores() entero SacarAcumEdad()entero SacarAcumEdad() // Otros métodos propios del objeto// Otros métodos propios del objeto ContarMenores(ContarMenores(Alumno↓ AlumAlumno↓ Alum)) AcumularEdad(AcumularEdad(Alumno↓ AlumAlumno↓ Alum)) real CalcularProm()real CalcularProm() fin // Secciónfin // Sección

Page 11: Unidad VI. Ciclo B

//Desarrollo de los métodos de la clase Sección //Desarrollo de los métodos de la clase Sección

Sección InicContMenores ()Sección InicContMenores () inicioinicio ContMenores ← 0ContMenores ← 0 AcumEdad← 0AcumEdad← 0 finfinentero Sección SacarContMenores()entero Sección SacarContMenores() inicioinicio retornar ContMenoresretornar ContMenores finfinentero Seccion SacarAcumEdad()entero Seccion SacarAcumEdad() inicioinicio retornar AcumEdadretornar AcumEdad finfin

Page 12: Unidad VI. Ciclo B

Sección ContarMenores(Sección ContarMenores(Alumno ↓ AlumAlumno ↓ Alum)) inicioinicio si (si (Alum.SacarEdad()<Alum.SacarEdad()<18)18) entonces entonces ContMenores ← ContMenores + 1ContMenores ← ContMenores + 1 finfinSeccion AcumularEdad(Seccion AcumularEdad(Alumno ↓ AlumAlumno ↓ Alum)) inicioinicio AcumEdad ← AcumEdad + AcumEdad ← AcumEdad + Alum.SacarEdad()Alum.SacarEdad() finfinreal Seccion CalcularProm()real Seccion CalcularProm() inicioinicio retornar AcumEdad/40retornar AcumEdad/40 finfin

Page 13: Unidad VI. Ciclo B

// Programa de aplicación// Programa de aplicación principal( )principal( ) inicioinicio Alumno AlumAlumno Alum Seccion SeccSeccion Secc entero Edentero Ed alfanumerico Nomalfanumerico Nom//Inicializar contadores y acumuladores //Inicializar contadores y acumuladores Secc.Inicializar()Secc.Inicializar()// ciclo repetitivo // ciclo repetitivo repita para (entero Cont←0 , Cont<40 , Cont←Cont+1)repita para (entero Cont←0 , Cont<40 , Cont←Cont+1) inicioinicio escribir “Indique el nombre del alumno”escribir “Indique el nombre del alumno” leer Nomleer Nom Alum.AsignarNombre(Nom)Alum.AsignarNombre(Nom) escribir “Indique la edad del alumno”escribir “Indique la edad del alumno” leer Edleer Ed Alum.AsignarEdad(Ed)Alum.AsignarEdad(Ed) Secc.ContMenores(Alum)Secc.ContMenores(Alum) Secc.AcumEdad(Alum)Secc.AcumEdad(Alum) finfin// Impresión de resultados // Impresión de resultados escribir “ Cantidad de alumnos menores de edad “ Secc.SacarContMenores() escribir “ Cantidad de alumnos menores de edad “ Secc.SacarContMenores() escribir “ El promedio de edad de la sección es “ Secc.CalcularProm()escribir “ El promedio de edad de la sección es “ Secc.CalcularProm() finfin

Page 14: Unidad VI. Ciclo B

Ejercicio 5Ejercicio 5

Se tiene el nombre y edad de Se tiene el nombre y edad de un grupoun grupo de alumnos de una sección. Calcularde alumnos de una sección. Calcular

a.- Cantidad de alumnos menores de edad a.- Cantidad de alumnos menores de edad b.- Promedio de edad de la sección. b.- Promedio de edad de la sección.

Observe que este ejercicio procesa una cantidad desconocida de alumnos.Observe que este ejercicio procesa una cantidad desconocida de alumnos. Si se conoce que Si se conoce que la la

cantidad de datos a procesar es relativamente pequeñacantidad de datos a procesar es relativamente pequeña,, sse puede resolver usando la e puede resolver usando la

instrucción: instrucción: repetir mientras-Interacción con el usuariorepetir mientras-Interacción con el usuario. Así la solución es semejante al . Así la solución es semejante al ejercicio anterior, solo cambia el ciclo repetitivo a usar.ejercicio anterior, solo cambia el ciclo repetitivo a usar.

Page 15: Unidad VI. Ciclo B

Ejercicio 5Ejercicio 5

Además para calcular el promedio seria Además para calcular el promedio seria AcumEdad entre un contador de alumnos. AcumEdad entre un contador de alumnos. Observe que ya no es 40. Se tendría que Observe que ya no es 40. Se tendría que declarar un nuevo atributo en la clase declarar un nuevo atributo en la clase SecciónSección entero ContAlumnosentero ContAlumnos, anexar , anexar otra inicializacion otra inicializacion CContAlumnoontAlumno y otro y otro método para método para ContarAlumnoContarAlumno..

Page 16: Unidad VI. Ciclo B

Ejercicio 5Ejercicio 5

Por otra parte el método CalcularProm() Por otra parte el método CalcularProm() quedaría: quedaría:

real Sección CalcularProm()real Sección CalcularProm()

inicioinicio

retornar AcumEdad/retornar AcumEdad/ContAlumnoContAlumno finfin

Page 17: Unidad VI. Ciclo B

// Programa de aplicación// Programa de aplicación principal( )principal( ) inicioinicio Alumno AlumAlumno Alum Seccion SeccSeccion Secc entero Edentero Ed alfanumerico Nomalfanumerico Nom//Inicializar contadores y acumuladores//Inicializar contadores y acumuladores Secc.Inicializar()Secc.Inicializar()// ciclo repetitivo// ciclo repetitivo alfanumérico Respuesta ← “Si” alfanumérico Respuesta ← “Si” repita mientras (Respuesta = “Si”) repita mientras (Respuesta = “Si”) inicioinicio escribir “Indique el nombre del alumno” escribir “Indique el nombre del alumno” leer Nomleer Nom Alum.AsignarNombre(Nom)Alum.AsignarNombre(Nom) escribir “Indique la edad del alumno”escribir “Indique la edad del alumno” leer Edleer Ed Alum.AsignarEdad(Ed)Alum.AsignarEdad(Ed) Secc.ContMenores(Alum)Secc.ContMenores(Alum) Secc.AcumEdad(Alum)Secc.AcumEdad(Alum) Secc.ContarAlumno()Secc.ContarAlumno() escribir “Indique si hay mas datos (Si o No)”escribir “Indique si hay mas datos (Si o No)” leer Respuestaleer Respuesta finfin// Impresión de resultados // Impresión de resultados escribir ”Cantidad de alumnos procesados “, Secc.SacarContAlumnos()escribir ”Cantidad de alumnos procesados “, Secc.SacarContAlumnos() escribir “ Cantidad de alumnos menores de edad “ Secc.SacarContMenores() escribir “ Cantidad de alumnos menores de edad “ Secc.SacarContMenores() escribir “ El promedio de edad de la sección es “ Secc.CalcularProm()escribir “ El promedio de edad de la sección es “ Secc.CalcularProm() finfin