Sunteți pe pagina 1din 39

UNIVERSIDAD NACIONAL ABIERTA

ÁREA DE MATEMÁTICA
C CARRERA MATEMÁTICA

TRABAJO PRÁCTICO: X

ASIGNATURA: COMPUTACIÓN I

CÓDIGO: 323

FECHA DE ENTREGA DE LAS ESPECIFICACIONES AL ESTUDIANTE:


En la primera semana de presentación de prueba, a través del asesor
de la asignatura de su centro local.

FECHA DE DEVOLUCIÓN DEL INFORME POR EL ESTUDIANTE


Adjunto a la Segunda Prueba Integral

NOMBRE DEL ESTUDIANTE: LEANDRO ORTÍZ

CÉDULA DE IDENTIDAD: 18.609.651

CENTRO LOCAL: ANZOÁTEGUI CARRERA: 126

NÚMERO DE ORIGINALES: 1

FIRMA DEL ESTUDIANTE:


LAPSO: 2018/1
RESULTADOS DE CORRECCIÓN:
OBJ. N° 1 2 3 4 5 6 7 8 9 10 11 12 13
0:NL 1: L
Índice
Introducción ------------------------------------------------------------------------------------------ 3

Especificaciones y planteamiento del problema -------------------------------------------- 4

Solución analítica del problema ----------------------------------------------------------------- 7

Objetivo 5: Solución del problema planteado utilizando la Metodología MAPS ---- 9

Objetivo 6: Diseño del algoritmo usando técnicas de programación


estructurada ---------------------------------------------------------------------------------------- 15

Objetivo 7: Prueba del algoritmo propuesto utilizando el concepto de robustez – 27

Objetivo 8: Codificación del algoritmo en el lenguaje Pascal -------------------------- 28

Conclusiones --------------------------------------------------------------------------------------- 37

Recomendaciones -------------------------------------------------------------------------------- 38

Introducción

2
El presente trabajo práctico se realiza como una evaluación de los objetivos 5, 6, 7
y 8 de la materia Computación I (código 323), perteneciente al pensum de la
carrera Matemática (código 126) de la Universidad Nacional Abierta.

En dicho trabajo se hace uso de las herramientas estudiadas en el texto de la


materia para la resolución de un problema mediante un programa de
computadora. Tales herramientas son el análisis del problema planteado, el uso
de la tecnología MAPS (Mathematic Algorithm Problem Solving), realización de
pseudocódigo, haciendo uso de las técnicas de programación estructurada,
evaluación del algoritmo a través del concepto de robustez, y la elaboración del
programa de computación a través del lenguaje Pascal.

Estas herramientas permitirán resolver el problema planteado con todas las


condiciones exigidas.

TRABAJO PRÁCTICO
COMPUTACIÓN I (323)

3
LAPSO 2018-1

Especificaciones y planteamiento del problema

El INTTT Caracas ha acumulado información referente a las infracciones de los


límites de velocidad durante un determinado periodo de tiempo. El Instituto ha
dividido la ciudad en cuatro cuadrantes y desea realizar una estadística de las
infracciones a los límites de velocidad en cada uno de ellos. Para cada infracción
se ha preparado una tarjeta que contiene la siguiente información:

Fecha de la infracción,
Número de registro del vehículo,
Cuadrante en el que se produjo la infracción,
Límite de velocidad en Km/hora,
Velocidad Registrada en Km/hora (Velocidad del Infractor),
Multa.

Diseñe un programa en Pascal, para generar 2 reportes o informes; el primero


que contenga una lista de la multa de velocidades recolectadas por mes, donde la
multa se calcula como la suma del costo de la corte (Bs. 100000) más Bs. 50000
por cada Km/h que exceda la velocidad limite. Prepare el primer reporte o informe
con los siguientes resultados, Ver Reporte Nro.1.

4
Reporte Nro 1

Reporte Nro 2

En el cuadro Nro. 1 se presentan cada uno de los cuadrantes con sus respectivas
zonas, urbanizaciones y los límites de velocidad.

5
Cuadro Nro 1

6
Solución analítica del problema

Para solucionar el problema planteado, suponemos que el programador recibe


todas las tarjetas de infracciones del período considerado, supongamos que son
20, y el programa a realizar es netamente para mostrar los resultados de manera
ordenada, calcular el monto total de las multas y los promedios de multas
mensuales de cada cuadrante. Es decir, el programa no tiene que leer información
ingresada por el teclado, porque ya el programador tiene esa información a la
mano al momento de realizar el programa.

La información contenida en las tarjetas de infracciones se almacena en variables,


una por cada columna del reporte. Para el primer reporte, las fechas de cada
tarjeta se almacenarán en las variables Fi (F1, F2, …, F20), donde los números
representan la fila correspondiente a la tarjeta de infracción. El número de registro
del vehículo de cada tarjeta se almacenarán en las variables Ri (R1, R2, …, R20),
los números de los cuadrantes en las variables Ci (C1, C2, C3 y C4), las zonas en
las variables Zn, Zs, Ze y Zo, para las zonas norte, sur, este y oeste,
respectivamente. Las urbanizaciones se almacenarán en las variables Ui (U1, U2,
…, U20), las velocidades registradas en las variables Vi (V1, V2, …, V20), las
velocidades límites de cada cuadrante se almacenarán en las variables Vli (Vl1,
Vl2, Vl3 y Vl4), los montos de las multas en las variables Mi (M1, M2, …, M20), la
suma de todas las multas se almacenará en la variable Mt.

Para el segundo reporte, la cantidad de multas de cada cuadrante se almacenarán


en las variables Si (S1, S2, S3 y S4), y el promedio de multas de cada cuadrante
se almacenarán en las variables Pi (P1, P2, P3 y P4).

Mt se calculará sumando el monto de todas las multas, es decir:

7
Mt = M1 + M2 + … + M20

Las variables Pi calculan el promedio de multas de cada cuadrante, es decir:

P1 = (M1 + M2 + M3 + M4 + M5) / 5

P2 = (M6 + M7 + M8 + M9 + M10) / 5

P3 = (M11 + M12 + M13 + M14 + M15) / 5

