TP 323

UNIVERSIDAD NACIONAL ABIERTA TP - 323 UNIVERSIDAD NACIONAL ABIERTA TP - 323 Planteamiento para la elaboración de Trab

Views 48 Downloads 0 File size 264KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

UNIVERSIDAD NACIONAL ABIERTA TP - 323

UNIVERSIDAD NACIONAL ABIERTA TP - 323

Planteamiento para la elaboración de Trabajo Práctico de Computación 1 (323) ESPECIFICACIONES: El presente trabajo práctico se basará en los objetivos Nº 5, 6, 7 y 8, correspondiente al Módulo III. En él se evidenciará las competencias usando el análisis descendente y la METODOLOGÍA MAPS; diseñar algoritmos empleando PROGRAMACIÓN ESTRUCTURADA, así como también probar algoritmos utilizando el concepto de robustez y finalmente, codificar algoritmos en Pascal, aplicando tipo de datos, procedimientos, funciones, y métodos de archivos bien sea el caso. Caso En el período vacacional la coordinación de tránsito nacional implantará un programa que genere estadísticas de movimiento vehicular en tal sentido se cuenta con lo siguiente: 1. Se registrará la siguiente información por cada vehículo: placa, número de pasajeros, alcabala, fecha, tipo de vehículo (1 para particulares, 2 para por puesto, 3 para taxi, 4 para transporte públicos). 2. Las estadísticas se clasifican de la siguiente manera: a. Estadísticas por alcabalas: vehículos que salen, vehículos que entran por fechas. En cantidades y porcentajes. b. Estadísticas por vehículos: número de alcabalas transitadas, días transitados, promedio de pasajeros. c. Estadísticas por tipo de vehículos: cantidad y porcentaje de vehículos según su tipo y por alcabalas, cantidad de pasajeros contabilizados por tipo de vehículo. Con base en lo planteado, diseñe un algoritmo en pseudocódigo donde se muestre el uso correcto de las técnicas de programación estructurada o subprogramas y realice lo siguiente: Presente un menú de mantenimiento con las opciones siguientes: Incluir, Consultar, Modificar, Eliminar, Reporte de estadística y Salida.  Registre, con la opción incluir, los siguientes datos:

UNIVERSIDAD NACIONAL ABIERTA TP - 323

• Placa del vehículo • Número de pasajeros • Alcabala • Fecha • Tipo de vehículo (1 para particulares, 2 para por puesto, 3 para taxi, 4 para transporte públicos)  Ordene el registro por fecha y placa del vehículo.  Muestre por pantalla, cuando realice una Consulta de un vehículo los datos de registrados por grupo.  Genere por medio de la opción “Reporte” las siguientes estadísticas: NOTA: En las alternativas “Modificar, Eliminar y Consultar” haga uso de los datos registrados con la opción “Incluir”. Notas: Para este problema usted tiene que idear unas subrutinas que permitan ordenar los datos por:  Alcabala y fecha.  Placa del vehículo.  Alcabala y tipo de vehículo.

UNIVERSIDAD NACIONAL ABIERTA TP - 323

DESARROLLO Objetivo 5 Planteamiento del caso algorítmicamente usando la metodología MAPS

ETAPA 1 En el período vacacional la coordinación de tránsito nacional implantará un programa que genere estadísticas de movimiento vehicular en tal sentido se cuenta con lo siguiente: 1.- Se registrará la siguiente información por cada vehículo: placa, número de pasajeros, alcabala, fecha, tipo de vehículo (1 para particulares, 2 para por puesto, 3 para taxi, 4 para transporte públicos). 2.- Las estadísticas se clasifican de la siguiente manera: 1. Estadísticas por alcabalas: vehículos que salen, vehículos que entran por fechas. En cantidades y porcentajes. 2. Estadísticas por vehículos: número de alcabalas transitadas, días transitados, promedio de pasajeros. 3. Estadísticas por tipo de vehículos: cantidad y porcentaje de vehículos según su tipo y por alcabalas, cantidad de pasajeros contabilizados por tipo de vehículo. Con base en lo planteado, diseñe un algoritmo en pseudocódigo donde se muestre el uso correcto de las técnicas de programación estructurada o subprogramas y realice lo siguiente:  Presente un menú de mantenimiento con las opciones siguientes: Incluir, Consultar, Modificar, Eliminar, Reporte de estadística y Salida.  Registre, con la opción incluir, los siguientes datos:  Placa del vehículo  Número de pasajeros

