Doble ciclo parte I

22
27/02/13 27/02/13 Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys Piñero. 1 Introducción a la Computación Introducción a la Computación Programa: Análisis de Sistemas Programa: Análisis de Sistemas Profesores: Erys Piñero Profesores: Erys Piñero Vladimir Camacaro Vladimir Camacaro Lapso 2012/2 Lapso 2012/2

Transcript of Doble ciclo parte I

27/02/1327/02/13 Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys Piñero. 11

Introducción a la ComputaciónIntroducción a la Computación

Programa: Análisis de SistemasPrograma: Análisis de Sistemas

Profesores: Erys PiñeroProfesores: Erys Piñero

Vladimir CamacaroVladimir Camacaro

Lapso 2012/2Lapso 2012/2

Estructuras iterativas o Estructuras iterativas o repetitivas doblesrepetitivas dobles

27/02/1327/02/13Profs. Vladimir Camacaro y Erys Profs. Vladimir Camacaro y Erys

Piñero. Piñero. 33

De igual forma que se pueden anidar De igual forma que se pueden anidar estructuras selectivas, es posible incluir un estructuras selectivas, es posible incluir un ciclo dentro de otro. En este caso, cada ciclo dentro de otro. En este caso, cada vez que se produzca una alteración del vez que se produzca una alteración del valor del bucle externo, deberá ejecutarse valor del bucle externo, deberá ejecutarse completamente el bucle interno. completamente el bucle interno.

Las reglas para construir estructuras Las reglas para construir estructuras repetitivas anidadas son iguales en ambos repetitivas anidadas son iguales en ambos casos: la estructura interna debe estar casos: la estructura interna debe estar incluida totalmente dentro de la externa y incluida totalmente dentro de la externa y no puede existir solapamiento.no puede existir solapamiento.

27/02/1327/02/13 Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys Piñero. 44

Ejercicio 1Ejercicio 1

Por cada uno de los alumnos de las 7 secciones Por cada uno de los alumnos de las 7 secciones de la asignatura Introducción a la Computación de la asignatura Introducción a la Computación se conoce el número de la cédula y la nota de se conoce el número de la cédula y la nota de los 30 alumnos de cada sección. los 30 alumnos de cada sección. Calcular:Calcular:

Por cada sección:Por cada sección: Promedio de notas Promedio de notas Por asignatura Por asignatura a.- Promedio de notasa.- Promedio de notas b.- Mayor Promediob.- Mayor Promedio

27/02/1327/02/13 Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys Piñero. 55

SoluciónSolución

Análisis del problema:Análisis del problema:ListaLista ClasificaciónClasificaciónAlumno -------------------------------------Alumno ------------------------------------- Clase ClaseCédula --------------------------------------Cédula -------------------------------------- Atributo/Alumno Atributo/AlumnoNota------------------------------------------Nota------------------------------------------ Atributo/Alumno Atributo/Alumno

Sección--------------------------------------Sección-------------------------------------- Clase ClaseCalcular promedio de notas -----------Calcular promedio de notas ----------- Método/Sección Método/Sección

Asignatura----------------------------------Asignatura---------------------------------- Clase ClaseCalcular promedio de notas-----------Calcular promedio de notas----------- Método/Asignatura Método/AsignaturaDeterminar mayor promedio----------Determinar mayor promedio---------- Método/Asignatura Método/Asignatura

27/02/1327/02/13 Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys Piñero. 66

f.u.(1) 1) Inicializar (AcumProm, MayorProm)f.u.(1) 1) Inicializar (AcumProm, MayorProm)f.m.(2) 2) Inicializar (AcumNota)f.m.(2) 2) Inicializar (AcumNota)f.m.(3) 3) Leer (Cédula, Nota)f.m.(3) 3) Leer (Cédula, Nota)f.m.(3) 4) Acumular nota: Acumnota f.m.(3) 4) Acumular nota: Acumnota Acumnota + NotaAcumnota + Notaf.m.(4) 5) Calcula e imprime Promedio de notas de la sección f.m.(4) 5) Calcula e imprime Promedio de notas de la sección Promedio ← AcumNota/30 Promedio ← AcumNota/30 f.m.(4) 6) Acumular promedio de la secciónf.m.(4) 6) Acumular promedio de la sección AcumProm ← AcumProm + PromedioAcumProm ← AcumProm + Promediof.m.(4) 7) Determinar mayor promediof.m.(4) 7) Determinar mayor promedio si (Promedio>MayorProm)si (Promedio>MayorProm) MayorProm ← Promedio MayorProm ← Promedio

f.u. (5) 8) Calcular e imprimir promedio de la asignatura:f.u. (5) 8) Calcular e imprimir promedio de la asignatura:

PromedioAsig ←AcumProm/7PromedioAsig ←AcumProm/7

f.u. (5) 9) Imprimir mayor promedio f.u. (5) 9) Imprimir mayor promedio (MayorProm)(MayorProm)

27/02/1327/02/13 Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys Piñero. 77

11

repetir para(entero Seccirepetir para(entero Secci←1, Secci<=7, Secci ←Secci+1←1, Secci<=7, Secci ←Secci+1))