P4 = (M16 + M17 + M18 + M19 + M20) / 5

Donde a cada cuadrante se le ha asignado cinco tarjetas de infracción.

Finalmente, el programa mostrará los dos reportes en forma de tablas, con sus
encabezados y sus filas correspondientes a cada tarjeta de infracción, como lo
requiere la asignación.

8
Objetivo 5: Solución del problema planteado utilizando la
Metodología MAPS

1) El diálogo

Al establecer un diálogo mental con las pautas dadas por el profesor de la materia
para la elaboración del trabajo práctico, el autor definió cuáles serían los valores
de entrada y de salida que tendría el programa a crear, los mismos se muestran
en el cuadro Nro 2:

ENTRADA SALIDA
Información contenida Dos reportes. El reporte
en las tarjetas de 1 muestra la información
infracción, como fecha ingresada organizada en
de cada infracción, N° de forma de tabla,
registro del vehículo, N° calculando, además, el
del cuadrante donde monto total de las
sucedió cada infracción, multas registradas. El
la zona, la urbanización, reporte 2 muestra en
la velocidad registrada, forma de tabla, para
la velocidad límite de cada cuadrante, el
cada cuadrante y la número y el promedio de
multa aplicada a cada multas por mes
infracción

Cuadro Nro 2: valores de entrada y de salida planificados para el programa

2) Las especificaciones

Para construir de una forma más precisa las especificaciones del programa, las
cuales servirán para clarificar los detalles de la solución del problema, se
establecieron unas pre-condiciones y unas post-condiciones.

Para las pre-condiciones se establecieron 8 conjuntos de variables de entrada, los


cuales son los siguientes:

9
{pre: entrada 1 = (F1, F2, …, F20) Ʌ i (1, 2, …, 20) Fi es la fecha de la

infracción señalada en la boleta}

{pre: entrada 2 = (R1, R2, …, R20) Ʌ i (1, 2, …, 20) Ri es el número de registro

del vehículo de cada boleta de infracción}

{pre: entrada 3 = (C1, C2, C3, C4) Ʌ i (1, 2, 3, 4) Ci es el número del

cuadrante donde se cometió la infracción}

{pre: entrada 4 = (Zn, Zs, Ze, Zo) Ʌ Zn, Zs, Ze, Zo son las zonas donde se
cometieron infracciones, a saber, norte, sur, este y oeste, respectivamente}

{pre: entrada 5 = (U1, U2, …, U20) Ʌ i (1, 2, …, 20) Ui es la urbanización

donde se cometió la infracción}

{pre: entrada 6 = (V1, V2, …, V20) Ʌ i (1, 2, …, 20) Vi es la velocidad

registrada de cada infracción}

{pre: entrada 7 = (Vl1, Vl2, Vl3, Vl4) Ʌ i (1, 2, 3, 4) Vli es la velocidad límite de

cada cuadrante, 1, 2, 3 y 4, respectivamente}

{pre: entrada 8 = (M1, M2, …, M20) Ʌ i (1, 2, …, 20) Mi es la multa aplicada a

cada infracción}

La post-condición para este problema puede definirse de la forma siguiente:

{post: entrada = Ø Ʌ salida = Reporte 1 Ʌ Reporte 2}

10
Donde:

El Reporte 1 mostrará los valores de Fi, Ri, Ci, (Zn, Zs, Ze y Zo), Ui, Vi, Vli, Mi y
Mt, que es la suma de todas las multas, en forma de tabla.

El Reporte 2 mostrará el número total de multas y el promedio del monto de dichas


multas para cada cuadrante de forma mensual.

3) La partición

Nuestra solución debe generar dos reportes en forma de tabla. El primero


mostrará la información de cada boleta de infracción de manera ordenada. Dicha
información se refiere a la fecha de la infracción, el número de registro del
vehículo, el cuadrante donde se cometió la infracción, la zona, la urbanización, la
velocidad registrada, la velocidad límite permitida en cada cuadrante, la multa
calculada para cada boleta y la suma de todas las multas. Para el caso de la multa
correspondiente a cada boleta, el programa la calculará y mostrará el resultado,
según las especificaciones del problema dadas (multa = 100.000 + 50 * (Vi – Vli)),
es decir, 100.000 Bs por el costo de la corte, más 50 Bs por cada km/h de exceso
de velocidad con respecto a la velocidad límite permitida en cada cuadrante.

El segundo reporte calcula y muestra de forma ordenada la cantidad de multas


correspondientes a cada cuadrante en el período considerado de un mes.
También calcula el promedio de las multas de cada cuadrante para el período
considerado.

Las rutinas correspondientes al programa son las siguientes:

11
Recibir la información de cada boleta, Calcular la multa de cada boleta (Mi),
correspondiente a: fecha de la según la ecuación:
infracción, el número de registro del Mi = 100.000 + 50 * (Vi – Vli)
vehículo (Fi), el cuadrante donde se Calcular la suma de las multas (Mt).
cometió la infracción (Ci), la zona (Zj), la Mostrar los resultados de Fi, Ci, Zj,Ui,Vi,
urbanización (Ui), la velocidad registrada Vli, Mi y Mt en una tabla llamada
(Vi) y la velocidad límite permitida en Reporte 1.

Calcular la cantidad de boletas de


infracción y el promedio de las multas
de cada cuadrante en el período
considerado de 1 mes. Mostrar estos
resultados de forma ordenada en una
tabla llamada Reporte 2.

Elementos de datos

Fechas (Fi) Fechas en las que se cometieron las infracciones


N° de registros (Ri) Números de registros de los vehículos infractores
Cuadrantes (Ci) Cuadrantes donde se cometieron las infracciones
Zonas (Zj) Zonas en donde se cometieron las infracciones
Urbanizaciones (Ui) Urbanizaciones en donde se cometieron las infracciones
Velocidades (Vi) Velocidades registradas en las boletas
Velocidades límite (Vli) Velocidades límite permitidas en cada cuadrante
Multas calculadas (Mi) Mi = 100.000 + 50 * (Vi – Vli)

Multa total (Mt)

Figura N° 1: Partición en rutinas y elementos de datos para nuestro problema