UNIVERSIDAD NACIONAL ABIERTA TP - 323

 Alcabala  Fecha  Tipo de vehículo (1 para particulares, 2 para por puesto, 3 para taxi, 4 para transporte públicos)  Ordene el registro por fecha y placa del vehículo.  Muestre por pantalla, cuando realice una Consulta de un vehículo los datos de registrados por grupo.  Genere por medio de la opción “Reporte” las siguientes estadísticas: NOTA: En las alternativas “Modificar, Eliminar y Consultar” haga uso de los datos registrados con la opción “Incluir”.

ENTRADA DE DATOS: La información para cada vehículo a registrar es: 1) 2) 3) 4) 5)

Placa del vehículo Número de pasajeros Alcabala Fecha Tipo de vehículo (1 para particulares, 2 para por puesto, 3 para taxi y 4 para transporte público)

SALIDA DE DATOS: 1) 2) 3) 4) 5) 6)

Vehículos que salen, vehículos que entran (por fechas en cantidades y porcentajes) Número de alcabalas transitadas Días transitados Promedio de pasajeros Cantidad y porcentaje de vehículos según su tipo y por alcabalas Cantidad de pasajeros contabilizados por tipo de vehículo

UNIVERSIDAD NACIONAL ABIERTA TP - 323

ETAPA 2: LAS ESPECIFICACIONES En los datos personales: Precondición 1: Pre: entrada = placa del vehículo Precondición 2: Pre: entrada = número de pasajeros Precondición 3: Pre: entrada = alcabala Precondición 4: Pre: entrada = Fecha Precondición 5: Pre: entrada = Tipo de vehículo Post-condiciones: Postcondición 1 Post: salida = vehículos que salen (cantidades y porcentajes) Postcondición 2 Post: salida = vehículos que entran (cantidades y porcentajes) Postcondición 3 Post: salida = número de alcabalas transitadas Postcondición 4 Post: salida = días transitados Postcondición 5 Post: salida = promedio de pasajeros Postcondición 6 Post: salida = vehículo según tipo (cantidades y porcentajes) Postcondición 7 Post: salida = vehículo según alcabala (cantidades y porcentajes) Postcondición 8 Post: salida = número de pasajeros por tipo de vehículo

UNIVERSIDAD NACIONAL ABIERTA TP - 323

ETAPA 3: LA PARTICION El siguiente planteamiento de programa, se puede plantear en subrutinas y rutinas específicas, con la finalidad de hacerlo más asimilable, a la hora de proyectarlo hacia su programación en lenguaje PASCAL. Las rutinas en las que se divide, son las siguientes: Rutinas: A. Ingresar los datos de los vehículos B. Ordenar registro de vehículos por número de placa C. Mostrar en pantalla registro completo de los vehículos (número de placa, tipo, número de pasajeros, fecha (ingreso/salida) y alcabala. D. Generar información por medio de la opción “REPORTE”. E. Calcular de cada vehículo, sus datos y reportes estadísticos. Subrutinas Iniciar menú Mostrar opciones del menú Ingresar los datos de cada vehículo: 1) Placa del vehículo Leer número de placa del vehículo 2) Número de pasajeros Leer número de pasajeros 3) Alcabala Leer nombre de la alcabala 4) Fecha Leer fecha de ingreso y salida del vehículo en la alcabala 5) Tipo de vehículo

UNIVERSIDAD NACIONAL ABIERTA TP - 323

Leer tipo de vehículo

Ordenar los registros Estadísticos I. II. III. IV.

Fecha y placa del vehículo Por alcabala (ordenado por fecha de menor a mayor) (Estadística 1) Ordenado por placa del vehículo (Estadística 2) Por alcabala (ordenado por tipo de vehículo de menor a mayor) (Estadística 3)

