ENUNCIADO DEL EJERCICIO 3
3. Se está realizando un estudio estadístico de los clientes que entran a un supermercado en cada hora a partir de su hora de apertura durante un día. El supermercado abre 8 horas al día y los datos de cuántas personas han entrado al supermercado en cada hora se encuentran almacenados en un array definido como personasEntran(1), personasEntran(2), … hasta personasEntran(8 ). Se desea desarrollar el pseudocódigo y el diagrama de flujo para un programa que usando “Desde … Siguiente” y “Si … Entonces” determine:
a) El total de personas que entraron al supermercado en el día.
b) Cuántas horas no entró ninguna persona y cuáles fueron.
c) Cuál fue la hora en la que entró el mayor número de personas.
d) El número medio de personas por hora que entraron al supermercado.
RESPUESTA APORTADA AL EJERCICIO 5
1.Inicio
2.Desde i = 1 a 8 Hacer
3.Leer i
4.PersonasTotales = PersonasTotales + personasEntran(i)
Mostrar “El número de personas que entraron al supermercado durante el día fue de”, PersonasTotales
5.Si personasEntran(i) = 0 Entonces
HorasCero = HorasCero +1
Mostrar “El número de horas en la que no entraron clientes al supermercado fueron de”, HorasCero
Mortrar “Las horas en las que no entraron clientes al supermercado fueron”, i
FinSi
6.Si personasEntran(i) > MayorNum Entonces
MayorNum = personasEntran(i)
Mostrar “La hora en la que entraron mayor número de personas fue”, MayorNum
FinSi
7.PersonasMedia=PersonasTotales/8
Mostrar “El número medio de personas que entraron al supermercado por hora fue de”, PersonasMedia
Siguiente
8.Fin
CORRECCIONES A REALIZAR
La línea 3 está mal expresada. Leer i no tiene sentido. i es la variable de control del bucle y lo que hace es contar 1, 2, 3, ... Se entiende que debe ser Leer personasEntran(i), es decir, extraer un dato que se encuentra almacenado de alguna manera para que pase a estar disponible.
La instrucción Mostrar “El número de personas que entraron al supermercado durante el día fue de”, PersonasTotales se encuentra dentro del bucle. El bucle se repite 8 veces, luego esta instrucción se repetirá 8 veces. ¿Es esto correcto? No, hay cálculos o instrucciones que se deben ejecutar antes del bucle, otras dentro del bucle y otras una vez terminado el bucle.
Tarea: reflexionar sobre qué se debe ejecutar antes del bucle, dentro del bucle y una vez terminado el bucle. Reescribir el algoritmo teniendo en cuenta esto.
Orientación 1: normalmente antes del bucle preparamos los cálculos, dentro del bucle hacemos cálculos y después del bucle mostramos resultados. Decimos "normalmente" porque siempre hay que reflexionar al respecto, no hay una norma fija.
Orientación 2: recordar que lo que se encuentra dentro del bucle se repetirá tantas veces como se ejecute el bucle. Si queremos mostrar 1 resultado no tiene lógica que lo mostremos 8 veces por ejemplo. En cambio, si estamos sumando las veces que ocurre algo sí tiene lógica que contabilicemos cuántas veces sucedió para el dato 1, cuántas veces para el dato 2, ... cuántas veces para el dato n.
Orientación 3: el diagrama de flujo no refleja la repetición de procesos (bucle) ¿Por qué? Recordar que un desde ... siguiente o cualquier otro bucle implica una repetición de procesos hasta que se cumple una condición de salida. Es imprescindible tener esto en cuenta para comprender la algoritmia que estamos estudiando.
Nota: primer paso es responder el algoritmo, antes de hacer el diagrama de flujo.