Orientaciones para realizar el ejercicio 8 de la semana 7 del curso Bases de la programación nivel I.
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.
Importante: en este tipo de ejercicios usamos arrays combinándolos con bucles desde … siguiente de forma que para recorrer el array usamos un bucle, nunca escribimos una por una las variables que forman el array excepto si tenemos que asignarles un valor inicial.
Nota: en lugar de personasEntran(1), personasEntran(2), … hasta personasEntran( 8 ) podemos usar personasEntran(0), personasEntran(1), … personasEntran(7).
8. Crear un programa en Visual Basic que realice la tarea planteada en el ejercicio 3. Los datos de partida se deben incorporar en el propio código al principio del programa. Para ello tendrás que hacer las declaraciones de variables o arrays oportunas. Como respuesta a este ejercicio se debe entregar el texto que conforma el código y una captura de pantalla con el programa mostrando resultados.
La lógica del programa a crear es análoga a la del ejercicio 18 (página 159 del libro) relativo a un conteo de coches.
Una cosa a tener en cuenta es que el enunciado del ejercicio nos indica: "Los datos de partida se deben incorporar en el propio código al principio del programa."
Esto quiere decir que en lugar de pedir los datos de partida al usuario o leerlos desde un archivo, simplemente los incluiremos directamente al inicio del programa (si estamos con Visual Basic en el form_load, para que se carguen nada más iniciarse el programa).
Ejemplo:
Public Class Form1
Dim personasEntran(8) As Integer, personasTotal%, transitoCero%, maxTransito%, horaMaxTransito%
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
personasEntran(0) = 0
personasEntran(1) = 32
personasEntran(2) = 47
personasEntran(3) = 22
personasEntran(4) = 0
personasEntran(5) = 31
personasEntran(6) = 0
personasEntran(7) = 87
'Aquí podemos procesar los datos usando un bucle for
'Aquí podemos mostrar los resultados usando labels
End Sub
End Class
Nota: aquí hemos usado índices para el array comprendidos entre 0 y 7. Otra opción es usar índices entre 1 y 8.
Nota: los datos que hemos tomado son los propuestos en el ejercicio 4.
4. Indica cuáles serían los resultados que obtendríamos con el pseudocódigo anterior si en la primera hora entraron 0 personas, en la segunda 32 personas, en la tercera 47 personas, en la cuarta 22 personas, en la quinta 0 personas, en la sexta 31 personas, en la séptima 0 personas y en la octava 87 personas.
La escritura del programa en Visual Basic seguirá una lógica similar a la del ejercicio 77 en la página 520, con las siguientes diferencias:
- No necesitamos un botón para leer datos desde un archivo, ya que los datos los hemos incluido directamente en el programa
- No necesitamos las instrucciones de apertura de archivo ni de lectura de datos de archivo ni de cierre de archivo, ya que los datos los hemos incluido directamente en el programa
- No necesitamos un botón calcular. Podemos realizar todo el proceso en el form_load si queremos.
- Hemos de tener cuidado con los índices. Si usamos los índices de 0 a 7, tener cuidado (en el libro los índices se han tomado comenzando en 1), por ejemplo los bucles serán del tipo for i=0 to 7 en lugar de for i=1 to 8.
Otra opción sería incluir un botón de modo que el proceso no se ejecute al iniciarse el programa, sino al pulsar el botón. En ese caso tendríamos que incluir los datos de partida tras el button_click para que estén accesibles.
Puede ser de interés consultar el código en
http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=279:ejercicios-resueltos-en-visual-basic-ejemplos-leer-datos-desde-ficheros-bucles-for-next-if-then-cu00330a&catid=37:curso-aprender-a-programar-visual-basic-desde-cero&Itemid=61Aquí hay que tener en cuenta las mismas consideraciones que hemos comentado anteriormente.
Recomendación: para quien no se sienta seguro, comenzar desarrollando procesos básicos. Una forma de empezar sería la siguiente:
Crear un programa básico (programa nº1) que realice lo siguiente:
a) Cargar los datos
b) Usando un bucle for mostrar los datos en un formato similar al siguiente:
En la hora 1 entraron 0 personas
En la hora 2 entraron 32 personas
En la hora 3 entraron 47 personas
En la hora 4 entraron 22 personas
En la hora 5 entraron 0 personas
En la hora 6 entraron 31 personas
En la hora 7 entraron 0 personas
En la hora 8 entraron 87 personas
Una vez tengamos este programa funcionando, lo guardamos y a continuación crearemos un programa donde ampliaremos los procesos que se realizan.
Saludos