M. C. Bertha López Azamarblopez/ProgramacionEstructurada/Diapo… · Acumulador de promedios del...

68
7. Sentencias de Control Repetitivas - ejercicio Tema: Profesor: M. C. Bertha López Azamar Tuxtepec, Oaxaca. Diciembre/2010 Universidad del Papaloapan Materia:

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

<PedirCal( cont, ini, fin son enteros)

VARIABLES cal es flotante

INICIO

DEVOLVER cal

FIN

acumularCal( )

VARIABLES prom es flotante

cont es entero

INICIO

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

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