Análisis del problema y diseño de un algoritmo, utilizando estructuras repetitivas
Supongamos que necesitamos diseñar un algoritmo que permita a un profesor calcular el promedio de notas de cada una de sus secciones asignadas en un periodo académico.
Al principio del proceso se desconoce de cuántas secciones se trata, y también desconoce la cantidad de alumnos inscritos por cada sección a cargo del profesor.
1) Análisis del problema
Problema: Calcular promedio de notas por sección.
Datos:
- Datos Fijos o Constantes: Ninguno
- Datos que debe dar el usuario: Las notas de cada alumno por sección
Operaciones a realizar:
Por cada sección se van acumulando las
notas de cada estudiante, una vez sumadas todas, se divide entre la cantidad de
alumnos totalizados.
Salida:
El promedio calculado por cada sección
2) Algoritmo
Declaración
Variables
HaySec: Carácter
Alumnos, i: Entero
Nota, Suma, Promedio: Real
Inicio
Escribir “Algoritmo que procesa notas por
secciones, para promediarlas”
Escribir “Indique la letra s, si tiene
sección para procesar, sino introduzca cualquier tecla”
Leer HaySec
Mientras (HaySec = ´s´) Hacer
Sumaß 0
Promedio ß0
Escribir “Cuántos alumnos tiene la sección a procesar”
Leer Alumnos
Para i= 1 Hasta Alumnos inc 1
Escribir “Introduzca nota del alumno #”, i
Leer Nota
SumaßSuma + Nota
Fin Para
Promedio ß
suma/Alumnos
Escribir “El promedio de la sección procesada es de “, Promedio, “
ptos.”
Escribir “Existe otra sección para procesar”
Leer HaySec
Fin Mientras
Fin
Comentario:
Fíjese como podemos obtener algoritmos con ciclos anidados, es decir, un ciclo
dentro de otro ciclo. Tal es el caso del ciclo de los alumnos (Para), que tiene
por objeto pedir en cada iteración, la nota por alumno para sumarla. Este ciclo
está dentro del ciclo de las secciones (Mientras), que tendrá una iteración por
cada sección existente.
En cada
iteración del ciclo de las secciones, se tendrán tantas iteraciones como
alumnos se hayan especificado en la entrada de datos.
HaySec es la
variable que controla las iteraciones en el ciclo Mientras, y la variable i,
controla las iteraciones en el ciclo Para.