Resumen: Entrega nº 53 del curso Bases de la programación Nivel I.
Codificación aprenderaprogramar.com: CU00154A

 

 

 

EJERCICIO EJEMPLO RESUELTO CON FOR NEXT. PSEUDOCÓDIGO Y DIAGRAMA DE FLUJO.

Crear el pseudocódigo y el diagrama de flujo para un programa que muestre todos los enteros comprendidos entre un número definido por el usuario y 100.

 

 

 

SOLUCIÓN

Pseudocódigo:

1. Inicio [Ejercicio resuelto pseudocódigo aprenderaprogramar.com]

2. Mostrar “Introduzca un número entero comprendido entre 1 y 99” : Pedir Num

3. Desde i = Num hasta 100 Hacer

Mostrar i

Siguiente

4. Fin

 

 

Diagrama de flujo:

 

 

EJERCICIO

Se ha procedido a realizar un conteo de los coches que han pasado por una vía durante 24 horas. Los resultados se encuentran almacenados en un archivo, en un array definido como cocheshora(1), cocheshora(2)... hasta cocheshora(24) indicando el localizador la hora del día y el contenido de la variable la cantidad de coches que pasaron a esa hora. Se desea desarrollar el pseudocódigo y el diagrama de flujo para un programa que determine:

a) El total de coches que pasaron durante el día.

b) Cuántas horas de tránsito cero hubo y cuáles fueron.

c) Cuál fue la hora de máximo tránsito y qué número de coches pasaron.

d) Cuál fue la última hora a la que pasó un coche y qué número de coches pasaron.

 

 

SOLUCIÓN

Como venimos exponiendo, los problemas a partir de una mínima complejidad, como es el caso, pueden resolverse de distinta maneras.

Vamos a introducir como paso necesario en el proceso de aprendizaje de la programación un planteamiento de organización de variables. Será previo al pseudocódigo y al diagrama de flujo, que se construirán con apoyo en este planteamiento.

Para nuestro caso usaremos una organización como sigue:

Variable Descripción – Uso

i, j, k

Uso como contadores

cocheshora(i)

Almacena el número de coches que han pasado en la hora i

Cochestotal

Almacena el total de coches que han pasado en el día

Transitocero

Almacena la cantidad de horas en que ha existido tránsito cero

Maxtransito

Almacena la cantidad de coches que pasaron en la hora de máximo tránsito

Horamaxtran

Almacena la hora a la que se produjo el máximo tránsito

Ultimahora

Almacena la última hora en la que hubo tránsito

Cochesultima

Almacena la cantidad de coches que pasaron en la última hora en la que hubo tránsito

 

 

La organización de variables supone una reflexión respecto a qué variables vamos a usar, sus características y sus nombres. Esta reflexión que ahora planteamos como “recomendable” se convertirá, como veremos más adelante, en obligatoria para una buena programación.

 

Pseudocódigo:

1. Inicio [Pseudocódigo aprenderaprogramar.com]

2. Desde i = 1 hasta 24 Hacer

2.1 Leer cocheshora(i)

2.2 Cochestotal = Cochestotal + cocheshora(i)

2.3 Si cocheshora(i) = 0 Entonces

Transitocero = Transitocero + 1

Mostrar “La hora”, i, “hubo tránsito cero”

FinSi

2.4 Si cocheshora(i) > Maxtransito Entonces

Maxtransito = cocheshora(i)

Horamaxtran = i

FinSi

2.5 Si cocheshora(i) > 0 Entonces

Ultimahora = i

Cochesultima = cocheshora(i)

FinSi

Siguiente

3. Mostrar “El total de coches que pasaron durante el día fueron”, Cochestotal

4. Mostrar “Las horas de tránsito cero fueron”, Transitocero

5. Mostrar “La hora de máximo tránsito fue la”, Horamaxtran, “registrándose el paso de”, Maxtransito, “coches”

6. Mostrar “La última hora a la que pasó un coche fue la”, Ultimahora, “registrándose el paso de“, Cochesultima, “coches”

7. Fin

 

 

Suponiendo una tabla de datos iniciales como:

Hora

Número de coches

Hora

Número de coches

1

0

13

2665

2

0

14

2111

3

53

15

1973

4

109

16

1655

5

715

17

1711

6

1788

18

1621

7

2623

19

1118

8

2530

20

932

9

2211

21

955

10

2115

22

732

11

2222

23

117

12

2331

24

45

 

 

Los resultados del programa serían los siguientes:

La hora 1 hubo tránsito cero

La hora 2 hubo tránsito cero

El total de coches que pasaron durante el día fueron 32332

Las horas de tránsito cero fueron 2

La hora de máximo tránsito fue la 13 registrándose el paso de 2665 coches

La última hora a la que pasó un coche fue la 24 registrándose el paso de 45 coches

 

 

Comentarios: La variable i se corresponde con lo que hemos denominado un “contador”. Es decir, un elemento que toma valores ordenadamente.

Pero hay otras variables interesantes como Cochestotal, que acumula información a partir de su valor anterior, o la variable Transitocero, que cuenta la cantidad de veces que se produce una situación.

 

Diagrama de flujo:

 

 

El programa se ha planteado con un sólo bucle, aunque podría haberse pensado en una sucesión de bucles (uno para leer datos, otro para calcular el total de coches, otro por cada uno de los Si...). Hacerlo con un sólo bucle supone mayor economía. Recordemos que no sólo la economía – eficiencia es lo que cuenta: hay que tener en cuenta objetivos y organización del programa. Si perdiendo economía mejoramos la claridad, es una cuestión a valorar.

Por si alguien se pierde, repasaremos lo que hace el programa suponiendo que trabaja con los datos del ejemplo anterior. Recordemos que estamos considerando que el valor inicial de las variables es vacío o cero. Si no fuera así tendríamos que hacer una declaración inicial: i = 0, Cochestotal = 0, Transitocero = 0, Maxtransito = 0, Horamaxtran = 0, Ultimahora = 0, Cochesultima = 0.

Comenzamos. Tras el inicio, se encuentra el bucle. Se asigna a i valor 1, se comprueba que es menor que el valor final y se entra en el bucle. Se extrae el valor cocheshora(1), que es cero. Se hace Cochestotal igual a su valor anterior (cero) más el valor de cocheshora(1), con lo cual Cochestotal sigue valiendo cero. Se analiza si cocheshora(1) es igual a cero. Al resultar que sí se hace la variable Transitocero igual a su valor anterior más 1, resultado que toma valor 1. Se muestra el mensaje “La hora 1 hubo tránsito cero”. Se analiza si cocheshora(1) es mayor que Maxtransito, y al valer ambas cero no se cumple la condición. Se analiza si cocheshora(1) es mayor que cero resultando que no. Termina el bucle y se vuelve al comienzo. Se incrementa i en una unidad, pasando a valer 2. Se extrae el valor cocheshora(2) y se repite el proceso.

El bucle se repite hasta que una vez pasado con el valor 24 y vuelto al origen, adquiere i el valor 25, no cumpliéndose la condición para entrar en el bucle y desviándose el flujo a la siguiente instrucción después de éste.

 

 

 

 

 

 

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link:  Ver curso completo.

Para  hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

 

Descargar archivo: