Autor Tema: Ejercicio 7 Semana 7 - Ayuda curso tutorizado on-line bases programación  (Leído 3967 veces)

JValero

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 27
    • Ver Perfil
Hola a todos,

Estoy completamente estancado y necesito vuestra ayuda para abrirme los ojos con el ejercicio 7 correspondiente a la semana 7 del curso de fundamentos de programación.

He creado el pseudocódigo pero soy incapaz de generar el código en VB. Me gustaría empezar por el principio: ¿Es correcto el pseudocódigo?. Porque si no lo es, desde luego estoy perdiendo el tiempo y ya llevo un retraso considerable en la entrega de los ejercicios (lo siento Mario  :D )

El pseudocódigo es el siguiente:

1. Inicio
 2. Desde i=1 hasta 8 Hacer
   2.1 Leer PersonasTotal
   2.2 PersonasTotal=PersonasTotal + personasEntran(i)
   2.3 Si personasEntran(i)=0 Entonces
         TransitoCero=TransitoCero + 1
         Mostrar "La hora", i, "hubo tránsito cero"
         FinSi
   2.4 Si personasEntran(i)>MaxTransito
         MaxTransito = personasEntran(i)
         HoraMaxTran = i
         FinSi
   Siguiente
 3. Media=PersonasTotal / 8
 4. Mostrar "El total de personas que pasaron fue ", PersonasTotal
 5. Mostar "Las horas de tránsito cero fueron ", TransitoCero
 6. Mostrar "La hora con mayor tránsito fue ", HoraMaxTran
 7. Mostrar "El número medio de personas por hora que entran al supermercado es ", Media
8. Fin


En primer lugar querría saber si el pseudocódigo es correcto y, en caso negativo, qué habría que cambiar.

Agradecería una ayuda para empezar con el código pues, como os comentaba, estoy completamente atascado.

Espero podáis ayudarme.

Muchas gracias,
Javier.
         
« Última modificación: 02 de Septiembre 2014, 18:37 por Alex Rodríguez »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:Ejercicio 7 Semana 7 - Ayuda
« Respuesta #1 en: 08 de Abril 2014, 08:50 »
Buenos días, a continuación aclaraciones y orientaciones, cualquier cosa que haga falta aclarar indícamelo y tratamos de aclararlo.


Veamos el pseudocódigo.

Lo primero que tenemos que pensar es qué variables servirán para almacenar datos de entrada, qué variables servirán para almacenar cálculos o resultados y qué variables serán variables auxiliares por ejemplo para controlar la progresión de valores en un bucle.

Las variables que tienen datos de entrada son las que requieren de una instrucción Leer (que equivaldría a leer los datos desde un archivo o pedirle los datos al usuario).

Las variables para almacenar cálculos o resultados no requieren de una instrucción leer, ya que son variables cuyo contenido definimos nosotros como programadores.

Variables que contienen los datos de entrada: personasEntran(1), personasEntran(2), ... así hasta personasEntran( 8 )
 
Variables que usamos para almacenar cálculos o resultados: personasTotal, transitoCero, maxTransito, media

Variables para controlar la progresión de bucles: i


Cosas incorrectas en el pseudocódigo planteado:

1) La variable personasTotal es una variable para almacenar resultados, por tanto no requiere de una instrucción Leer, ya que no es un dato "externo" al programa, sino un resultado que nosotros vamos a obtener. Por otro lado, si Leer PersonasTotal lo escribiéramos dentro del bucle, significa que se va a repetir 8 veces. Las repeticiones las necesitamos para ir realizando operaciones que necesitan ser repetidas, en este caso no tendría sentido repetir 8 veces esta instrucción.

Conclusión: la línea 2.1 no es correcta tal y como está.

2) Sería correcto (aunque no obligatorio) definir después de la línea de inicio una línea que contenga lo siguiente: personasTotal = 0. ¿Qué significaría esto? Que al empezar el programa la variable personasTotal vale cero. Esto quizás podríamos darlo por supuesto, pero si lo escribimos lo dejamos indicado para que no haya dudas. No es obligatorio, ya que suponemos que toda variable numérica inicialmente tiene valor cero.

3) Tenemos 8 datos relacionados con las personas que entran: personasEntran(1), personasEntran(2) ... por tanto tenemos que hacer 8 veces la lectura (lo cual haremos dentro del bucle). Por tanto la línea 2.1 es lógico que contenga la instrucción Leer personasEntran(i)

La línea 2.2 es correcta: en cada pasada del bucle le vamos sumando a lo que teníamos como total las personas que han entrado en esa hora.

La línea 2.3 es correcta

La línea 2.4 es correcta.

Las líneas 3, 4, 5, 6, 7, 8 son correctas.



Veamos ahora cómo podríamos plantear el código:

En primer lugar tendremos que declarar las variables que vamos a usar. Todas ellas son de tipo entero (ya que no estamos trabajando con decimales). Importante: repasar cómo se declara un array.

En el form_load (es decir, cuando cargue el formulario) tendremos que hacer lo que nos indica el enunciado: Los datos de partida se deben incorporar en el propio código al principio del programa. Por tanto tendremos que escribir cuáles son los datos de partida (los escribimos nosotros mismos porque no los vamos a leer desde un archivo). Por tanto escribiremos (tomo como valores los propuestos en el ejercicio 4):

personasEntran(1) = 0
personasEntran(2) = 32
personasEntran(3) = 47
personasEntran(4) = 22
personasEntran(5) = 0
personasEntran(6) = 31
personasEntran(7) = 0
personasEntran( 8 ) = 87

A continuación necesitaremos escribir un bucle For ... Next utilizando las variables, condicionales y un label para mostrar mensajes.

Tener en cuenta que para ir añadiendo contenido a un label sin borrar el contenido anterior tendremos que usar una sintaxis como: Label2 = Label2 & "A las " & i & " horas no entró ninguna persona" & vbCrLf

Si escribiéramos Label2 = "A las " & i & " horas no entró ninguna persona" & vbCrLf se borraría el contenido previo que tuviera el label.

Cuando termine el for, tendremos que usar labels para mostrar los resultados.

Orientación sobre el diseño del formulario:

No usaremos ningún textbox ya que no vamos a pedir datos al usuario (los datos los vamos a escribir nosotros mismos en el código como hemos indicado antes)

Se pueden usar los siguientes labels:

Label1 para mostrar un mensaje informativo y título del programa

Label2 para mostrar las horas a las que no entró ninguna persona

Label3 para mostrar el total de personas que entraron en el día

Label4 para mostrar cuántas horas no entró ninguna persona

Label5 para mostrar la hora a la que entró el mayor número de personas

Label6 para mostrar el número medio de personas

Esto es orientativo, podemos usar más o menos labels según se considere oportuno.

Saludos.

JValero

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 27
    • Ver Perfil
Re:Ejercicio 7 Semana 7 - Ayuda
« Respuesta #2 en: 09 de Abril 2014, 09:28 »
Muchas gracias Mario.

Voy a ponerlo en práctica hoy mismo: tanto cambiar el pseudocódigo como comenzar con la escritura del código.

Cualquier consulta, si no te importa, continuaré haciéndola mediante el foro.

Una vez más, gracias y disculpa el retraso en la entrega.

Saludos.

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:Ejercicio 7 Semana 7 - Ayuda
« Respuesta #3 en: 09 de Abril 2014, 10:13 »
No te preocupes, si ves que no puedes avanzar escribe una consulta. Saludos.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".