repetir para(entero Alumrepetir para(entero Alum←1, Alum<=30, Alum ←Alum+1←1, Alum<=30, Alum ←Alum+1))

88 99

2

567

34

27/02/1327/02/13 Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys Piñero. 88

AlumnoAlumno

alfanumérico Cédulaalfanumérico Cédulareal Notareal NotaAsignarCedula(alfanumérico ↓Ced)AsignarCedula(alfanumérico ↓Ced)AsignarNota(real ↓ NT)AsignarNota(real ↓ NT)real SacarNota()real SacarNota()alfanumérico SacarCedula()alfanumérico SacarCedula()

27/02/1327/02/13Profs. Vladimir Camacaro y Erys Profs. Vladimir Camacaro y Erys

Piñero. Piñero. 99

SecciónSección

real AcumNotareal AcumNota

Inic()Inic()

real SacarAcumNota()real SacarAcumNota()

AcumularNota(Alumno ↓Alu)AcumularNota(Alumno ↓Alu)

real DetPromSecc()real DetPromSecc()

27/02/1327/02/13Profs. Vladimir Camacaro y Erys Profs. Vladimir Camacaro y Erys

Piñero. Piñero. 1010

AsignaturaAsignatura

real AcumPromreal AcumProm

real MayorPromreal MayorProm

Inicializar()Inicializar()

real SacarAcumProm()real SacarAcumProm()

real SacarMayorProm()real SacarMayorProm()

AcumularProm(Sección ↓ Secc)AcumularProm(Sección ↓ Secc)

DetMayorProm(Sección ↓ Secc)DetMayorProm(Sección ↓ Secc)

real DetPromAsig()real DetPromAsig()

27/02/1327/02/13Profs. Vladimir Camacaro y Erys Profs. Vladimir Camacaro y Erys

Piñero. Piñero. 1111

//// Definición de la estructura de la clase Alumno Definición de la estructura de la clase Alumno////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////clase Alumnoclase Alumno inicioinicio privado:privado: alfanumérico Cédulaalfanumérico Cédula real Notareal Nota público:público: //Métodos para asignar o meter datos//Métodos para asignar o meter datos AsignarCedula (alfanumérico ↓Ced )AsignarCedula (alfanumérico ↓Ced ) AsignarNota(real ↓ NT)AsignarNota(real ↓ NT) //Métodos para sacar datos//Métodos para sacar datos alfanumérico SacarCedula()alfanumérico SacarCedula() real SacarNota()real SacarNota() fin //Alumnofin //Alumno

27/02/1327/02/13Profs. Vladimir Camacaro y Erys Profs. Vladimir Camacaro y Erys

Piñero. Piñero. 1212

//Desarrollo de los métodos de la clase Alumno//Desarrollo de los métodos de la clase Alumno

Alumno AsignarCedula(alfanumerico ↓ Ced) Alumno AsignarCedula(alfanumerico ↓ Ced)

inicioinicio Cedula ← CedCedula ← CedfinfinAlumno AsignarNota(real ↓ NT) Alumno AsignarNota(real ↓ NT) inicioinicio Nota ← NTNota ← NTfinfinalfanumérico Alumno SacarCedula() alfanumérico Alumno SacarCedula() inicioinicio retornar Cédularetornar Cédulafinfinreal Alumno SacarNota() real Alumno SacarNota() inicioinicio retornar Notaretornar Notafinfin

27/02/1327/02/13Profs. Vladimir Camacaro y Erys Profs. Vladimir Camacaro y Erys

Piñero. Piñero. 1313

// Definición de la estructura de la clase Sección// Definición de la estructura de la clase Sección//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////clase Sección clase Sección inicio privado:inicio privado: real AcumNota,Mayor real AcumNota,Mayor público:público: //Métodos para inicializar datos//Métodos para inicializar datos Inic()Inic() //Métodos para sacar datos//Métodos para sacar datos real SacarAcumNota()real SacarAcumNota() // Otros métodos propios del objeto// Otros métodos propios del objeto AcumularNota(Alumno↓ Alum)AcumularNota(Alumno↓ Alum) real DetPromSecc()real DetPromSecc() fin // Secciónfin // Sección

27/02/1327/02/13Profs. Vladimir Camacaro y Erys Profs. Vladimir Camacaro y Erys

Piñero. Piñero. 1414

//Métodos propios de la clase Sección //Métodos propios de la clase Sección

Sección Inic() Sección Inic()

inicioinicio

AcumNota ← 0AcumNota ← 0

finfin

27/02/1327/02/13Profs. Vladimir Camacaro y Erys Profs. Vladimir Camacaro y Erys

Piñero. Piñero. 1515

real Sección SacarAcumNota()real Sección SacarAcumNota()

inicioinicio

retornar AcumNotaretornar AcumNota

finfin

Seccion AcumularNota(Alumno ↓ Alu )Seccion AcumularNota(Alumno ↓ Alu )

inicioinicio

AcumNota←AcumNota+Alu.SacarNota()AcumNota←AcumNota+Alu.SacarNota()

finfin