Y el orden inicial y las especificaciones de nuestro problema son las siguientes:

{pre: entrada 1 = (F1, F2, …, F20) Ʌ i (1, 2, …, 20) Fi es la fecha de la

infracción señalada en la boleta}

12
{pre: entrada 2 = (R1, R2, …, R20) Ʌ i (1, 2, …, 20) Ri es el número de registro

del vehículo de cada boleta de infracción}

{pre: entrada 3 = (C1, C2, C3, C4) Ʌ i (1, 2, 3, 4) Ci es el número del

cuadrante donde se cometió la infracción}

{pre: entrada 4 = (Zn, Zs, Ze, Zo) Ʌ Zn, Zs, Ze, Zo son las zonas donde se
cometieron infracciones, a saber, norte, sur, este y oeste, respectivamente}

{pre: entrada 5 = (U1, U2, …, U20) Ʌ i (1, 2, …, 20) Ui es la urbanización

donde se cometió la infracción}

{pre: entrada 6 = (V1, V2, …, V20) Ʌ i (1, 2, …, 20) Vi es la velocidad

registrada de cada infracción}

{pre: entrada 7 = (Vl1, Vl2, Vl3, Vl4) Ʌ i (1, 2, 3, 4) Vli es la velocidad límite de

cada cuadrante, 1, 2, 3 y 4, respectivamente}

{pre: entrada 8 = (M1, M2, …, M20) Ʌ i (1, 2, …, 20) Mi es la multa aplicada a

cada infracción}

13
Paso 1: Recibir la información de cada Paso 2: Calcular la multa de cada boleta
boleta, correspondiente a: fecha de la (Mi), según la ecuación:
infracción, el número de registro del Mi = 100.000 + 50 * (Vi – Vli)
vehículo (Fi), el cuadrante donde se cometió Calcular la suma de las multas (Mt).
la infracción (Ci), la zona (Zj), la urbanización Mostrar los resultados de Fi, Ci, Zj,Ui,Vi,
(Ui), la velocidad registrada (Vi) y la Vli, Mi y Mt en una tabla llamada
velocidad límite permitida en cada Reporte 1.

Paso 3: Calcular la cantidad de boletas


de infracción y el promedio de las
multas de cada cuadrante en el período
considerado de 1 mes. Mostrar estos
resultados de forma ordenada en una
tabla llamada Reporte 2.

{post: entrada = Ø Ʌ salida = Reporte 1 Ʌ Reporte 2}

Figura N° 2: Orden inicial y especificaciones para nuestro problema

14
Objetivo 6: Diseño del algoritmo usando técnicas de
programación estructurada

Representación del algoritmo en pseudocódigo

Algoritmo Trabajo_Practico

var

Cadena: F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20

Entero: R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20

Entero: C1, C2, C3, C4

Caracter: Zn, Zs, Ze, Zo

Cadena: U1, U2, U3, U4, U5, U6, U7, U8, U9, U10, U11, U12, U13, U14, U15, U16, U17, U18, U19,
..U20

Entero: V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20

Entero: Vl1, Vl2, Vl3, Vl4

Real: M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16, M17, M18,
..M19, M20

Real: Mt

Entero: S1, S2, S3, S4

Real: P1, P2, P3, P4

inicio

F1 ← '10/01/2018'

F2 ← '15/01/2018'

F3 ← '20/01/2018'

F4 ← '25/01/2018'

F5 ← '30/01/2018'

15
F6 ← '01/02/2018'

F7 ← '10/02/2018'

F8 ← '15/02/2018'

F9 ← '20/02/2018'

F10 ← '25/02/2018'

F11 ← '01/03/2018'

F12 ← '10/03/2018'

F13 ← '15/03/2018'

F14 ← '20/03/2018'

F15 ← '25/03/2018'

F16 ← '01/04/2018'

F17 ← '10/04/2018'

F18 ← '15/04/2018'

F19 ← '20/04/2018'

F20 ← '25/04/2018'

R1 ← 123

R2 ← 567

R3 ← 912

R4 ← 952

R5 ← 107

R6 ← 456

R7 ← 891

R8 ← 457

R9 ← 105

R10 ← 832

R11 ← 789

R12 ← 345

R13 ← 790

R14 ← 329

16
R15 ← 953

R16 ← 234

R17 ← 678

R18 ← 385

R19 ← 475

R20 ← 506

C1 ← 1

C2 ← 2

C3 ← 3

C4 ← 4

Zn ← 'N'

Zs ← 'S'

Ze ← 'E'

Zo ← 'O'

U1 ← 'Catia'

U2 ← '23 de Enero'

U3 ← 'Propatria'

U4 ← 'Lomas de Urdaneta'

U5 ← 'Catia'

U6 ← 'Los Chaguaramos'

U7 ← 'Colinas de los Chaguaramos'

U8 ← 'Santa Monica'

U9 ← 'Colinas de Santa Monica'

U10 ← 'Las Acacias'

U11 ← 'Barrio Nuevo'

U12 ← 'Bucaral'

U13 ← 'Country Club'

U14 ← 'El Pedregal'

U15 ← 'San Marino'

17
U16 ← 'Catia 23 de Enero'

U17 ← 'Nueva Caracas'

U18 ← 'Propatria'

U19 ← 'Lomas de Urdaneta'

U20 ← 'Casalta'

V1 ← 35

V2 ← 40

V3 ← 56

V4 ← 37

V5 ← 52

V6 ← 55

V7 ← 43

V8 ← 67

V9 ← 83

V10 ← 49

V11 ← 55

V12 ← 60

V13 ← 74

V14 ← 80

V15 ← 77

V16 ← 40

V17 ← 88

V18 ← 67

V19 ← 50

V20 ← 66

Vl1 ← 30

Vl2 ← 40

Vl3 ← 45

Vl4 ← 35

18
M1 ← 100000+50*(V1-Vl1)

M2 ← 100000+50*(V2-Vl1)

M3 ← 100000+50*(V3-Vl1)

M4 ← 100000+50*(V4-VL1)

M5 ← 100000+50*(V5-Vl1)

M6 ← 100000+50*(V6-Vl2)

