22
Profs. Vladimir Camacaro y Erys Profs. Vladimir Camacaro y Erys Piñero. Piñero. 1 Introducción a la Introducción a la Computación Computación Programa: Análisis de Sistemas Programa: Análisis de Sistemas Profesores: Erys Piñero Profesores: Erys Piñero Vladimir Vladimir Camacaro Camacaro

Doble ciclo. Parte I

Embed Size (px)

Citation preview

Page 1: Doble ciclo. Parte I

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

Page 2: Doble ciclo. Parte I

Estructuras iterativas o Estructuras iterativas o repetitivas doblesrepetitivas dobles

Page 3: Doble ciclo. Parte I

Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys 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.

Page 4: Doble ciclo. Parte I

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

Page 5: Doble ciclo. Parte I

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

Page 6: Doble ciclo. Parte I

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)

Page 7: Doble ciclo. Parte I

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

Page 8: Doble ciclo. Parte I

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()

Page 9: Doble ciclo. Parte I

Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys 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()

Page 10: Doble ciclo. Parte I

Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys 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()

Page 11: Doble ciclo. Parte I

Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys 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

Page 12: Doble ciclo. Parte I

Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys 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

Page 13: Doble ciclo. Parte I

Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys 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

Page 14: Doble ciclo. Parte I

Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys 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

Page 15: Doble ciclo. Parte I

Profs. Vladimir Camacaro y Erys Piñero. Profs. Vladimir Camacaro y Erys 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

Page 16: Doble ciclo. Parte I

Profs. 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

Page 17: Doble ciclo. Parte I

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

Page 18: Doble ciclo. Parte I

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

Page 19: Doble ciclo. Parte I

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

Page 20: Doble ciclo. Parte I

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

Page 21: Doble ciclo. Parte I

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

Page 22: Doble ciclo. Parte I

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