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.