27/02/1327/02/13Profs. Vladimir Camacaro y Erys Profs. Vladimir Camacaro y Erys

Piñero. Piñero. 1616

real Seccion DetPromSecc()real Seccion DetPromSecc()

inicioinicio

real Promreal Prom

Prom ← AcumNota/30Prom ← AcumNota/30

retornar Promretornar Prom

fin fin

27/02/1327/02/13 Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys Piñero. 1717

//Definición de la estructura de la clase Asignatura//Definición de la estructura de la clase Asignaturaclase Asignaturaclase Asignatura inicioinicio privado:privado: real AcumProm,MayorPromreal AcumProm,MayorProm publico:publico: Inicializar ()Inicializar () real SacarAcumProm()real SacarAcumProm() real SacarMayorProm()real SacarMayorProm() AcumularProm(Seccion↓ Secc)AcumularProm(Seccion↓ Secc) DelMayorProm(Seccion↓ Secc)DelMayorProm(Seccion↓ Secc) real DetPromAsig()real DetPromAsig() fin // Asignatura fin // Asignatura

27/02/1327/02/13 Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys Piñero. 1818

//Métodos propios de la clase Asignatura//Métodos propios de la clase Asignatura

Asignatura Inicializar ()Asignatura Inicializar ()

inicioinicio

AcumProm ← 0AcumProm ← 0

MayorProm ← 0MayorProm ← 0

finfin

27/02/1327/02/13 Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys Piñero. 1919

real Asignatura SacarAcumProm()real Asignatura SacarAcumProm()

iInicioiInicio

retornar AcumPromretornar AcumProm

finfin

real Asignatura SacarMayorProm()real Asignatura SacarMayorProm()

inicioinicio

retornar MayorPromretornar MayorProm

finfin

27/02/1327/02/13 Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys Piñero. 2020

Asignatura AcumularProm(Seccion ↓ Secc)Asignatura AcumularProm(Seccion ↓ Secc) inicioinicio AcumProm ← AcumProm+Secc.DetPromSecc()AcumProm ← AcumProm+Secc.DetPromSecc() finfinAsignatura DetMayorProm(Seccion ↓ Secc)Asignatura DetMayorProm(Seccion ↓ Secc) inicioinicio si (Secc.DetPromSecc > MayorProm)si (Secc.DetPromSecc > MayorProm) MayorProm ← Secc . DetPromSecc()MayorProm ← Secc . DetPromSecc() finfinreal Asignatura DetPromAsig()real Asignatura DetPromAsig() inicioinicio real PromAreal PromA PromA ← AcumProm / 7PromA ← AcumProm / 7 retornar PromAretornar PromA finfin

27/02/1327/02/13 Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys Piñero. 2121

//Programa de aplicación//Programa de aplicaciónprincipal()principal() inicio inicio Alumno AluAlumno Alu Seccion SeccSeccion Secc Asignatura AsigAsignatura Asig Asig.Inicializar() Asig.Inicializar() repetir para (entero Secci ←1; Secci <= 7; Secci ← Secci + 1)repetir para (entero Secci ←1; Secci <= 7; Secci ← Secci + 1) inicioinicio Secc.Inic() Secc.Inic() repita para (repita para (entero Alum ←1; Alum <= 30 ; Alum ← Alum + 1entero Alum ←1; Alum <= 30 ; Alum ← Alum + 1)) inicioinicio InterfazEntrada(Alu)InterfazEntrada(Alu) Secc.AcumularNota(Alu) Secc.AcumularNota(Alu) finfin InterfazSalidaSeccion(Alum)InterfazSalidaSeccion(Alum)

Asig.AcumularProm(Secc) Asig.AcumularProm(Secc) Asig.DetMayorProm(Secc) Asig.DetMayorProm(Secc) finfin InterfazSalidaAsig (Alum)InterfazSalidaAsig (Alum) finfin

27/02/1327/02/13 Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys Piñero. 2222

InterfazEntrada(Alumno InterfazEntrada(Alumno ↑↑ Alum) Alum) inicioinicio real NTreal NT alfanumérico cedalfanumérico ced escribir “Escriba su numero de cedula “)escribir “Escriba su numero de cedula “) leer cedleer ced Alu.AsignarCedula(Ced) Alu.AsignarCedula(Ced) escribir “Escriba su nota final)escribir “Escriba su nota final) leer NTleer NT Alu.AsignarNota(NT)Alu.AsignarNota(NT) finfin

InterfazSalidaSeccion(SeccionInterfazSalidaSeccion(Seccion↓↓ Secc) Secc) inicioinicio escribir”El promedio de la sección es:” Secc. DetPromSecc() escribir”El promedio de la sección es:” Secc. DetPromSecc() finfin

InterfazSalidaAsig (Asignatura ↓ Asig)InterfazSalidaAsig (Asignatura ↓ Asig) inicioinicio escribir “El promedio de la Asignatura es: “Asig. DetPromAsig () escribir “El promedio de la Asignatura es: “Asig. DetPromAsig () escribir “El mayor promedio es: “Asig. SacarMayorprom() escribir “El mayor promedio es: “Asig. SacarMayorprom() finfin