M. C. Bertha López Azamarblopez/ProgramacionEstructurada/Diapo… · Acumulador de promedios del...
Transcript of M. C. Bertha López Azamarblopez/ProgramacionEstructurada/Diapo… · Acumulador de promedios del...
7. Sentencias de Control
Repetitivas - ejercicio
Tema:
Profesor:
M. C. Bertha López AzamarTuxtepec, Oaxaca. Diciembre/2010
Universidad del Papaloapan
Materia:
Realice un programa que permita calcular el promedio de tres calificaciones de los alumnos de un grupo (mostrár a cada alumno). Cuando ya no haya más alumnos deberá mostrar:
1. El número de alumnos que calculo el promedio
2. El promedio general de los alumnos
No se sabe cuantos alumnos
ciclo
HACER
Antes del ciclo
Inicializar contador de alumnosInicializar acumulador de promedio grupal
Dentro del ciclo
Pedir las 3 calificacionesCalcular promedio del alumnoMostrarloAcumular promedio grupalIncrementar contador de alumnos
Después del ciclo
Calcular promedio grupalMostrarloMostrar cantidad de alumnos que calcularon su promedio
No se sabe cuantos alumnos
ciclo
HACER
Antes del ciclo
Inicializar contador de alumnosInicializar acumulador de promedio grupal
Dentro del ciclo
Pedir las 3 calificacionesCalcular promedio del alumnoMostrarloAcumular promedio grupalIncrementar contador de alumnos
Después del ciclo
Calcular promedio grupalMostrarloMostrar cantidad de alumnos que calcularon su promedio
resp
ANALISIS
ENTRADA
¿otro alumno? („s‟ para si) (resp – carácter)
PROCESAMIENTOCONDICIONES
Ciclos generalesresp == „s‟
No se sabe cuantos alumnos
ciclo
HACER
Antes del ciclo
Inicializar contador de alumnosInicializar acumulador de promedio grupal
Dentro del ciclo
Pedir las 3 calificacionesCalcular promedio del alumnoMostrarloAcumular promedio grupalIncrementar contador de alumnos
Después del ciclo
Calcular promedio grupalMostrarloMostrar cantidad de alumnos que calcularon su promedio
contAlum = 0
ANALISIS
ENTRADA
¿otro alumno? („s‟ para si) (resp – carácter)
SALIDAContador de alumnos (contAlum – entero) (0)
PROCESAMIENTOCONDICIONES
Ciclos generalesresp == „s‟
No se sabe cuantos alumnos
ciclo
HACER
Antes del ciclo
Inicializar contador de alumnosInicializar acumulador de promedio grupal
Dentro del ciclo
Pedir las 3 calificacionesCalcular promedio del alumnoMostrarloAcumular promedio grupalIncrementar contador de alumnos
Después del ciclo
Calcular promedio grupalMostrarloMostrar cantidad de alumnos que calcularon su promedio
promGpo = 0
ANALISIS
ENTRADA
¿otro alumno? („s‟ para si) (resp – carácter)
SALIDAContador de alumnos (contAlum – entero) (0)Acumulador de promedios del grupo (promGpo –flotante) (0)
PROCESAMIENTOCONDICIONES
Generalesresp == „s‟
No se sabe cuantos alumnos
ciclo
HACER
Antes del ciclo
Inicializar contador de alumnosInicializar acumulador de promedio grupal
Dentro del ciclo
Pedir las 3 calificacionesCalcular promedio del alumnoMostrarloAcumular promedio grupalIncrementar contador de alumnos
Después del ciclo
Calcular promedio grupalMostrarloMostrar cantidad de alumnos que calcularon su promedio
Con una función (AcumularCalif)
ANALISIS
ENTRADA
¿otro alumno? („s‟ para si) (resp – carácter)Calificación del alumno (cal – flotante) (0 a 10)
SALIDAContador de alumnos (contAlum – entero) (0)Acumulador de promedios del grupo (promGpo –flotante) (0)
PROCESAMIENTOCONDICIONES
Para validaciónCal < 0 O cal > 10
Generalesresp == „s‟
No se sabe cuantos alumnos
ciclo
HACER
Antes del ciclo
Inicializar contador de alumnosInicializar acumulador de promedio grupal
Dentro del ciclo
Pedir las 3 calificacionesCalcular promedio del alumnoMostrarloAcumular promedio grupalIncrementar contador de alumnos
Después del ciclo
Calcular promedio grupalMostrarloMostrar cantidad de alumnos que calcularon su promedio
prom= prom / 3
ANALISIS
ENTRADA
¿otro alumno? („s‟ para si) (resp – carácter)Calificación del alumno (cal – flotante) (0 a 10)
SALIDAAcumulador de calificaciones del alumno (promAlum – flotante) (0)Contador de alumnos (contAlum – entero) (0)Acumulador de promedios del grupo (promGpo –flotante) (0)
PROCESAMIENTOFORMULAS
Prom = prom/3
CONDICIONESPara validación
Cal < 0 O cal > 10Generales
resp == „s‟
No se sabe cuantos alumnos
ciclo
HACER
Antes del ciclo
Inicializar contador de alumnosInicializar acumulador de promedio grupal
Dentro del ciclo
Pedir las 3 calificacionesCalcular promedio del alumnoMostrarloAcumular promedio grupalIncrementar contador de alumnos
Después del ciclo
Calcular promedio grupalMostrarloMostrar cantidad de alumnos que calcularon su promedio
promGpo= promGpo + promAlum
ANALISIS
ENTRADA
¿otro alumno? („s‟ para si) (resp – carácter)Calificación del alumno (cal – flotante) (0 a 10)
SALIDAAcumulador de calificaciones del alumno (promAlum – flotante) (0)Contador de alumnos (contAlum – entero) (0)Acumulador de promedios del grupo (promGpo –flotante) (0)
PROCESAMIENTOFORMULAS
PromAlum = promAlum / 3promGpo = promGpo + promAlum
CONDICIONESPara validación
Cal < 0 O cal > 10Generales
resp == „s‟
No se sabe cuantos alumnos
ciclo
HACER
Antes del ciclo
Inicializar contador de alumnosInicializar acumulador de promedio grupal
Dentro del ciclo
Pedir las 3 calificacionesCalcular promedio del alumnoMostrarloAcumular promedio grupalIncrementar contador de alumnos
Después del ciclo
Calcular promedio grupalMostrarloMostrar cantidad de alumnos que calcularon su promedio
contAlum = contAlum + 1
ANALISIS
ENTRADA
¿otro alumno? („s‟ para si) (resp – carácter)Calificación del alumno (cal – flotante) (0 a 10)
SALIDAAcumulador de calificaciones del alumno (promAlum – flotante) (0)Contador de alumnos (contAlum – entero) (0)Acumulador de promedios del grupo (promGpo –flotante) (0)
PROCESAMIENTOFORMULAS
PromAlum = promAlum / 3promGpo = promGpo + promAlumcontAlum = contAlum + 1
CONDICIONESPara validación
Cal < 0 O cal > 10Generales
resp == „s‟
No se sabe cuantos alumnos
ciclo
HACER
Antes del ciclo
Inicializar contador de alumnosInicializar acumulador de promedio grupal
Dentro del ciclo
Pedir las 3 calificacionesCalcular promedio del alumnoMostrarloAcumular promedio grupalIncrementar contador de alumnos
Después del ciclo
Calcular promedio grupalMostrarloMostrar cantidad de alumnos que calcularon su promedio
promGpo= promGpo / contAlum
ANALISIS
ENTRADA
¿otro alumno? („s‟ para si) (resp – carácter)Calificación del alumno (cal – flotante) (0 a 10)
SALIDAAcumulador de calificaciones del alumno (promAlum – flotante) (0)Contador de alumnos (contAlum – entero) (0)Acumulador de promedios del grupo (promGpo –flotante) (0)
PROCESAMIENTOFORMULAS
PromAlum = promAlum / 3promGpo = promGpo + promAlumcontAlum = contAlum + 1promGpo= promGpo / contAlum
CONDICIONESPara validación
Cal < 0 O cal > 10Generales
resp == „s‟
Prom = (cal1 + cal2 + cal3) / 3
Acumular calificaciones
ciclo(DESDE … HASTA)
Antes del ciclo
Inicializar contador de calificaciones introducidasInicializar acumulador de calificaciones
Dentro del ciclo
Pedir calificaciónAcumularla
Después del ciclo
Lo indicado dentro del ciclo HACER
Prom = (cal1 + cal2 + cal3) / 3
Acumular calificaciones
ciclo(DESDE … HASTA)
Antes del ciclo
Inicializar contador de calificaciones introducidasInicializar acumulador de calificaciones
Dentro del ciclo
Pedir calificaciónAcumularlaIncrementar contador de calificaciones
Después del ciclo
Lo indicado dentro del ciclo HACER
cont
ANALISIS
ENTRADA¿otro alumno? („s‟ para si) (resp – carácter)Calificación del alumno (cal – flotante) (0 a 10)
SALIDAAcumulador de calificaciones del alumno (promAlum – flotante) (0)Contador de alumnos (contAlum – entero) (0)Acumulador de promedios del grupo (promGpo –flotante) (0)
TEMPORALESContador de calificaciones (cont – entero) (1)
PROCESAMIENTOFORMULAS
PromAlum = promAlum / 3promGpo = promGpo + promAlumcontAlum = contAlum + 1promGpo= promGpo / contAlum
CONDICIONES
Para validaciónCal < 0 O cal > 10
Generalesresp == „s‟Cont <= 3
Prom = (cal1 + cal2 + cal3) / 3
Acumular calificaciones
ciclo(DESDE … HASTA)
Antes del ciclo
Inicializar contador de calificaciones introducidasInicializar acumulador de calificaciones
Dentro del ciclo
Pedir calificaciónAcumularlaIncrementar contador de calificaciones
Después del ciclo
Lo indicado dentro del ciclo HACERCont = 1
Prom = (cal1 + cal2 + cal3) / 3
Acumular calificaciones
ciclo(DESDE … HASTA)
Antes del ciclo
Inicializar contador de calificaciones introducidasInicializar acumulador de calificaciones
Dentro del ciclo
Pedir calificaciónAcumularlaIncrementar contador de calificaciones
Después del ciclo
Lo indicado dentro del ciclo HACER
promAlum = 0
Prom = (cal1 + cal2 + cal3) / 3
Acumular calificaciones
ciclo(DESDE … HASTA)
Antes del ciclo
Inicializar contador de calificaciones introducidasInicializar acumulador de calificaciones
Dentro del ciclo
Pedir calificaciónAcumularlaIncrementar contador de calificaciones
Después del ciclo
Lo indicado dentro del ciclo HACER
Con una función(leerCalif)
Prom = (cal1 + cal2 + cal3) / 3
Acumular calificaciones
ciclo(DESDE … HASTA)
Antes del ciclo
Inicializar contador de calificaciones introducidasInicializar acumulador de calificaciones
Dentro del ciclo
Pedir calificaciónAcumularlaIncrementar contador de calificaciones
Después del ciclo
Lo indicado dentro del ciclo HACER
promAlum = promAlum + cal
ANALISIS
ENTRADA¿otro alumno? („s‟ para si) (resp – carácter)Calificación del alumno (cal – flotante) (0 a 10)
SALIDAAcumulador de calificaciones del alumno (promAlum – flotante) (0)Contador de alumnos (contAlum – entero) (0)Acumulador de promedios del grupo (promGpo –flotante) (0)
TEMPORALESContador de calificaciones (cont – entero) (1)
PROCESAMIENTOFORMULAS
promAlum = promAlum + calpromAlum = promAlum / 3promGpo = promGpo + promAlumpromGpo= promGpo / contAlumcontAlum = contAlum + 1
CONDICIONESPara validación
Cal < 0 O cal > 10Generales
resp == „s‟Cont <= 3
Prom = (cal1 + cal2 + cal3) / 3
Acumular calificaciones
ciclo(DESDE … HASTA)
Antes del ciclo
Inicializar contador de calificaciones introducidasInicializar acumulador de calificaciones
Dentro del ciclo
Pedir calificaciónAcumularlaIncrementar contador de calificaciones
Después del ciclo
Lo indicado dentro del ciclo HACER
cont = cont + 1
ANALISIS
ENTRADA¿otro alumno? („s‟ para si) (resp – carácter)Calificación del alumno (cal – flotante) (0 a 10)
SALIDAAcumulador de calificaciones del alumno (promAlum – flotante) (0)Contador de alumnos (contAlum – entero) (0)Acumulador de promedios del grupo (promGpo –flotante) (0)
TEMPORALESContador de calificaciones (cont – entero) (1)
PROCESAMIENTOFORMULAS
promAlum = promAlum + calpromAlum = promAlum / 3promGpo = promGpo + promAlumpromGpo= promGpo / contAlumcontAlum = contAlum + 1cont = cont + 1
CONDICIONES
Para validaciónCal < 0 O cal > 10
Generalesresp == „s‟cont <= 3
1. Pedir calificación al alumno2. Acumular Calificación3. ¿son menos de 3 calificaciones?
SI: ir a paso 1NO: ir a paso 4
4. Calcular promedio del alumno5. Mostrarle promedio al alumno6. Acumular promedio general del grupo7. Incrementar contador de alumnos8. ¿otro alumno?
SI: ir a paso 1NO: ir a paso 9
9. Mostrar promedio general del grupo10. Mostrar número de alumnos del grupo11. FIN
1. Pedir calificación al alumno
2. Acumular Calificación
3. ¿son menos de 3 calificaciones?SI: ir a paso 1
NO: ir a paso 4
4. Calcular promedio del alumno
5. Mostrarle promedio al alumno
6. Acumular promedio general del grupo
7. Incrementar contador de alumnos
8. ¿otro alumno?SI: ir a paso 1
NO: ir a paso 9
9. Mostrar promedio general del grupo
10. Mostrar número de alumnos del grupo
11. FIN
Función PedirCal()(HACER MIENTRAS)
Función acumularCal()(DESDE…HASTA)
HACER
ALGORITMO PRINCIPAL
ALGORITMO calculaProm
VARIABLES resp es carácter
promAlum, promGpo son flotante
contAlum es entero
INICIO
FIN
1. Pedir calificación al alumno
2. Acumular Calificación
3. ¿son menos de 3 calificaciones?
SI: ir a paso 1
NO: ir a paso 4
4. Calcular promedio del alumno
5. Mostrarle promedio al alumno
6. Acumular promedio general del grupo
7. Incrementar contador de alumnos
8. ¿otro alumno?
SI: ir a paso 1
NO: ir a paso 9
9. Mostrar promedio general del grupo
10. Mostrar número de alumnos del grupo
11. FIN
ALGORITMO calculaProm
VARIABLES resp es carácterpromAlum, promGpo son flotante
contAlum son entero
INICIOHACER
IMPRIMIR “¿otro alumno? (s-si)”
LEER resp
MIENTRAS resp == „s‟
FIN
1. Pedir calificación al alumno
2. Acumular Calificación
3. ¿son menos de 3 calificaciones?
SI: ir a paso 1
NO: ir a paso 4
4. Calcular promedio del alumno
5. Mostrarle promedio al alumno
6. Acumular promedio general del grupo
7. Incrementar contador de alumnos
8. ¿otro alumno?
SI: ir a paso 1
NO: ir a paso 9
9. Mostrar promedio general del grupo
10. Mostrar número de alumnos del grupo
11. FIN
ALGORITMO calculaProm
VARIABLES resp es carácter
promAlum, promGpo son flotante
contAlum son entero
INICIO
promAlum = 0
contAlum = 0
HACER
IMPRIMIR “¿otro alumno? (s-si)”
LEER resp
MIENTRAS resp == „s‟
promGpo = promGpo / contAlum
IMPRIMIR “Promedio grupal”, promGpo
IMPRIMIR “Alumnos del grupo: “
IMPRIMIR contAlum
FIN
1. Pedir calificación al alumno
2. Acumular Calificación
3. ¿son menos de 3 calificaciones?SI: ir a paso 1
NO: ir a paso 4
4. Calcular promedio del alumno
5. Mostrarle promedio al alumno
6. Acumular promedio general del grupo
7. Incrementar contador de alumnos
8. ¿otro alumno?SI: ir a paso 1
NO: ir a paso 9
9. Mostrar promedio general del grupo
10. Mostrar número de alumnos del grupo
11. FIN
ALGORITMO calculaProm
VARIABLES resp es carácter
promAlum, promGpo son flotante
contAlum son entero
INICIO
promAlum = 0
contAlum = 0
HACERpromAlum = INVOCA acumularCal()
IMPRIMIR “¿otro alumno? (s-si)”
LEER resp
MIENTRAS resp == „s‟
promGpo = promGpo / contAlum
IMPRIMIR “Promedio grupal”, promGpo
IMPRIMIR “Alumnos del grupo: “
IMPRIMIR contAlum
FIN
1. Pedir calificación al alumno
2. Acumular Calificación
3. ¿son menos de 3 calificaciones?SI: ir a paso 1
NO: ir a paso 4
4. Calcular promedio del alumno
5. Mostrarle promedio al alumno
6. Acumular promedio general del grupo
7. Incrementar contador de alumnos
8. ¿otro alumno?SI: ir a paso 1
NO: ir a paso 9
9. Mostrar promedio general del grupo
10. Mostrar número de alumnos del grupo
11. FIN
ALGORITMO calculaProm
VARIABLES resp es carácter
promAlum, promGpo son flotante
contAlum son entero
INICIO
promAlum = 0
contAlum = 0
HACERpromAlum = INVOCA acumularCal()
promAlum = promAlum / 3
IMPRIMIR “Tu promedio es: “, promAlum
promGpo = promGpo + promAlum
contAlum = contAlum + 1
IMPRIMIR “¿otro alumno? (s-si)”
LEER resp
MIENTRAS resp == „s‟
promGpo = promGpo / contAlum
IMPRIMIR “Promedio grupal”, promGpo
IMPRIMIR “Alumnos del grupo: “
IMPRIMIR contAlum
FIN
1. Pedir calificación al alumno
2. Acumular Calificación
3. ¿son menos de 3 calificaciones?SI: ir a paso 1
NO: ir a paso 4
4. Calcular promedio del alumno
5. Mostrarle promedio al alumno
6. Acumular promedio general del grupo
7. Incrementar contador de alumnos
8. ¿otro alumno?SI: ir a paso 1
NO: ir a paso 9
9. Mostrar promedio general del grupo
10. Mostrar número de alumnos del grupo
11. FIN
<PedirCal( cont, ini, fin son enteros)
VARIABLES cal es flotante
INICIOIMPRIMIR “Dame la calificación:“, cont,”:”
LEER cal
HACER MIENTRAS cal < ini O cal > fin
IMPRIMIR “Error, calificación incorrecta”
IMPRIMIR “debe ser entre 0 y 10”
IMPRIMIR “Vuelva a introducirla: “
LEER cal
FIN HACER MIENTRAS
DEVOLVER cal
FIN
1. Pedir calificación al alumno
2. Acumular Calificación
3. ¿son menos de 3 calificaciones?SI: ir a paso 1
NO: ir a paso 4
4. Calcular promedio del alumno
5. Mostrarle promedio al alumno
6. Acumular promedio general del grupo
7. Incrementar contador de alumnos
8. ¿otro alumno?SI: ir a paso 1
NO: ir a paso 9
9. Mostrar promedio general del grupo
10. Mostrar número de alumnos del grupo
11. FIN
acumularCal( )
VARIABLES prom es flotantecont es entero
INICIOIMPRIMIR “A continuación introduce”
IMPRIMIR “las tres calificaciones:”
DESDE cont = 1 HASTA cont <=3
cont = cont + 1
FIN DESDE
DEVOLVER prom
FIN
1. Pedir calificación al alumno
2. Acumular Calificación
3. ¿son menos de 3 calificaciones?
SI: ir a paso 1
NO: ir a paso 4
4. Calcular promedio del alumno
5. Mostrarle promedio al alumno
6. Acumular promedio general del grupo
7. Incrementar contador de alumnos
8. ¿otro alumno?
SI: ir a paso 1
NO: ir a paso 9
9. Mostrar promedio general del grupo
10. Mostrar número de alumnos del grupo
11. FIN
acumularCal( )
VARIABLES prom es flotante
cont es entero
INICIO
IMPRIMIR “A continuación introduce”
IMPRIMIR “las tres calificaciones:”
prom = 0
DESDE cont = 1 HASTA cont <=3prom = prom + INVOCA PedirCal(cont, 0, 10)
cont = cont + 1
FIN DESDE
DEVOLVER prom
FIN
Realice un programa que permita calcular el promedio de tres calificaciones de los alumnos de un grupo. Cuando ya no haya más alumnos deberá permitir realizar las siguientes consultas:
1. Ver una calificación de un alumno.2. Ver todas las calificaciones de un alumno.3. Ver el promedio de un alumno.4. Ver los promedios de todos los alumnos5. Ver el número de alumnos que calculo su promedio
y el promedio general de los alumnos.
Además deberá guardar el nombre del alumno.
Convertir ahora el algoritmo a que maneje arreglos, para poder hacer las consultas.
Siga manejándose el número abierto de alumnos, sin embargo se contempla que 40 es el número máximo de alumnos del grupo más grande.
0 1 2 3
0
1
… … … … …39
Cal1 Cal2 Cal3 prom
Datos de
los
alumnos
ANALISIS
ENTRADA¿otro alumno? („s‟ para si) (resp – carácter)Calificación del alumno (cal – flotante) (0 a 10)
SALIDAAcumulador de calificaciones del alumno (promAlum – flotante) (0)Contador de alumnos (contAlum – entero) (0)Acumulador de promedios del grupo (promGpo –flotante) (0)
TEMPORALESContador de calificaciones (cont – entero) (1)
PROCESAMIENTOFORMULAS
promAlum = promAlum + calpromAlum = promAlum / 3promGpo = promGpo + promAlumpromGpo= promGpo / contAlumcontAlum = contAlum + 1cont = cont + 1
CONDICIONES
Para validaciónCal < 0 O cal > 10
Generalesresp == „s‟cont <= 3
Para almacenar las calificaciones y promedios
(calif[40][4] es flotante) (0 a 10)
ANALISISENTRADA
¿otro alumno? („s‟ para si) (resp – carácter)Para almacenar las calificaciones y promedios (calif[40][4] es flotante) (0 a 10)
Para guardar el nombre del alumno (nombre – cadena)SALIDA
Contador de alumnos (contAlum – entero) (0)Acumulador de promedios del grupo (promGpo –flotante) (0)
TEMPORALESContador de calificaciones (cont – entero) (1)
PROCESAMIENTOFORMULAS
promAlum = promAlum + calpromAlum = promAlum / 3promGpo = promGpo + promAlumpromGpo= promGpo / contAlumcontAlum = contAlum + 1cont = cont + 1
CONDICIONES
Para validaciónCal < 0 O cal > 10
Generalesresp == „s‟cont <= 3
ALGORITMO calculaProm
VARIABLES resp es carácter
calif[40][4], promGpo son flotante
contAlum son entero
nombre es cadena
INICIO
promAlum = 0
contAlum = 0
HACER
promAlum = INVOCA acumularCal()
promAlum = promAlum / 3
IMPRIMIR “Tu promedio es: “, promAlum
promGpo = promGpo + promAlum
contAlum = contAlum + 1
IMPRIMIR “¿otro alumno? (s-si)”
LEER resp
MIENTRAS resp == „s‟
prromGpo = promGpo / contAlum
IMPRIMIR “Promedio grupal”, promGpo
IMPRIMIR “Alumnos del grupo: “
IMPRIMIR contAlum
FIN
Como índice de las columnas se usara a : Contador de calificaciones (cont – entero)
En este caso para que se corresponda con la primera posición de columna debe inicializarse en 0.
Como índice de los renglones se usara a : Contador de alumnos (contAlum – entero) (0)
En este caso la inicialización en cero, permite comenzar a poner los datos del primeralumno en la posición cero. Dentro del ciclo HACER se incrementa este contador,quedando listo para la siguiente vez apuntar al siguiente a capturar. Téngase cuidadoen este aspecto ya que no debe olvidar que el contador estará siempre apuntando unaposición más delante del ultimo renglón capturado.
Esta variable es importante porque nos indica el número de alumnos que han introducidosus calificaciones. Pero no olvidemos que el arreglo la primera posición es 0, así quela ultima posición donde hay datos es la posición contAlum-1
0 1 2 3
0
1
… … … … …39
cont
contAlum
Así se tiene que la calificación 1 (cal1) se ubica enla columna 0, cal2 en columna 1 y cal3 en columna2 y promedio en columna 3
Por tanto las referencias serían
Calif[contAlum][0] si observamos en el algoritmo
Calif[contAlum][1] las posiciones 0 a 2 las controla
Calif[contAlum][2] el DESDE … HASTA con lavariable cont por lo que pueden referenciarse en comunen el ciclo con: Calif[contAlum][cont]
Calif[contAlum][3]
0 1 2 3
0
1
… … … … …39
cont
contAlum
ANALISIS
ENTRADA¿otro alumno? („s‟ para si) (resp – carácter)Para almacenar las calificaciones y promedios (calif[40][4]
Para guardar el nombre del alumno (nombre – cadena)SALIDA
Contador de alumnos (contAlum – entero) (0)Acumulador de promedios del grupo (promGpo –flotante) (0)
TEMPORALESContador de calificaciones (cont – entero) (1)
PROCESAMIENTOFORMULAS
promAlum = promAlum + calpromAlum = promAlum / 3promGpo = promGpo + promAlumpromGpo= promGpo / contAlumcontAlum = contAlum + 1cont = cont + 1
CONDICIONES
Para validaciónCal < 0 O cal > 10
Generalesresp == „s‟cont <= 3
c
Calif[contAlum][3] = Calif[contAlum][3] + Calif[contAlum][cont]
Calif[contAlum][3] = Calif[contAlum][3] / 3promGpo = promGpo + Calif[contAlum][3]
ANALISIS
ENTRADA¿otro alumno? („s‟ para si) (resp – carácter)Para almacenar las calificaciones y promedios (calif[40][4]
Para guardar el nombre del alumno (nombre – cadena)SALIDA
Contador de alumnos (contAlum – entero) (0)Acumulador de promedios del grupo (promGpo –flotante) (0)
TEMPORALESContador de calificaciones (cont – entero) (1)
PROCESAMIENTOFORMULAS
Calif[contAlum][3] = Calif[contAlum][3] + Calif[contAlum][cont]
Calif[contAlum][3] = Calif[contAlum][3] / 3promGpo = promGpo + Calif[contAlum][3]
promGpo= promGpo / contAlumcontAlum = contAlum + 1cont = cont + 1
CONDICIONES
Para validaciónCal < 0 O cal > 10
Generalesresp == „s‟cont <= 3
ALGORITMO calculaProm
VARIABLES resp es carácter
calif[40][4], promGpo son flotante
contAlum son entero
nombre es cadena
INICIO
promAlum = 0
contAlum = 0
HACERCalif[contAlum][3]= INVOCA acumularCal()
Calif[contAlum][3]= Calif[contAlum][3]/ 3
IMPRIMIR “Tu promedio es: “, Calif[contAlum][3]
promGpo = promGpo + Calif[contAlum][3]
contAlum = contAlum + 1
IMPRIMIR “¿otro alumno? (s-si)”
LEER resp
MIENTRAS resp == „s‟
prromGpo = promGpo / contAlum
IMPRIMIR “Promedio grupal”, promGpo
IMPRIMIR “Alumnos del grupo: “
IMPRIMIR contAlum
FIN
acumularCal( )
VARIABLES cont es entero
INICIOIMPRIMIR “Nombre del alumno: “
LEER nombre[contAlum]
IMPRIMIR “A continuación introduce”
IMPRIMIR “las tres calificaciones:”
Calif[contAlum][3]= 0
DESDE cont = 1 HASTA cont <=3Calif[contAlum][cont] = INVOCA PedirCal(cont+1, 0, 10)
Calif[contAlum][3]= Calif[contAlum][3]+ Calif[contAlum][cont]
cont = cont + 1
FIN DESDE
DEVOLVER prom
FIN
Recordar que con contAlum -1 se indicará la posición del renglón de calificaciones del último alumno (contAlum indica en si mismo la posición donde podría capturarse el siguiente registro)
0 1 2 3
0
1
… … … … …39
cont
contAlum
LO SIGUIENTE A IMPLEMENTAR SON LAS CONSULTAS:
1. Ver una calificación de un alumno.
2. Ver todas las calificaciones de un alumno.
3. Ver el promedio de un alumno.
4. Ver los promedios de todos los alumnos
5. Ver el número de alumnos que calculo su promedio y el promedio general de los alumnos.
Para implementarlas, debemos tener un menú (talcomo se observa en la lista) y una sentenciaalternativa desde donde se llamen a lasfunciones que hagan cada una de las tareas.
ANALISIS
ENTRADA¿otro alumno? („s‟ para si) (resp – carácter)Para almacenar las calificaciones y promedios (calif[40][4]
Para guardar el nombre del alumno (nombre – cadena)
Para leer la opcion de la consulta a realizar (op es entero) (1 a 5)SALIDA
Contador de alumnos (contAlum – entero) (0)Acumulador de promedios del grupo (promGpo –flotante) (0)
TEMPORALESContador de calificaciones (cont – entero) (1)
PROCESAMIENTOFORMULAS
Calif[contAlum][3] = Calif[contAlum][3] + Calif[contAlum][cont]
Calif[contAlum][3] = Calif[contAlum][3] / 3promGpo = promGpo + Calif[contAlum][3]
promGpo= promGpo / contAlumcontAlum = contAlum + 1cont = cont + 1
CONDICIONES
Para validacióncal < 0 O cal > 10op < 1 O op >5
Generalesresp == „s‟cont <= 3
ALGORITMO calculaProm
VARIABLES resp es carácter
calif[40][4] es flotante
contAlum , op son entero
nombre es cadena
INICIO
contAlum = 0
HACERCalif[contAlum][3]= INVOCA acumularCal()
Calif[contAlum][3]= Calif[contAlum][3]/ 3
IMPRIMIR “Tu promedio es: “, Calif[contAlum][3]
contAlum = contAlum + 1
IMPRIMIR “¿otro alumno? (s-si)”
LEER resp
MIENTRAS resp == „s‟
op = INVOCA menuConsultas()
//aquí va a ir la sentencia alternativaFIN
c
Pudiera mandarse este
código a un modulo, para
separar funcionalidades.
<menuConsulta()
VARIABLES op es entero
INICIOHACER
IMPRIMIR “1. Ver una calificación de un alumno.”
IMPRIMIR “2. Ver todas las calificaciones de un alumno.”
IMPRIMIR “3. Ver el promedio de un alumno.”
IMPRIMIR “4. Ver los promedios de todos los alumnos”
IMPRIMIR “5. Ver el número de alumnos que calculo su“
IMPRIMIR “promedio y el promedio general de los”
IMPRIMIR alumnos.”
IMPRIMIR “Elige una opcion: ”
LEER op
MIENTRAS (op < 1 O op >5)
DEVOLVER op
FIN
La consulta del punto 5 (Ver el número de alumnos que calculo su promedio y el promedio general de los alumnos) en si ya se tiene resuelta con el acumulador promGpo y con el contador contAlum.
Sin embargo es posible realizar un recorrido de la columna 3 del arreglo para poder ir acumulando los promedios y calcularlo, sin tener que haber ido acumulándolo en el ciclo HACER.
Esto se implementa con un ciclo DESDE … HASTA, el cual necesitara a si mismo una variable (ejemplo reutilizar cont) que permita controlar el ciclo, desde 0 hasta la posición del último renglón capturado ( contAlum– 1) 0 1 2 3
0
1
… … … … …39
cont
contAlum
Op5_PromedioGeneral()
VARIABLES cont es enteropromGpo es flotante
INICIOpromGpo=0
DESDE cont = 0 hasta cont < contAlumn
promGpo = promGpo + calif[cont][3]
cont = cont + 1
FIN DESDE
promGpo = promGpo / contAlum
IMPRIMIR “Promedio grupal”, promGpo
IMPRIMIR “Alumnos del grupo: “
IMPRIMIR contAlum
FIN
La consulta del punto 4 (Ver los promedios de todos los alumnos”)
Realizar un recorrido de la columna 3 del arreglo para poder ir mostrando los promedios y del arreglo nombres ir mostrando los nombres
Esto se implementa con un ciclo DESDE … HASTA, el cual necesitara a si mismo una variable (ejemplo reutilizar cont) que permita controlar el ciclo, desde 0 hasta la posición del último renglón capturado ( contAlum – 1)
0 1 2 3
0
1
… … … … …39
cont
contAlum
Op4_MostrarPromedios()
VARIABLES cont es entero
promGpo es flotante
INICIO
IMPRIMIR “Promedios de todos los alumnos”
DESDE cont = 0 hasta cont < contAlumn
IMPRIMIR nombre[cont] , “ “, calif[cont][3]
cont = cont + 1
FIN DESDE
FIN
Las consultas 1 , 2 y 3 todas tratan acerca de un alumno1. Ver una calificación de un alumno.
2. Ver todas las calificaciones de un alumno.
3. Ver el promedio de un alumno.
Por lo tanto necesita mostrársele al usuario la lista de nombres de alumnos, para que elija uno, por eso debe hacerse una función que realice esa tarea, recorriendo e imprimiendo el contenido del arreglo de nombres.
0 1 … 39
contcontAlum
<menuNombres()
VARIABLES op , cont es entero
INICIOHACER
DESDE cont = 0 HASTA cont < contAlum
IMPRIMIR cont, “ “, nombre[cont]
FIN DESDE
IMPRIMIR “Elige una opcion: ”
LEER op
MIENTRAS (op < 1 O op >= contAlum)
DEVOLVER op-1
FIN
MostrarUnaCalif()
VARIABLES parcial, alum es entero
INICIOIMPRIMIR “Calificación de un alumno en un parcial”
alum = MenuNombres()
parcial = INVOCA PedirParcial()
IMPRIMIR “La calificación del parcial ”, parcial, “ de “
IMPRIMIR nombre[alum], “ es: “, calif[alum-1][parcial-1]
FIN
PedirParcial()
VARIABLE parcial es entero
INICIOIMPRIMIR “¿De que parcial? (1, 2, 3)”
LEER parcial
HACER MIENTRAS parcial < 1 O parcial >3
IMPRIMIR “ERROR, el valor debe ser entre 1 y 3, introdúcelo otra vez”
LEER parcial
FIN HACER MIENTRAS
DEVOLVER parcial
FIN
MostrarTodasCalifUnAlumno()
VARIABLES parcial, alum es entero
INICIOIMPRIMIR “Todas las calificaciones de un alumno”
alum = MenuNombres()
DESDE parcial = 0 HASTA parcial < 3
IMPRIMIR “La calificación del parcial ”, parcial,
IMPRIMIT “ es: “, calif[alum-1][parcial-1]”
parcial = parcial + 1
FIN DESDE
FIN
MostrarTodasCalif()
VARIABLES parcial, alum es entero
INICIOIMPRIMIR “Todas las calificaciones de un alumno”
alum = MenuNombres()
IMPRIMIR “El promedio de ”, nombre[alum-1]
IMPRIMIT “ es: “, calif[alum-1][3]”
FIN
MostrarTodasCalifTodos()
VARIABLES parcial, alum es entero
INICIOIMPRIMIR “Todas las calificaciones de un todos los alumnos”
DESDE alum = 0 HASTA alum < contAlum
IMPRIMIR alum, “. “, nombre[alum]
DESDE parcial = 0 HASTA parcial < 3
IMPRIMIR “Parcial ”, parcial, “ : “, calif[alum][parcial]
parcial = parcial + 1
FIN DESDE
alum = alum + 1
FIN DESDE
FIN