DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
Doble ciclo parte I
1. Introducción a la Computación
Programa: Análisis de Sistemas
Profesores: Erys Piñero
Vladimir Camacaro
Lapso 2012/2
27/02/13 Profs. Vladimir Camacaro y Erys Piñero. 1
3. De igual forma que se pueden anidar
estructuras selectivas, es posible incluir un
ciclo dentro de otro. En este caso, cada
vez que se produzca una alteración del
valor del bucle externo, deberá ejecutarse
completamente el bucle interno.
Las reglas para construir estructuras
repetitivas anidadas son iguales en ambos
casos: la estructura interna debe estar
incluida totalmente dentro de la externa y
no puede existir solapamiento.
Profs. Vladimir Camacaro y Erys
27/02/13 Piñero. 3
4. Ejercicio 1
Por cada uno de los alumnos de las 7 secciones
de la asignatura Introducción a la Computación
se conoce el número de la cédula y la nota de
los 30 alumnos de cada sección.
Calcular:
Por cada sección:
Promedio de notas
Por asignatura
a.- Promedio de notas
b.- Mayor Promedio
27/02/13 Profs. Vladimir Camacaro y Erys Piñero. 4
5. Solución
Análisis del problema:
Lista Clasificación
Alumno ------------------------------------- Clase
Cédula -------------------------------------- Atributo/Alumno
Nota------------------------------------------ Atributo/Alumno
Sección-------------------------------------- Clase
Calcular promedio de notas ----------- Método/Sección
Asignatura---------------------------------- Clase
Calcular promedio de notas----------- Método/Asignatura
Determinar mayor promedio---------- Método/Asignatura
27/02/13 Profs. Vladimir Camacaro y Erys Piñero. 5
6. f.u.(1) 1) Inicializar (AcumProm, MayorProm)
f.m.(2) 2) Inicializar (AcumNota)
f.m.(3) 3) Leer (Cédula, Nota)
f.m.(3) 4) Acumular nota: Acumnota Acumnota + Nota
f.m.(4) 5) Calcula e imprime Promedio de notas de la sección
Promedio ← AcumNota/30
f.m.(4) 6) Acumular promedio de la sección
AcumProm ← AcumProm + Promedio
f.m.(4) 7) Determinar mayor promedio
si (Promedio>MayorProm)
MayorProm ← Promedio
f.u. (5) 8) Calcular e imprimir promedio de la asignatura:
PromedioAsig ←AcumProm/7
f.u. (5) 9) Imprimir mayor promedio
(MayorProm)
27/02/13 Profs. Vladimir Camacaro y Erys Piñero. 6
8. Alumno
alfanumérico Cédula
real Nota
AsignarCedula(alfanumérico ↓Ced)
AsignarNota(real ↓ NT)
real SacarNota()
alfanumérico SacarCedula()
27/02/13 Profs. Vladimir Camacaro y Erys Piñero. 8
11. // Definición de la estructura de la clase Alumno
////////////////////////////////////////////////////////////////////
clase Alumno
inicio
privado:
alfanumérico Cédula
real Nota
público:
//Métodos para asignar o meter datos
AsignarCedula (alfanumérico ↓Ced )
AsignarNota(real ↓ NT)
//Métodos para sacar datos
alfanumérico SacarCedula()
real SacarNota()
fin //Alumno
Profs. Vladimir Camacaro y Erys
27/02/13 Piñero. 11
12. //Desarrollo de los métodos de la clase Alumno
Alumno AsignarCedula(alfanumerico ↓ Ced)
inicio
Cedula ← Ced
fin
Alumno AsignarNota(real ↓ NT)
inicio
Nota ← NT
fin
alfanumérico Alumno SacarCedula()
inicio
retornar Cédula
fin
real Alumno SacarNota()
inicio
retornar Nota
fin
Profs. Vladimir Camacaro y Erys
27/02/13 Piñero. 12
13. // Definición de la estructura de la clase Sección
/////////////////////////////////////////////////////////////
clase Sección
inicio privado:
real AcumNota,Mayor
público:
//Métodos para inicializar datos
Inic()
//Métodos para sacar datos
real SacarAcumNota()
// Otros métodos propios del objeto
AcumularNota(Alumno↓ Alum)
real DetPromSecc()
fin // Sección
Profs. Vladimir Camacaro y Erys
27/02/13 Piñero. 13
14. //Métodos propios de la clase Sección
Sección Inic()
inicio
AcumNota ← 0
fin
Profs. Vladimir Camacaro y Erys
27/02/13 Piñero. 14
15. real Sección SacarAcumNota()
inicio
retornar AcumNota
fin
Seccion AcumularNota(Alumno ↓ Alu )
inicio
AcumNota←AcumNota+Alu.SacarNota()
fin
Profs. Vladimir Camacaro y Erys
27/02/13 Piñero. 15
16. real Seccion DetPromSecc()
inicio
real Prom
Prom ← AcumNota/30
retornar Prom
fin
Profs. Vladimir Camacaro y Erys
27/02/13 Piñero. 16
17. //Definición de la estructura de la clase Asignatura
clase Asignatura
inicio
privado:
real AcumProm,MayorProm
publico:
Inicializar ()
real SacarAcumProm()
real SacarMayorProm()
AcumularProm(Seccion↓ Secc)
DelMayorProm(Seccion↓ Secc)
real DetPromAsig()
fin // Asignatura
27/02/13 Profs. Vladimir Camacaro y Erys Piñero. 17
18. //Métodos propios de la clase Asignatura
Asignatura Inicializar ()
inicio
AcumProm ← 0
MayorProm ← 0
fin
27/02/13 Profs. Vladimir Camacaro y Erys Piñero. 18
19. real Asignatura SacarAcumProm()
iInicio
retornar AcumProm
fin
real Asignatura SacarMayorProm()
inicio
retornar MayorProm
fin
27/02/13 Profs. Vladimir Camacaro y Erys Piñero. 19
20. Asignatura AcumularProm(Seccion ↓ Secc)
inicio
AcumProm ← AcumProm+Secc.DetPromSecc()
fin
Asignatura DetMayorProm(Seccion ↓ Secc)
inicio
si (Secc.DetPromSecc > MayorProm)
MayorProm ← Secc . DetPromSecc()
fin
real Asignatura DetPromAsig()
inicio
real PromA
PromA ← AcumProm / 7
retornar PromA
fin
27/02/13 Profs. Vladimir Camacaro y Erys Piñero. 20
21. //Programa de aplicación
principal()
inicio
Alumno Alu
Seccion Secc
Asignatura Asig
Asig.Inicializar()
repetir para (entero Secci ←1; Secci <= 7; Secci ← Secci + 1)
inicio
Secc.Inic()
repita para (entero Alum ←1; Alum <= 30 ; Alum ← Alum + 1)
inicio
InterfazEntrada(Alu)
Secc.AcumularNota(Alu)
fin
InterfazSalidaSeccion(Alum)
Asig.AcumularProm(Secc)
Asig.DetMayorProm(Secc)
fin
InterfazSalidaAsig (Alum)
fin
27/02/13 Profs. Vladimir Camacaro y Erys Piñero. 21
22. InterfazEntrada(Alumno ↑ Alum)
inicio
real NT
alfanumérico ced
escribir “Escriba su numero de cedula “)
leer ced
Alu.AsignarCedula(Ced)
escribir “Escriba su nota final)
leer NT
Alu.AsignarNota(NT)
fin
InterfazSalidaSeccion(Seccion↓ Secc)
inicio
escribir”El promedio de la sección es:” Secc. DetPromSecc()
fin
InterfazSalidaAsig (Asignatura ↓ Asig)
inicio
escribir “El promedio de la Asignatura es: “Asig. DetPromAsig ()
escribir “El mayor promedio es: “Asig. SacarMayorprom()
fin
27/02/13 Profs. Vladimir Camacaro y Erys Piñero. 22