M7 ← 100000+50*(V7-Vl2)

M8 ← 100000+50*(V8-Vl2)

M9 ← 100000+50*(V9-Vl2)

M10 ← 100000+50*(V10-Vl2)

M11 ← 100000+50*(V11-Vl3)

M12 ← 100000+50*(V12-Vl3)

M13 ← 100000+50*(V13-Vl3)

M14 ← 100000+50*(V14-Vl3)

M15 ← 100000+50*(V15-Vl3)

M16 ← 100000+50*(V16-Vl4)

M17 ← 100000+50*(V17-Vl4)

M18 ← 100000+50*(V18-Vl4)

M19 ← 100000+50*(V19-Vl4)

M20 ← 100000+50*(V20-Vl4)

Mt ←
.M1+M2+M3+M4+M5+M6+M7+M8+M9+M10+M11+M12+M13+M14+M15+M16+M17+M18+M19
.+M20

S1 ← 5

S2 ← 5

S3 ← 5

S4 ← 5

P1 ← (M1+M2+M3+M4+M5)/5

P2 ← (M6+M7+M8+M9+M10)/5

P3 ← (M11+M12+M13+M14+M15)/5

19
P4 ← (M16+M17+M18+M19+M20)/5

escribir ('Reporte 1: Infracciones a los limites de velocidad')

escribir

