PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
Unidad VI. Ciclo B
1. Ejercicio 4
Se tiene el nombre y edad de 40 alumnos
de una sección. Calcular
a.- Cantidad de alumnos menores de edad
b.- Promedio de edad de la sección.
2. Análisis del problema
Lista Clasificación
Edad------------------------------------------ Atributo/Alumno
Nombre-------------------------------------- Atributo/Alumno
Alumno-------------------------------------- Clase
Sección------------------------------------------- Clase
Calcule cantidad de alumnos menores-- Método/Sección
Calcular el Promedio de edad ------------- Método/Sección
3. Análisis del problema
f.u. 1) Inicializar( ContMenores, AcumEdad)
f.m. 2)Leer(Nombre, Edad)
f.m. 3)Contar_Menores:
si (Edad<18)
ContMenoresContMenores+1
f.m. 4)Acumular edad:
AcumEdad←AcumEdad+Edad
f.u 5) Escribir (ContMenores)
f.u. 6) Calcular e imprimir Promedio de edad:
PromedioEdad←AcumEdad/40
7. Nota: Los métodos ContarMenores y
AcumularEdad utilizan el atributo Edad,
Edad no es un atributo de la clase
Sección por tanto el objeto Alum es un
parámetro de estos métodos.
8. // Definición de la estructura de la clase Alumno
clase Alumno
inicio
privado:
alfanumérico Nombre
entero Edad
público:
//Métodos para asignar o meter datos
AsignarNombre (alfanumerico ↓Nom )
AsignarEdad(entero ↓ Ed)
//Métodos para sacar datos
alfanumerico SacarNombre()
entero SacarEdad()
fin // Alumno
9. //Desarrollo de los métodos de la clase Alumno
Alumno AsignarNombre(alfanumerico ↓ Nom)
inicio
Nombre ← Nom
fin
Alumno AsignarEdad(entero ↓ Ed)
inicio
Edad ← Ed
fin
alfanumerico Alumno SacarNombre()
inicio
retornar Nombre
fin
entero Alumno SacarEdad()
inicio
retornar Edad
fin
10. // Definición de la estructura de la clase Sección
clase Sección
inicio
privado:
entero ContMenores, AcumEdad
público:
//Métodos para inicializar datos
Inicializar()
//Métodos para sacar datos
entero SacarContMenores()
entero SacarAcumEdad()
// Otros métodos propios del objeto
ContarMenores(Alumno↓ Alum)
AcumularEdad(Alumno↓ Alum)
real CalcularProm()
fin // Sección
11. //Desarrollo de los métodos de la clase Sección
Sección InicContMenores ()
inicio
ContMenores ← 0
AcumEdad← 0
fin
entero Sección SacarContMenores()
inicio
retornar ContMenores
fin
entero Seccion SacarAcumEdad()
inicio
retornar AcumEdad
fin
12. Sección ContarMenores(Alumno ↓ Alum)
inicio
si (Alum.SacarEdad()<18)
entonces
ContMenores ← ContMenores + 1
fin
Seccion AcumularEdad(Alumno ↓ Alum)
inicio
AcumEdad ← AcumEdad + Alum.SacarEdad()
fin
real Seccion CalcularProm()
inicio
retornar AcumEdad/40
fin
13. // Programa de aplicación
principal( )
inicio
Alumno Alum
Seccion Secc
entero Ed
alfanumerico Nom
//Inicializar contadores y acumuladores
Secc.Inicializar()
// ciclo repetitivo
repita para (entero Cont←0 , Cont<40 , Cont←Cont+1)
inicio
escribir “Indique el nombre del alumno”
leer Nom
Alum.AsignarNombre(Nom)
escribir “Indique la edad del alumno”
leer Ed
Alum.AsignarEdad(Ed)
Secc.ContMenores(Alum)
Secc.AcumEdad(Alum)
fin
// Impresión de resultados
escribir “ Cantidad de alumnos menores de edad “ Secc.SacarContMenores()
escribir “ El promedio de edad de la sección es “ Secc.CalcularProm()
fin
14. Ejercicio 5
Se tiene el nombre y edad de un grupo
de alumnos de una sección. Calcular
a.- Cantidad de alumnos menores de edad
b.- Promedio de edad de la sección.
Observe que este ejercicio procesa una cantidad desconocida de alumnos. Si se conoce que la
cantidad de datos a procesar es relativamente pequeña, se puede resolver usando la
instrucción: repetir mientras-Interacción con el usuario. Así la solución es semejante al
ejercicio anterior, solo cambia el ciclo repetitivo a usar.
15. Ejercicio 5
Además para calcular el promedio seria
AcumEdad entre un contador de alumnos.
Observe que ya no es 40. Se tendría que
declarar un nuevo atributo en la clase
Sección entero ContAlumnos, anexar
otra inicializacion ContAlumno y otro
método para ContarAlumno.
16. Ejercicio 5
Por otra parte el método CalcularProm()
quedaría:
real Sección CalcularProm()
inicio
retornar AcumEdad/ContAlumno
fin
17. // Programa de aplicación
principal( )
inicio
Alumno Alum
Seccion Secc
entero Ed
alfanumerico Nom
//Inicializar contadores y acumuladores
Secc.Inicializar()
// ciclo repetitivo
alfanumérico Respuesta ← “Si”
repita mientras (Respuesta = “Si”)
inicio
escribir “Indique el nombre del alumno”
leer Nom
Alum.AsignarNombre(Nom)
escribir “Indique la edad del alumno”
leer Ed
Alum.AsignarEdad(Ed)
Secc.ContMenores(Alum)
Secc.AcumEdad(Alum)
Secc.ContarAlumno()
escribir “Indique si hay mas datos (Si o No)”
leer Respuesta
fin
// Impresión de resultados
escribir ”Cantidad de alumnos procesados “, Secc.SacarContAlumnos()
escribir “ Cantidad de alumnos menores de edad “ Secc.SacarContMenores()
escribir “ El promedio de edad de la sección es “ Secc.CalcularProm()
fin