Objetivos 6, 7 y 8 Traducción del algoritmo y programa para el caso en Lenguaje PASCAL, implementando programación estructurada y conceptos de robustez en el diseño. En el siguiente gráfico observamos una versión beta de la estructura de programación planteada para el desarrollo del programa con el lenguaje PASCAL:

UNIVERSIDAD NACIONAL ABIERTA TP - 323

Se puede observar la estructura del programa, a pesar de estar listo para incluir base de datos y generar los reportes estadísticos, aun no se le han aplicado conceptos de robustez como la indentación.

TRADUCCIÓN DEL PROGRAMA AL LENGUAJE PASCAL program estadistica; uses crt; const tipove : array[1..4] of string[20] = ( 'particulares','porpuesto','taxi','transporte publicos'); acion : array['A'..'B'] of string[5] = ( 'Entra','Sale'); type

UNIVERSIDAD NACIONAL ABIERTA TP - 323 regvehiculo = record nplaca : string[20]; npasaj : integer; alcabala : string[20]; fecha : string[10]; tipovl : byte; salent : char; end;

var datos : array[0..200] of regvehiculo; cont : integer; tecla : char;

procedure entrada_datos; var d : integer; begin writeln('***** Datos de Vehiculos *****'); writeln; write('

Numero Placa

: ');

readln(datos[cont].nplaca); for d := 1 to length(datos[cont].nplaca) do datos[cont].nplaca[d] := upcase(datos[cont].nplaca[d]); write('

Numero Pasajeros

: ');

readln(datos[cont].npasaj); write('

Alcabala

readln(datos[cont].alcabala);

: ');

UNIVERSIDAD NACIONAL ABIERTA TP - 323 write('

Fecha d/m/a

: ');

readln(datos[cont].fecha); writeln(' Tipo Vehiculo : 1=particulares ' write('

2=porpuesto

3=taxi',

4=transporte publicos');

Tipo Veiculo

: ');

readln(datos[cont].tipovl); write(' Accion [A]=Sale [B]=entra : '); readln(datos[cont].salent); datos[cont].salent := upcase(datos[cont].salent); cont := cont + 1; if cont > 200 then cont := 200; end;

procedure consulta; var nume : string[20]; nn : integer; enco : boolean; begin writeln(' ****** Consulta Entre Numero Matricula ******'); writeln; write('

Numero : ');

readln(nume); for nn := 1 to length(nume) do nume[nn] := upcase(nume[nn]); nn := 0; enco := false;

UNIVERSIDAD NACIONAL ABIERTA TP - 323 repeat if datos[nn].nplaca = nume then enco := true else nn := nn + 1; until (nn > cont - 1) or (enco = true); if enco = true then begin clrscr; writeln('

***** Datos Consultados Son *****');

writeln; writeln('

Numero Placa

= ',datos[nn].nplaca);

writeln('

Numero Pasajeros = ',datos[nn].npasaj);

writeln('

Alcabala

= ',datos[nn].alcabala);

writeln('

Fecha

= ',datos[nn].fecha);

writeln('

Tipo Vehiculo

= ',tipove[datos[nn].tipovl]);

writeln('

Sale/Entra

= ',acion[datos[nn].salent]);

writeln; writeln('

>>>>> Pulse Una Tecla >'); readkey; end; end;

procedure ordena; var pu : char; porque : string; kk, nn : integer; temp : regvehiculo; begin if cont > 2 then begin clrscr; writeln('

**** Ordenar Registros Por ****');

writeln; writeln('

1 = Fecha y placa del vehiculo');

writeln('

2 = Alcabala y fecha');

writeln('

3 = Placa del vehiculo');

writeln('

4 = Alcabala y tipo de vehiculo');

UNIVERSIDAD NACIONAL ABIERTA TP - 323 writeln; writeln('

>');

repeat pu := readkey; until pu in['1','2','3','4']; if pu = '1' then begin for kk := 0 to cont do for nn := cont downto kk + 1 do begin if (datos[kk].fecha > datos[nn].fecha)and(datos[kk].nplaca > datos[nn].nplaca) then begin temp := datos[kk]; datos[kk] := datos[nn]; datos[nn] := temp; end; end; end; if pu = '2' then begin for kk := 0 to cont do for nn := cont downto kk + 1 do begin if (datos[kk].alcabala > datos[nn].alcabala) and (datos[kk].fecha > datos[nn].fecha) then begin temp := datos[kk]; datos[kk] := datos[nn];

UNIVERSIDAD NACIONAL ABIERTA TP - 323 datos[nn] := temp; end; end; end; if pu = '3' then begin for kk := 0 to cont do for nn := cont downto kk + 1 do begin if (datos[kk].nplaca > datos[nn].nplaca) then begin temp := datos[kk]; datos[kk] := datos[nn]; datos[nn] := temp; end; end; end; if pu = '4' then begin for kk := 0 to cont do for nn := cont downto kk + 1 do begin if (datos[kk].alcabala > datos[nn].alcabala) and (datos[kk].tipovl > datos[nn].tipovl) then begin temp := datos[kk]; datos[kk] := datos[nn]; datos[nn] := temp; end;

UNIVERSIDAD NACIONAL ABIERTA TP - 323 end; end; end else begin writeln('>>>'); readkey; end; end;

procedure eliminaregistro; var tt, nn : integer; reg : regvehiculo; placa : string[20]; sal : boolean; pul : char; begin if cont > 1 then begin writeln('

**** Eliminicion De Un Registro ****');

writeln; write('

Introduzca numero de placa : ');

readln(placa); for nn := 1 to length(placa) do placa[nn] := upcase(placa[nn]); sal := false; nn := 0;

UNIVERSIDAD NACIONAL ABIERTA TP - 323 repeat if datos[nn].nplaca = placa then sal := true else nn := nn + 1; until (nn > cont - 1) or (sal = true); if sal = true then begin writeln('???? Se Anulara El Registro Matricula = ',datos[nn].nplaca); writeln('****** Desea Anularlo [S/N] *******'); repeat pul := upcase(readkey); until pul in['S','N']; if pul = 'S' then begin for tt := 0 to cont - 1 do begin if tt nn then datos[tt] := datos[tt]; end; cont := tt; end; end; end else begin writeln('>>>');

UNIVERSIDAD NACIONAL ABIERTA TP - 323 readkey; end; end;

procedure visualizatodos; var paso, cc : integer; begin cc := 0; paso := 1; writeln('***** Las Datos son: *****'); writeln; repeat writeln(datos[cc].nplaca,' datos[cc].alcabala,' datos[cc].tipovl,'

',datos[cc].npasaj,'

',datos[cc].fecha,'

',

',

',datos[cc].salent);

paso := paso + 1; cc := cc + 1; if paso > 24 then begin writeln('***** Pulse Una Tecla Para Continuar ******'); readkey; clrscr; writeln('***** Las Datos son: *****'); writeln; paso := 1; end; until cc > cont - 1;

UNIVERSIDAD NACIONAL ABIERTA TP - 323 writeln; writeln('>'); readkey; end;

procedure menu; var sal : boolean; pul : char; begin sal := false; repeat clrscr; writeln('

**** Menu Principal ****');

writeln; writeln('

1

= Incluir datos');

writeln('

2

= Consultar datos');

writeln('

3

= Modificar datos');

writeln('

4

= Ordenar por:');

writeln('

5

= Eliminar');

writeln('

6

= Reporte de estadisticas');

writeln('

7

= Salida');

writeln; writeln('

*** Pulsar Opcion ***');

repeat pul := readkey; until pul in['1','2','3','4','5','6','7']; clrscr;

UNIVERSIDAD NACIONAL ABIERTA TP - 323 case pul of '1' : entrada_datos; '2' : consulta; '3' : modifica; '4' : ordena; '5' : eliminaregistro; '6' : visualizatodos; '7' : sal := true; end; until sal = true; end;

begin cont := 0; menu; end.

UNIVERSIDAD NACIONAL ABIERTA TP - 323

Bibliografía de soporte

 Computación I, texto UNA, Luis Joyanes Aguilar, 2002.

 Programación en PASCAL, William McArthur, 2001.

 Programación estructurada de datos, Alfred Aho, 2002.