escribir ('/ Fecha de la infraccion / ', 'Numero de registro del vehiculo / ', 'Numero de cuadrante /
', 'Zona / ', 'Urbanizacion / ', 'Velocidad registrada (km/h) / ', 'Velocidad limite (km/h) / ', 'Multa
(Bs) /')

escribir

escribir ('/ ', F1, ' / ', R1, ' / ', C1, ' / ', Zn, ' / ', U1, ' / ', V1, ' / ', Vl1, ' / ', M1, ' /')

escribir ('/ ', F2, ' / ', R2, ' / ', C1, ' / ', Zn, ' / ', U2, ' / ', V2, ' / ', Vl1, ' / ', M2, ' /')

escribir ('/ ', F3, ' / ', R3, ' / ', C1, ' / ', Zn, ' / ', U3, ' / ', V3, ' / ', Vl1, ' / ', M3, ' /')

escribir ('/ ', F4, ' / ', R4, ' / ', C1, ' / ', Zn, ' / ', U4, ' / ', V4, ' / ', Vl1, ' / ', M4, ' /')

escribir ('/ ', F5, ' / ', R5, ' / ', C1, ' / ', Zn, ' / ', U5, ' / ', V5, ' / ', Vl1, ' / ', M5, ' /')

escribir ('/ ', F6, ' / ', R6, ' / ', C2, ' / ', Zs, ' / ', U6, ' / ', V6, ' / ', Vl2, ' / ', M6, ' /')

escribir ('/ ', F7, ' / ', R7, ' / ', C2, ' / ', Zs, ' / ', U7, ' / ', V7, ' / ', Vl2, ' / ', M7, ' /')

escribir ('/ ', F8, ' / ', R8, ' / ', C2, ' / ', Zs, ' / ', U8, ' / ', V8, ' / ', Vl2, ' / ', M8, ' /')

escribir ('/ ', F9, ' / ', R9, ' / ', C2, ' / ', Zs, ' / ', U9, ' / ', V9, ' / ', Vl2, ' / ', M9, ' /')

escribir ('/ ', F10, ' / ', R10, ' / ', C2, ' / ', Zs, ' / ', U10, ' / ', V10, ' / ', Vl2, ' / ', M10, ' /')

escribir ('/ ', F11, ' / ', R11, ' / ', C3, ' / ', Ze, ' / ', U11, ' / ', V11, ' / ', Vl3, ' / ', M11, ' /')

escribir ('/ ', F12, ' / ', R12, ' / ', C3, ' / ', Ze, ' / ', U12, ' / ', V12, ' / ', Vl3, ' / ', M12, ' /')

escribir ('/ ', F13, ' / ', R13, ' / ', C3, ' / ', Ze, ' / ', U13, ' / ', V13, ' / ', Vl3, ' / ', M13, ' /')

escribir ('/ ', F14, ' / ', R14, ' / ', C3, ' / ', Ze, ' / ', U14, ' / ', V14, ' / ', Vl3, ' / ', M14, ' /')

escribir ('/ ', F15, ' / ', R15, ' / ', C3, ' / ', Ze, ' / ', U15, ' / ', V15, ' / ', Vl3, ' / ', M15, ' /')

escribir ('/ ', F16, ' / ', R16, ' / ', C4, ' / ', Zo, ' / ', U16, ' / ', V16, ' / ', Vl4, ' / ', M16, ' /')

escribir ('/ ', F17, ' / ', R17, ' / ', C4, ' / ', Zo, ' / ', U17, ' / ', V17, ' / ', Vl4, ' / ', M17, ' /')

escribir ('/ ', F18, ' / ', R18, ' / ', C4, ' / ', Zo, ' / ', U18, ' / ', V18, ' / ', Vl4, ' / ', M18, ' /')

escribir ('/ ', F19, ' / ', R19, ' / ', C4, ' / ', Zo, ' / ', U19, ' / ', V19, ' / ', Vl4, ' / ', M19, ' /')

escribir ('/ ', F20, ' / ', R20, ' / ', C4, ' / ', Zo, ' / ', U20, ' / ', V20, ' / ', Vl4, ' / ', M20, ' /')

escribir

escribir ('La suma de todas las multas es: ', Mt, ' Bs')

escribir

20
escribir

{Ahora presentamos el Reporte 2}

escribir ('Reporte 2: Promedio de multas por cuadrante')

escribir

escribir ('/ ', 'Cuadrante', ' / ', 'Mes', ' / ', 'Numero de multas', ' / ', 'Promedio mensual de multas',
' /')

escribir

escribir ('/ ', 1, ' / ', 'Enero', ' / ', S1, ' / ', P1, ' /')

escribir ('/ ', 2, ' / ', 'Febrero', ' / ', S2, ' / ', P2, ' /')

escribir ('/ ', 3, ' / ', 'Marzo', ' / ', S3, ' / ', P3, ' /')

escribir ('/ ', 4, ' / ', 'Abril', ' / ', S4, ' / ', P4, ' /')

fin

21
Representación del algoritmo en diagrama N-S

La representación del algoritmo en un diagrama N-S es la siguiente:

inicio
F1 ← '10/01/2018'
F2 ← '15/01/2018'
F3 ← '20/01/2018'
F4 ← '25/01/2018'
F5 ← '30/01/2018'
F6 ← '01/02/2018'
F7 ← '10/02/2018'
F8 ← '15/02/2018'
F9 ← '20/02/2018'
F10 ← '25/02/2018'
F11 ← '01/03/2018'
F12 ← '10/03/2018'
F13 ← '15/03/2018'
F14 ← '20/03/2018'
F15 ← '25/03/2018'
F16 ← '01/04/2018'
F17 ← '10/04/2018'
F18 ← '15/04/2018'
F19 ← '20/04/2018'
F20 ← '25/04/2018'
R1 ← 123
R2 ← 567
R3 ← 912
R4 ← 952
R5 ← 107
R6 ← 456
R7 ← 891
R8 ← 457
R9 ← 105
R10 ← 832
R11 ← 789
R12 ← 345
R13 ← 790
R14 ← 329

22
R15 ← 953
R16 ← 234
R17 ← 678
R18 ← 385
R19 ← 475
R20 ← 506
C1 ← 1
C2 ← 2
C3 ← 3
C4 ← 4
Zn ← 'N'
Zs ← 'S'
Ze ← 'E'
Zo ← 'O'
U1 ← 'Catia'
U2 ← '23 de Enero'
U3 ← 'Propatria'
U4 ← 'Lomas de Urdaneta'
U5 ← 'Catia'
U6 ← 'Los Chaguaramos'
U7 ← 'Colinas de los Chaguaramos'
U8 ← 'Santa Monica'
U9 ← 'Colinas de Santa Monica'
U10 ← 'Las Acacias'
U11 ← 'Barrio Nuevo'
U12 ← 'Bucaral'
U13 ← 'Country Club'
U14 ← 'El Pedregal'
U15 ← 'San Marino'
U16 ← 'Catia 23 de Enero'
U17 ← 'Nueva Caracas'
U18 ← 'Propatria'
U19 ← 'Lomas de Urdaneta'
U20 ← 'Casalta'
V1 ← 35
V2 ← 40
V3 ← 56
V4 ← 37
V5 ← 52
V6 ← 55
V7 ← 43
V8 ← 67
V9 ← 83
V10 ← 49
V11 ← 55
V12 ← 60
V13:= 74;

23
V14 ← 80
V15 ← 77
V16 ← 40
V17 ← 88
V18 ← 67
V19 ← 50
V20 ← 66
Vl1 ← 30
Vl2 ← 40
Vl3 ← 45
Vl4 ← 35
M1 ← 100000+50*(V1-Vl1)
M2 ← 100000+50*(V2-Vl1)
M3 ← 100000+50*(V3-Vl1)
M4 ← 100000+50*(V4-VL1)
M5 ← 100000+50*(V5-Vl1)
M6 ← 100000+50*(V6-Vl2)
M7 ← 100000+50*(V7-Vl2)
M8 ← 100000+50*(V8-Vl2)
M9 ← 100000+50*(V9-Vl2)
M10 ← 100000+50*(V10-Vl2)
M11 ← 100000+50*(V11-Vl3)
M12 ← 100000+50*(V12-Vl3)
M13 ← 100000+50*(V13-Vl3)
M14 ← 100000+50*(V14-Vl3)
M15 ← 100000+50*(V15-Vl3)
M16 ← 100000+50*(V16-Vl4)
M17 ← 100000+50*(V17-Vl4)
M18 ← 100000+50*(V18-Vl4)
M19 ← 100000+50*(V19-Vl4)
M20 ← 100000+50*(V20-Vl4)
Mt ←
.M1+M2+M3+M4+M5+M6+M7+M8+M9+M10+M11+M12+M13+M14+M15+M16+M17+M18+M1
9.+M20
S1 ← 5
S2 ← 5
S3 ← 5
S4 ← 5
P1 ← (M1+M2+M3+M4+M5)/5
P2 ← (M6+M7+M8+M9+M10)/5
P3 ← (M11+M12+M13+M14+M15)/5
P4 ← (M16+M17+M18+M19+M20)/5

24
escribir ('Reporte 1: Infracciones a los limites de velocidad')
escribir
escribir ('/ Fecha de la infraccion / ', 'Numero de registro del vehiculo / ', 'Numero de cuadrante /
', 'Zona / ', 'Urbanizacion / ', 'Velocidad registrada (km/h) / ', 'Velocidad limite (km/h) / ', 'Multa
(Bs) /')
escribir
escribir ('/ ', F1, ' / ', R1, ' / ', C1, ' / ', Zn, ' / ', U1, ' / ', V1, ' / ', Vl1, ' / ', M1, ' /')
escribir ('/ ', F2, ' / ', R2, ' / ', C1, ' / ', Zn, ' / ', U2, ' / ', V2, ' / ', Vl1, ' / ', M2, ' /')
escribir ('/ ', F3, ' / ', R3, ' / ', C1, ' / ', Zn, ' / ', U3, ' / ', V3, ' / ', Vl1, ' / ', M3, ' /')
escribir ('/ ', F4, ' / ', R4, ' / ', C1, ' / ', Zn, ' / ', U4, ' / ', V4, ' / ', Vl1, ' / ', M4, ' /')
escribir ('/ ', F5, ' / ', R5, ' / ', C1, ' / ', Zn, ' / ', U5, ' / ', V5, ' / ', Vl1, ' / ', M5, ' /')
escribir ('/ ', F6, ' / ', R6, ' / ', C2, ' / ', Zs, ' / ', U6, ' / ', V6, ' / ', Vl2, ' / ', M6, ' /')
escribir ('/ ', F7, ' / ', R7, ' / ', C2, ' / ', Zs, ' / ', U7, ' / ', V7, ' / ', Vl2, ' / ', M7, ' /')
escribir ('/ ', F8, ' / ', R8, ' / ', C2, ' / ', Zs, ' / ', U8, ' / ', V8, ' / ', Vl2, ' / ', M8, ' /')
escribir ('/ ', F9, ' / ', R9, ' / ', C2, ' / ', Zs, ' / ', U9, ' / ', V9, ' / ', Vl2, ' / ', M9, ' /')
escribir ('/ ', F10, ' / ', R10, ' / ', C2, ' / ', Zs, ' / ', U10, ' / ', V10, ' / ', Vl2, ' / ', M10, ' /')
escribir ('/ ', F11, ' / ', R11, ' / ', C3, ' / ', Ze, ' / ', U11, ' / ', V11, ' / ', Vl3, ' / ', M11, ' /')
escribir ('/ ', F12, ' / ', R12, ' / ', C3, ' / ', Ze, ' / ', U12, ' / ', V12, ' / ', Vl3, ' / ', M12, ' /')
escribir ('/ ', F13, ' / ', R13, ' / ', C3, ' / ', Ze, ' / ', U13, ' / ', V13, ' / ', Vl3, ' / ', M13, ' /')
escribir ('/ ', F14, ' / ', R14, ' / ', C3, ' / ', Ze, ' / ', U14, ' / ', V14, ' / ', Vl3, ' / ', M14, ' /')
escribir ('/ ', F15, ' / ', R15, ' / ', C3, ' / ', Ze, ' / ', U15, ' / ', V15, ' / ', Vl3, ' / ', M15, ' /')
escribir ('/ ', F16, ' / ', R16, ' / ', C4, ' / ', Zo, ' / ', U16, ' / ', V16, ' / ', Vl4, ' / ', M16, ' /')
escribir ('/ ', F17, ' / ', R17, ' / ', C4, ' / ', Zo, ' / ', U17, ' / ', V17, ' / ', Vl4, ' / ', M17, ' /')
escribir ('/ ', F18, ' / ', R18, ' / ', C4, ' / ', Zo, ' / ', U18, ' / ', V18, ' / ', Vl4, ' / ', M18, ' /')
escribir ('/ ', F19, ' / ', R19, ' / ', C4, ' / ', Zo, ' / ', U19, ' / ', V19, ' / ', Vl4, ' / ', M19, ' /')
escribir ('/ ', F20, ' / ', R20, ' / ', C4, ' / ', Zo, ' / ', U20, ' / ', V20, ' / ', Vl4, ' / ', M20, ' /')
escribir
escribir ('La suma de todas las multas es: ', Mt, ' Bs')
escribir
escribir

escribir ('Reporte 2: Promedio de multas por cuadrante')


escribir
escribir ('/ ', 'Cuadrante', ' / ', 'Mes', ' / ', 'Numero de multas', ' / ', 'Promedio mensual de multas', '
/')
escribir
escribir ('/ ', 1, ' / ', 'Enero', ' / ', S1, ' / ', P1, ' /')
escribir ('/ ', 2, ' / ', 'Febrero', ' / ', S2, ' / ', P2, ' /')

25
escribir ('/ ', 3, ' / ', 'Marzo', ' / ', S3, ' / ', P3, ' /')
escribir ('/ ', 4, ' / ', 'Abril', ' / ', S4, ' / ', P4, ' /')
fin

Figura N° 3: Representación del algoritmo en un diagrama N-S

Representación del algoritmo en diagrama de flujo

La representación del algoritmo en un diagrama de flujo es la siguiente:

Figura N° 4: Representación del algoritmo en un diagrama de flujo

Objetivo 7: Prueba del algoritmo propuesto utilizando el concepto


de robustez

26
Al analizar el algoritmo propuesto en el punto anterior, se puede observar que el
mismo es correcto ya que, al no leer datos de entrada desde un periférico, sino al
tener todas las variables definidas, genera automáticamente las salidas deseadas,
los reportes 1 y 2.

También se observa que el algoritmo es robusto, ya que es correcto y no es


necesario que emita algún mensaje de error, ya que el algoritmo no lee datos
ingresados desde un periférico, sino que todas las variables están ya definidas,
por lo tanto, no habrá datos ingresados de manera incorrecta.

Objetivo 8: Codificación del algoritmo en el lenguaje Pascal

27
El algoritmo codificado en el lenguaje Pascal es el siguiente:

Program Trabajo_Practico;

{Programa realizado por Leandro Ortiz, CI 18609651. Estudiante de Matematica

(126), lapso 2018-1}

{Este programa es el trabajo practico de la materia ComputacionI.

El INTTT Caracas ha acumulado informacion referente a las infracciones de

de los limites de velocidad durante un determinado periodo de tiempo.

Se desea recopilar esa informacion y mostrarla en dos reportes, uno que

muestre la descripcion de cada infraccion y otro la estadistica mensual

del promedio de multas de cada cuadrante en los que se ha dividido la ciudad.}

{El programador, recibe todas las tarjetas de infracciones del

periodo considerado, supongamos que son 20. Esa informacion se guarda en

variables, una por cada columna. La variables de fecha seran Fi, y los numeros

i representan las filas de la cuadricula, es decir, las fechas de las 20

multas}

{Declaracion de variables}

var

F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20: string [10];

{Las variables Ri representan el numero de registro del vehiculo}

28
R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20: integer;

{Las variables Ci representan el numero del cuadrante al que pertenece el vehiculo}

C1, C2, C3, C4: integer;

{Las variables Zi representan la zona a la que pertenece el vehiculo infractor}

Zn, Zs, Ze, Zo: char;

{Las variables Ui representan la urbanizacion a la que pertenece el vehiculo}

U1, U2, U3, U4, U5, U6, U7, U8, U9, U10, U11, U12, U13, U14, U15, U16, U17, U18, U19, U20:
string;

{Las variables Vi representan la velocidad registrada}

V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20: integer;

{Las variables Vli representan la velocidad limite del cuadrante donde haya ocurrido la infraccion}

Vl1, Vl2, Vl3, Vl4: integer;

{Las variables Mi representan las multas calculadas para cada infraccion}

M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16, M17, M18, M19,
M20: real;

{La variable Mt es la suma de todas las multas}

29
Mt: real;

{Para el reporte 2 se generan dos conjuntos mas de variables: las variables Si

representan la cantidad (suma) de multas de cada cuadrante; y las variables Pi representan

el promedio de multas de cada cuadrante. Esta informacion se mostrara en el

Reporte 2}

S1, S2, S3, S4: integer;

P1, P2, P3, P4: real;

{Tomando en cuenta que se supone que el presente programa se hace luego de

que el programador recibe todas las boletas de infraccion, todas las variables

antes declaradas ya estan definidas, es decir, el programa se realiza para

presentar la informacion de las boletas recibidas en dos informes, por lo

tanto, no va a recibir informacion que se ingrese desde el teclado. Habiendo

dicho esto, procedemos a definir las variables en el programa}

begin

F1:= '10/01/2018';

F2:= '15/01/2018';

F3:= '20/01/2018';

F4:= '25/01/2018';

F5:= '30/01/2018';

F6:= '01/02/2018';

F7:= '10/02/2018';

F8:= '15/02/2018';

F9:= '20/02/2018';

F10:= '25/02/2018';

F11:= '01/03/2018';

30
F12:= '10/03/2018';

F13:= '15/03/2018';

F14:= '20/03/2018';

F15:= '25/03/2018';

F16:= '01/04/2018';

F17:= '10/04/2018';

F18:= '15/04/2018';

F19:= '20/04/2018';

F20:= '25/04/2018';

R1:= 123;

R2:= 567;

R3:= 912;

R4:= 952;

R5:= 107;

R6:= 456;

R7:= 891;

R8:= 457;

R9:= 105;

R10:= 832;

R11:= 789;

R12:= 345;

R13:= 790;

R14:= 329;

R15:= 953;

R16:= 234;

R17:= 678;

R18:= 385;

R19:= 475;

R20:= 506;

31
C1:= 1;

C2:= 2;

C3:= 3;

C4:= 4;

Zn:= 'N';

Zs:= 'S';

Ze:= 'E';

Zo:= 'O';

U1:= 'Catia';

U2:= '23 de Enero';

U3:= 'Propatria';

U4:= 'Lomas de Urdaneta';

U5:= 'Catia';

U6:= 'Los Chaguaramos';

U7:= 'Colinas de los Chaguaramos';

U8:= 'Santa Monica';

U9:= 'Colinas de Santa Monica';

U10:= 'Las Acacias';

U11:= 'Barrio Nuevo';

U12:= 'Bucaral';

U13:= 'Country Club';

U14:= 'El Pedregal';

U15:= 'San Marino';

U16:= 'Catia 23 de Enero';

U17:= 'Nueva Caracas';

U18:= 'Propatria';

U19:= 'Lomas de Urdaneta';

U20:= 'Casalta';

V1:= 35;

32
V2:= 40;

V3:= 56;

V4:= 37;

V5:= 52;

V6:= 55;

V7:= 43;

V8:= 67;

V9:= 83;

V10:= 49;

V11:= 55;

V12:= 60;

V13:= 74;

V14:= 80;

V15:= 77;

V16:= 40;

V17:= 88;

V18:= 67;

V19:= 50;

V20:= 66;

Vl1:= 30;

Vl2:= 40;

Vl3:= 45;

Vl4:= 35;

M1:= 100000+50*(V1-Vl1);

M2:= 100000+50*(V2-Vl1);

M3:= 100000+50*(V3-Vl1);

M4:= 100000+50*(V4-VL1);

M5:= 100000+50*(V5-Vl1);

M6:= 100000+50*(V6-Vl2);

33
M7:= 100000+50*(V7-Vl2);

M8:= 100000+50*(V8-Vl2);

M9:= 100000+50*(V9-Vl2);

M10:= 100000+50*(V10-Vl2);

M11:= 100000+50*(V11-Vl3);

M12:= 100000+50*(V12-Vl3);

M13:= 100000+50*(V13-Vl3);

M14:= 100000+50*(V14-Vl3);

M15:= 100000+50*(V15-Vl3);

M16:= 100000+50*(V16-Vl4);

M17:= 100000+50*(V17-Vl4);

M18:= 100000+50*(V18-Vl4);

M19:= 100000+50*(V19-Vl4);

M20:= 100000+50*(V20-Vl4);

Mt:=
M1+M2+M3+M4+M5+M6+M7+M8+M9+M10+M11+M12+M13+M14+M15+M16+M17+M18+M19
+M20;

S1:= 5;

S2:= 5;

S3:= 5;

S4:= 5;

P1:= (M1+M2+M3+M4+M5)/5;

P2:= (M6+M7+M8+M9+M10)/5;

P3:= (M11+M12+M13+M14+M15)/5;

P4:= (M16+M17+M18+M19+M20)/5;

{Ahora mostramos el Reporte 1. Primero la fila del encabezado y luego las

demas}

writeln('Reporte 1: Infracciones a los limites de velocidad');

34
writeln;

writeln('/ Fecha de la infraccion / ', 'Numero de registro del vehiculo / ', 'Numero de cuadrante / ',
'Zona / ', 'Urbanizacion / ', 'Velocidad registrada (km/h) / ', 'Velocidad limite (km/h) / ', 'Multa
(Bs) /');

writeln;

writeln('/ ', F1, ' / ', R1, ' / ', C1, ' / ', Zn, ' / ', U1, ' / ', V1, ' / ', Vl1, ' / ', M1:5:0, ' /');

writeln('/ ', F2, ' / ', R2, ' / ', C1, ' / ', Zn, ' / ', U2, ' / ', V2, ' / ', Vl1, ' / ', M2:5:0, ' /');

writeln('/ ', F3, ' / ', R3, ' / ', C1, ' / ', Zn, ' / ', U3, ' / ', V3, ' / ', Vl1, ' / ', M3:5:0, ' /');

writeln('/ ', F4, ' / ', R4, ' / ', C1, ' / ', Zn, ' / ', U4, ' / ', V4, ' / ', Vl1, ' / ', M4:5:0, ' /');

writeln('/ ', F5, ' / ', R5, ' / ', C1, ' / ', Zn, ' / ', U5, ' / ', V5, ' / ', Vl1, ' / ', M5:5:0, ' /');

writeln('/ ', F6, ' / ', R6, ' / ', C2, ' / ', Zs, ' / ', U6, ' / ', V6, ' / ', Vl2, ' / ', M6:5:0, ' /');

writeln('/ ', F7, ' / ', R7, ' / ', C2, ' / ', Zs, ' / ', U7, ' / ', V7, ' / ', Vl2, ' / ', M7:5:0, ' /');

writeln('/ ', F8, ' / ', R8, ' / ', C2, ' / ', Zs, ' / ', U8, ' / ', V8, ' / ', Vl2, ' / ', M8:5:0, ' /');

writeln('/ ', F9, ' / ', R9, ' / ', C2, ' / ', Zs, ' / ', U9, ' / ', V9, ' / ', Vl2, ' / ', M9:5:0, ' /');

writeln('/ ', F10, ' / ', R10, ' / ', C2, ' / ', Zs, ' / ', U10, ' / ', V10, ' / ', Vl2, ' / ', M10:5:0, ' /');

writeln('/ ', F11, ' / ', R11, ' / ', C3, ' / ', Ze, ' / ', U11, ' / ', V11, ' / ', Vl3, ' / ', M11:5:0, ' /');

writeln('/ ', F12, ' / ', R12, ' / ', C3, ' / ', Ze, ' / ', U12, ' / ', V12, ' / ', Vl3, ' / ', M12:5:0, ' /');

writeln('/ ', F13, ' / ', R13, ' / ', C3, ' / ', Ze, ' / ', U13, ' / ', V13, ' / ', Vl3, ' / ', M13:5:0, ' /');

writeln('/ ', F14, ' / ', R14, ' / ', C3, ' / ', Ze, ' / ', U14, ' / ', V14, ' / ', Vl3, ' / ', M14:5:0, ' /');

writeln('/ ', F15, ' / ', R15, ' / ', C3, ' / ', Ze, ' / ', U15, ' / ', V15, ' / ', Vl3, ' / ', M15:5:0, ' /');

writeln('/ ', F16, ' / ', R16, ' / ', C4, ' / ', Zo, ' / ', U16, ' / ', V16, ' / ', Vl4, ' / ', M16:5:0, ' /');

writeln('/ ', F17, ' / ', R17, ' / ', C4, ' / ', Zo, ' / ', U17, ' / ', V17, ' / ', Vl4, ' / ', M17:5:0, ' /');

writeln('/ ', F18, ' / ', R18, ' / ', C4, ' / ', Zo, ' / ', U18, ' / ', V18, ' / ', Vl4, ' / ', M18:5:0, ' /');

writeln('/ ', F19, ' / ', R19, ' / ', C4, ' / ', Zo, ' / ', U19, ' / ', V19, ' / ', Vl4, ' / ', M19:5:0, ' /');

writeln('/ ', F20, ' / ', R20, ' / ', C4, ' / ', Zo, ' / ', U20, ' / ', V20, ' / ', Vl4, ' / ', M20:5:0, ' /');

writeln;

writeln('La suma de todas las multas es: ', Mt:7:0, ' Bs');

writeln;

writeln;

35
{Ahora presentamos el Reporte 2}

writeln('Reporte 2: Promedio de multas por cuadrante');

writeln;

writeln('/ ', 'Cuadrante', ' / ', 'Mes', ' / ', 'Numero de multas', ' / ', 'Promedio mensual de multas',
' /');

writeln;

writeln('/ ', 1, ' / ', 'Enero', ' / ', S1, ' / ', P1:5:0, ' /');

writeln('/ ', 2, ' / ', 'Febrero', ' / ', S2, ' / ', P2:5:0, ' /');

writeln('/ ', 3, ' / ', 'Marzo', ' / ', S3, ' / ', P3:5:0, ' /');

write('/ ', 4, ' / ', 'Abril', ' / ', S4, ' / ', P4:5:0, ' /');

end.

El código presentado en este trabajo práctico fue probado en la aplicación Free


Pascal y corrió perfectamente, generando la solución buscada al problema
planteado al inicio. Una copia del archivo del programa en el formato .pas se
adjunta en el CD que acompaña al presente trabajo práctico.

Conclusiones

36
En el presente trabajo se le dio solución al problema planteado inicialmente a
través de las herramientas adquiridas en el curso Computación I, de la carrera
Matemática, de la Universidad Nacional Abierta, las cuales fueron presentadas en
la introducción y desarrolladas a lo largo del trabajo.

Se vio cómo a la idea inicial de solución del problema se le va dando forma, y una
estructura cada vez más robusta, a medida que se van utilizando las distintas
herramientas adquiridas en el curso, desde el planteamiento de la solución,
pasando por la elaboración de algoritmos y pseudocódigos, hasta llegar a la
elaboración del código de programación, que es el que permitirá ingresar la
solución planteada a una computadora, para que ésta ejecute nuestras
instrucciones y proporcione la solución del problema.

El lenguaje de programación utilizado en el curso y en el presente trabajo es


Pascal, pero las herramientas adquiridas para la elaboración de algoritmos y
resolución de problemas mediante la computadora, permitirán aprender fácilmente
cualquier lenguaje de programación para elaborar la parte final de la solución por
computadora de un problema planteado.

Recomendaciones
37
Se recomienda eliminar la exigencia de almacenar una copia del programa
elaborado en un CD, ya que ésta es una tecnología que está casi en desuso y
cuesta conseguir alguna tienda que todavía los venda. Ya que el archivo .pas, que
contiene el código de programación, es bastante ligero (12 kb, el del presente
trabajo), se puede enviar fácilmente por correo electrónico.

Anexo

38
Pantalla de la corrida del programa en Free Pascal IDE, versión 1.0.12
[2014/03/06]

En la siguiente imagen se muestra la pantalla con la corrida del programa en Free


Pascal IDE, versión 1.0.12 [2014/03/06], en la misma se observa la solución del
problema planteado, los dos reportes con las características solicitadas.

39

S-ar putea să vă placă și