Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modelo TP Computacion I 323 PASCAL PDF
Modelo TP Computacion I 323 PASCAL PDF
com
m
. co
ly
tip
ul
.m
na
tu
Email: antoniobigott@gmail.com
yc
Fecha: 30-12-2010
Lapso 2010-2
ÍNDICE
INTRODUCCIÓN ........................................................................................................ 5
DESARROLLO ............................................................................................................ 6
OBJETIVOS ............................................................................................................. 6
OBJETIVO 5 ............................................................................................................ 7
m
ETAPA 1: EL DIALOGO ...................................................................................... 7
co
ETAPA 2: ESPECIFICACIONES ........................................................................ 8
ETAPA 3: LA PARTICIÓN ................................................................................. 10
.
ly
ETAPA 4: DEFINICIÓN DE ABSTRACCIONES .............................................. 12
tip
ETAPA 5: CODIFICACIÓN................................................................................ 13
ETAPA 6: PRUEBA Y VERIFICACIÓN ............................................................ 13
ul
ETAPA 7: PRESENTACIÓN ............................................................................. 13
.m
OBJETIVO 6: PROGRAMACIÓN ESTRUCTURADA .......................................... 13
DECLARACIÓN DE DATOS Y TIPOS ............................................................. 13
na
ALGORITMO EN SEUDOCÓDIGO .................................................................. 15
tu
2
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
m
PROCEDIMIENTO mcva () ........................................................................ 26
co
PROCEDIMIENTO mdim ()........................................................................ 26
PROCEDIMIENTO verim () {verifica si ha ingresado clientes} .................... 28
.
ly
PROCEDIMIENTO venci () {verifica si hay fechas vencidas para n_vige y
reporte} ........................................................................................................... 28
tip
PROCEDIMIENTO n_vige () {listado de no-vigentes} .................................. 28
ul
PROCEDIMIENTO n_exp ()....................................................................... 28
.m
PROCEDIMIENTO n_CV () ....................................................................... 29
PROCEDIMIENTO n_DI () ......................................................................... 29
na
PROCEDIMIENTO total_vi () ..................................................................... 30
PROCEDIMIENTO verino () .......................................................................... 31
tu
extranjeros} ................................................................................................. 34
w
3
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
m
PROCEDIMIENTO Ldim ()......................................................................... 39
co
PROCEDIMIENTO Verili () ............................................................................ 40
PROCEDIMIENTO Salir ................................................................................ 40
.
ly
PROCEDIMIENTO Menu2 () ......................................................................... 40
tip
PROCEDIMIENTO MenuP ............................................................................ 41
OBJETIVO 7 PRUEBA DE ROBUSTEZ Y VERIFICACIÓN ................................ 43
ul
OBJETIVO 8 PROGRAMA CODIFICADO ........................................................... 47
.m
BIBLIOGRAFÍA ......................................................................................................... 47
na
tu
on
yc
dm
.a
w
w
w
4
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
m
co
INTRODUCCIÓN
Este trabajo práctico se propone resolver un problema de una compañía
.
ly
ficticia que contiene grandes enseñanzas que sirven para la formación de los
futuros Ingenieros de Sistemas.
tip
Las empresas dedicadas al turismo deben tener un sistema computarizado
ul
para lograr competir en este mercado tan dinámico y atractivo.
.m
Se trata de implementar un algoritmo que pueda ingresar datos de los
clientes de la empresa TOURSVEN. Para llegar a esto, se aplica el método MAPS,
el cual sistemáticamente nos llevará hasta el diseño final del programa, escrito en
na
lenguaje PASCAL, y disponible para ser aplicado en el área de trabajo.
tu
metropolitano.
yc
dm
.a
w
w
w
5
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
m
co
DESARROLLO
.
ly
OBJETIVOS
5: Se resolverá el problema planteado algorítmicamente usando la
tip
metodología MAPS
ul
6: Basándose en lo construido en el objetivo 5, se diseñará un algoritmo
usando técnicas de programación estructurada, que cumplan con las
.m
especificaciones dadas, teniendo especial cuidado en hacer una buena
declaración de datos y sus tipos.
na
7: Se probará el algoritmo diseñado en el objetivo 6 usando el concepto de
Robustez.
tu
6
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
OBJETIVO 5
Son siglas inglesas que significan Metodología
m
ETAPA 1: EL DIALOGO
co
Se realizó una consulta al asesor de la materia en el Centro Local. Unido a
la conversación entre compañeros de estudio, se aclaró la naturaleza del
.
ly
problema planteado.
tip
Definición del problema: La agencia de viajes TOURSVEN se ha dado a la
tarea de automatizar el proceso de venta de boletos con el fin de llevar un control
de clientes que deseen viajar al exterior.
ul
Datos de Entrada: Se toma como entradas:
.m
Nombre y apellidos del cliente
na
Número de pasaporte del cliente
tu
Proceso: se validan los datos de entrada, de manera que sólo se graban los
datos válidos según el criterio preestablecido. Se diseñará un programa en Turbo
w
Pascal 7.0, para que usando arreglos de registros, se graben y muestren los
resultados requeridos.
w
m
o Cuántos clientes tienen pasaporte extranjero
co
o Cuántos clientes tienen la declaración de impuesto vencido
.
ly
o Cuántos clientes tienen todos sus recaudos vigentes
tip
Para verificar el vencimiento, se toma como datos sólo el año y el mes, y se
considerará vencido el documento que en su fecha de vencimiento, el año y el
ul
mes coincidan o sean menores al año y mes actuales.
PRE-Condiciones: .m
ETAPA 2: ESPECIFICACIONES
na
Nombres y apellidos de cada cliente. CRITERIO DE VALIDEZ: no puede
tener números al principio. Ej.: “1carlos” no es válido, en cambio “carlos1” sí
tu
lo es.
on
o
.a
o
w
8
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
m
meses abril, junio, septiembre, noviembre tienen 30 días.
co
Origen del pasaporte: venezolano (v) ó extranjero (e). CRITERIO DE
VALIDEZ: no puede ser otro carácter diferente a éstos dos.
.
Fecha de expedición del certificado de vacuna. CRITERIO DE VALIDEZ: el
ly
mismo de la fecha de expedición pasaporte.
tip
Fecha de declaración de impuesto. CRITERIO DE VALIDEZ: el mismo de la
fecha de expedición pasaporte.
Dado que el programa será diseñado en base a arreglos, será fijada la
ul
capacidad máxima de éstos. Ahora, en el día laboral, la cantidad de clientes
.m
varía y el usuario no puede estar todo el tiempo ajustando la capacidad
máxima del arreglo de clientes. Por lo tanto, se preguntará al usuario
cuántos clientes ingresará.
na
POST-Condiciones:
tu
vencido.
. Aparece un listado que muestra los
w
9
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
ETAPA 3: LA PARTICIÓN
El problema global se dividirá en base a las opciones del menú principal y
submenús:
m
Actualizar
co
• Ingresar
• Modificar
.
• Eliminar
ly
• Listado
• Salida _menu principal
tip
Ordenar
ul
Emitir reporte No-vigentes
.m
Emitir reporte estadistico
Salida _del_programa
na
Cada una de estas opciones, incluyendo los menús, es diseñada en base a los
tu
número (20), pero en el día laboral esta cantidad puede variar. Luego se
leerán los datos del cliente: nombre y apellidos, n° de pasaporte, fecha
expedición del pasaporte, origen del pasaporte, fecha expedición del
dm
Clien_T. este arreglo está fijado a una capacidad definida, que puede estar entre
15 a 30 clientes por día laboral. Si la cantidad de clientes ingresados es menor
w
que la capacidad total del arreglo, se rellenan con ceros en los campos numéricos
y espacios vacios o cadenas nulas en los campos de caracteres. Si se desea
ingresar cierta cantidad de clientes adicionales, se puede acceder nuevamente a
esta opción. Para ello, la variable de clientes adicionales (w2) se suma a la
variable de clientes existentes (w): , donde n es número total de
10
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
2. Modificar (un cliente por vez): se pregunta cuál cliente se desea modificar
m
ingresando con precisión sus nombres y apellidos. El algoritmo de
co
búsqueda detecta el cliente solicitado y se muestra un pequeño menú para
seleccionar qué campo será modificado del registro del cliente. Se
selecciona el campo a modificar según sea el caso y se releen los datos a
.
ly
modificar.
3. Eliminar (“borrar” el registro del cliente): se pregunta cuál cliente se debe
tip
eliminar ingresando con precisión sus nombres y apellidos. El algoritmo de
búsqueda detecta el cliente solicitado y luego procede a grabar ceros en los
ul
campos numéricos y espacios vacios en los campos de caracteres.
El número de clientes se reduce en 1.
.m
4. Listado: se muestran todos los clientes almacenados en el registro clien_T.
puede estar ordenado o no, dependiendo si se utilizó la opción ordenar.
na
Para listar los datos, se dividió el proceso en 6 partes y se utilizó el
comando “gotoxy” (ir_xy) para ubicar el cursor en las coordenadas de la
pantalla.
tu
menú principal.
6. Ordenar: este procedimiento ordena por número de pasaporte de mayor a
menor a todos los clientes en el arreglo. Se usa un algoritmo de selección
yc
de la manera siguiente:
o El primer elemento de la lista de clientes se toma como el valor
dm
variable “índice-menor”
o Se compara con los restantes elementos de Clien_T en el campo N-
pas.
.a
11
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
m
computadora. La fecha de vencimiento se obtiene sumando 1 ó 2 al año de
expedición, según sea el caso. Si la fecha de vencimiento de un documento
co
es menor que la fecha actual, el documento está vencido y aparecerá el
nombre del cliente involucrado en el listado del reporte. En este listado sólo
.
aparecerán los clientes con por lo menos un documento vencido.
ly
8. Reporte estadístico (5 datos de salida): este procedimiento arroja un listado
tip
en pantalla con los elementos siguientes: clientes con pasaporte
venezolano, clientes con pasaporte extranjero, clientes con certificado de
vacuna vencido, clientes con declaración de impuesto vencido, clientes con
ul
todos sus recaudos vigentes. Esto se logra comparando fechas de
.m
vencimiento y con una variable contadora, se va sumando de uno en uno
cada resultado.
9. Salida del programa: el programa se cierra y se vuelve al sistema operativo
na
de la computadora.
tu
cualquiera (readkey)
Ciclos repetitivos como desde_hasta_hacer (for…to…do), donde la variable
se incrementa automáticamente.
.a
12
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
m
instrucciones dependiendo del carácter que representa una opción del
menú.
co
Incrementar (Inc): utilizado para la variable contadora de un ciclo. Equivale
a la declaración .
.
Operadores lógicos AND, OR y NOT. Son utilizados para decidir sobre
ly
varias condiciones lógicas. Sus tablas de verdad son:
tip
Entrada X Entrada Y Salida Salida OR Salida
AND NOT X
ul
Falso Falso Falso Falso Verdad
.m
(false)
Falso Verdad Falso Verdad Verdad
(true)
na
Verdad Falso Falso Verdad Falso
tu
ETAPA 5: CODIFICACIÓN
yc
ETAPA 7: PRESENTACIÓN
Los comentarios se añaden entre llaves { }. Esto se añade normalmente al
w
13
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
CONSTANTES
# caracteres Cad 60
m
clientes
co
Arreglo de meses (sólo Mesi Rango de enero a
para uso del comando diciembre
Getdate)
.
ly
Arreglo de días (sólo para Días Rango de Domingo a
tip
uso del comando sábado
Getdate)
ul
EXPLICACIÓN
.m
ABREVIATURA
TIPOS
TIPO
na
Rango de números Rcap 1..capcid
tu
14
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
m
Fecha declaración F_dim Array[1..3] of max
impuesto
co
Arreglo de registros Clien_T Array[rcap] of cturi
.
Arreglo lógico booleano Vigent Array[rcap] of logi
ly
tip
# clientes a ingresar W,w2 max
ul
proporcionado por
GetDate
ALGORITMO EN SEUDOCÓDIGO
yc
Comienzo
.a
e←0; leer(L1);
w
Repetir
w
Si L1[1]=st entonces
Comienzo
15
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
fin_Si
Incrementar (e)
hasta_que e=0
fin_noms;
m
PROCEDIMIENTO letras(variable D: psp2) {detecta letras en vez de números}
Variables deti: logi; cod: max; L1: valif;
co
Comienzo
.
ly
Repetir
tip
deti←verdad; cod←0; leer(L1)
ul
Si cod≠0 entonces
Comienzo .m
na
Escribir(„no válido, inserte número ‟); deti←falso
fin_Si
tu
hasta_que deti
on
fin_letras
yc
Comienzo
Repetir
.a
Comienzo
w
fin_Si
Hasta_que detec
16
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Fin_valipas
Comienzo
deti←falso
m
Repetir
co
Leer(o)
.
ly
Si (o≠‟v‟) AND (o≠‟e‟) entonces
tip
Escribir(„no válido, inserte de nuevo‟)
Si_no
ul
deti←verdad
hasta_que deti .m
na
Fin_vori
Variables deti: logi; cd, cd2, cd3: max; m: valia; n, p: valib; c:valif;
on
Comienzo
yc
Repetir
Leer (c)
Comienzo
fin_Si
17
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Hasta_que deti
Fin_letr2
PROCEDIMIENTO valife (y, m, d: max; variable f1, f2, f3: max ) {valida fechas}
Variable detec: logi;
m
Comienzo
Repetir
co
detec←verdad; f1←0; f2←0; f3←0
.
ly
letr2(f1, f2, f3) {llamada a proced. letr2}
tip
1_Si (f1<1990) OR (f1>y) entonces
Comienzo
ul
Escribir („no válido, inserte nuevo año‟); detec←falso
fin_1_Si .m
na
2_Si (f1=y) AND (f2>m) entonces
Comienzo
tu
fin_2_Si
yc
Comienzo
fin_3_Si
w
Comienzo
w
fin_4_Si
18
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Comienzo
fin_5_Si
m
Comienzo
co
Escribir („no válido, inserte nuevo dia_febrero‟);
detec←falso
.
ly
fin_6_Si
tip
7_Si [(f2=2) OR (f2=4) OR (f2=6) OR (f2=9) OR (f2=11)] AND (f3=31)
ul
Entonces
Comienzo
.m
Escribir („no válido, inserte nuevo dia≤30‟); detec←falso
na
fin_7_Si
tu
Hasta_que detec
on
Fin_valife
Comienzo
w
Q←w+1
w
Comienzo
19
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Fin_1_mientras
Comienzo
m
g[Q].nom_ap←‟‟ {cadena nula}
co
Incrementar (Q)
Fin_2_mientras
.
ly
Fin_Nap
tip
PROCEDIMIENTO Npas (entradas w, w2; variable g) {numero de pasaporte}
Variables D2: psp2; Q: rcap
ul
Comienzo
Q←w+1 .m
na
1_mientras Q≤(w+w2) hacer
Comienzo
tu
numero‟, Q, „a ingresar‟)
yc
g[Q].n_pas←D2; Incrementar(Q)
dm
Fin_1_mientras
Comienzo
w
g[Q].n_pas←0
w
Incrementar (Q)
w
Fin_2_mientras
Fin_Npas
20
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Comienzo
m
Comienzo
co
Escribir („introduzca fecha_expedicion: aaaa mm dd separado
.
por espacio de la persona numero‟, S, „a ingresar‟)
ly
Valife (y, m, d, f1, f2, f3) {validación de fechas}
tip
g[S].f_exp[1]←f1; g[S].f_exp[2]←f2; g[S].f_exp[3]←f3
ul
Incrementar (S)
Fin_1_mientras
Incrementar (S)
yc
Fin_2_mientras
Fin_Fexp
dm
Comienzo
w
S←w+1
w
Comienzo
21
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Fin_1_mientras
Comienzo
m
g[S].orig←‟ ‟ {carácter espacio}
co
Incrementar (S)
Fin_2_mientras
.
ly
Fin_ori
tip
PROCEDIMIENTO Fcv (w, w2; variable g) {fecha certificado de vacuna}
Variables S: rcap; g1, g2, g3: max
ul
Comienzo
Comienzo
tu
Incrementar (S)
Fin_1_mientras
.a
Comienzo
w
Incrementar (S)
Fin_2_mientras
Fin_Fcv
22
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Comienzo
m
Comienzo
co
Escribir („introduzca fecha_dec._impuesto: aaaa mm dd
.
separado por espacio de la persona numero‟, S, „a ingresar‟)
ly
Valife (y, m, d, h1, h2, h3) {validación de fechas}
tip
g[S].f_dim[1]←h1; g[S].f_dim[2]←h2; g[S].f_dim[3]←h3
ul
Incrementar (S)
Fin_1_mientras
Incrementar (S)
yc
Fin_2_mientras
Fin_Fdim
dm
Si w≠0 entonces
w
Comienzo
w
Leer (w2)
Fin_Si
Si_no comienzo
23
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Leer (w2)
fin_Si_no
m
Comienzo
co
Nap (w, w2, g) {llamadas a los proceds. de Ingresar}
.
ly
Fexp (w, w2, g)
tip
Ori (w, w2, g)
ul
Fcv (w, w2, g)
.m
Fdim (w, w2, g)
w←w+w2
na
fin_si
tu
leer_tecla
yc
Fin_Ingresa
dm
Comienzo
w
Repetir
Si (lista[I].nom_ap)=t entonces
Comienzo
24
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
posic←I; encont←verdad
fin_Si
Incrementar (I)
m
incremento lo devuelve al primer valor del rango}
Fin_buscali
co
PROCEDIMIENTO Modifica (entrada y, m, d, w: max; variable k: clien_T) {se
.
modifican datos del cliente}
ly
Variables mo: op; pmod: modf; pos: rgs
tip
PROCEDIMIENTO mnomb (pos; variable k)
Variable L:modf
ul
Comienzo
.m
Escribir („inserte nuevos nombres y apellidos‟)
na
Noms (L) {validación nombres y apellidos}
k[pos].nom_ap←L
tu
Fin_mnomb
on
Comienzo
dm
k[pos].n_pas←D2
w
Fin_mnpas
w
Comienzo
25
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
m
Fin_mfex
co
Variable o:op
.
Comienzo
ly
Escribir („escriba nuevo origen‟)
tip
Vori (o) {validación origen}
ul
k[pos].orig←o
Fin_mdor
.m
na
PROCEDIMIENTO mcva (y, m, d, pos; variable k)
Variables f1, f2, f3: max
tu
Comienzo
espacio‟)
Fin_mcva
w
Comienzo
w
26
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Fin_mdim
Comienzo {Modifica_principal}
m
Escribir („ingrese apellidos_nombres del cliente‟)
co
Leer (pmod)
.
ly
Si pos≠0 entonces
tip
Comienzo
ul
Escribir („¿qué desea modificar?: nombres (N),
numero_pasaporte (P), f_expedicion (E), origen (G),
.m
f_certificado (C), f_declaracion (D)‟)
na
Leer (mo)
En_caso_de mo hacer
tu
Fin_en_caso_de
w
Fin_Si
w
leer_tecla
27
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Fin_Modifica
Si w≠0 entonces
m
Modifica (w, p)
co
Si_no escribir („ingrese clientes por favor‟)
.
Leer_tecla
ly
Fin_verim
tip
PROCEDIMIENTO venci (entradas nac, y, m, a1, m1: max; variable sis, ven:
ul
logi ) {verifica si hay fechas vencidas para n_vige y reporte}
Comienzo
.m
ven←falso; sis←verdad; a1←a1+nac
na
Si a1=nac entonces sis←falso
Fin_venci
yc
Comienzo
w
Comienzo
w
Comienzo
28
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
nac←1
venz[S]←indi
fin_1_Si
m
2_Si k[S].orig=‟e‟ entonces {si es extranjero…}
co
Comienzo
nac←2
.
ly
venci (nac, y, m, a1, t1, sis, indi) {verifica fechas}
tip
venz[S]←indi
ul
fin_2_Si
Fin_desde
Fin_n_exp .m
na
PROCEDIMIENTO n_CV (y, m: max; k: clien_T; variable venc: vigent)
Variables S: rcap; cv, mv, nac: max; indi, sis: logi
tu
Comienzo
on
Comienzo
dm
venc[S]←indi
w
Fin_desde
w
Fin_n_CV
w
Comienzo
29
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Comienzo
vedi[S]←indi
m
Fin_desde
co
Fin_n_DI
.
ly
Variable S: rcap
tip
Comienzo
ul
Comienzo
.m
Si [venz[S] OR venc[S]] OR (vedi[S]) entonces
na
Comienzo
Fin_Si
on
Fin_desde
yc
Fin_total_vi
dm
Limpiar_pantalla
.a
leer_tecla
30
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Fin_n_vige
Si w≠0 entonces
m
N_vige (y, m, p)
co
Leer_tecla
.
ly
Fin_verino
tip
PROCEDIMIENTO Lorden (variable list: clien_T) {ordena el registro de clientes}
Variable L: rcap
ul
FUNCIÓN Indm (entrada K: rcap; variable lista: clien_T): max {encuentra el índice
.m
del elemento menor}
Variables imi, indi: rcap
na
Comienzo
imi←1
tu
Si (lista[indi].n_pas)<(lista[imi].n_pas) entonces
yc
imi←indi
Indm←imi
dm
Fin_Indm
.a
Comienzo
w
Comienzo
31
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
aux2[me]←lista[me]
lista[me]←lista[K]
lista[K]←aux2[me]
Fin_desde
m
Fin_Seleccs
co
Comienzo {Lorden principal}
Limpiar_pantalla
.
ly
Seleccs (list)
tip
Escribir („lista ordenada del número pasaporte‟)
ul
Desde L←1 hasta capcid hacer
.m
Escribir (L, „ ‟, list[L].n_pas)
Fin_Lorden
on
Si w≠0 entonces
dm
Lorden (p)
Leer_tecla
w
Fin_verior
w
Comienzo
Limpiar_pantalla
32
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Leer (nel)
Si pos≠0 entonces
m
Comienzo
co
k[pos].nom_ap←‟eliminado‟; k[pos].n_pas←0
.
ly
k[pos].orig←‟ ‟ {carácter espacio}
tip
k[pos].f_cva[1]←0; k[pos].f_cva[2]←0; k[pos].f_cva[3]←0
ul
k[pos].f_dim[1]←0; k[pos].f_dim[2]←0; k[pos].f_dim[3]←0; aux←w – 1
.m
escribir („total clientes restantes: ‟, aux)
Fin_Si
na
Si_no escribir („vuelva al menú principal‟)
tu
leer_tecla
Fin_Elimi
yc
Comienzo
Si w≠0 entonces
.a
elimi (w, p)
w
Leer_tecla
w
Fin_veriel
33
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Comienzo
sumvz←0; sumex←0
m
desde S←1 hasta capcid hacer
co
comienzo
.
a1←k[S].f_exp[1]; t1←k[S].f_exp[2]
ly
1_Si k[S].orig=‟v‟ entonces
tip
Comienzo
ul
Incrementar (sumvz); nac←1;
.m
Venci (nac, y, m, a1, t1, sis, indi) {verifica fechas vencidas}
Vig[S]←NOT indi
na
fin_1_Si
tu
Comienzo
Vig[S]←NOT indi
fin_Si_2
.a
fin_desde
w
Fin_sumaVZ
w
Comienzo
sumcv←0
34
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Comienzo
m
Vig2[S]←(NOT indi) AND sis
co
Si indi entonces Incrementar (sumcv)
fin_desde
.
ly
Fin_sumaCV
tip
PROCEDIMIENTO sumaDI (entradas y, m, k; variable sumdi: rgs; vig3: vigent)
Variables S: rcap; d1, md, nac: max; indi, sis: logi
ul
Comienzo
sumdi←0 .m
na
Desde S←1 hasta capcid hacer
Comienzo
tu
fin_desde
.a
Fin_sumaDI
w
PROCEDIMIENTO sumaRV (entradas vig, vig2, vig3; variable sumvi: rgs) {suma
recaudos vigentes}
w
Variable S: rcap
w
Comienzo
sumvi←0
35
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Comienzo
Incrementar (sumvi)
fin_desde
m
Fin_sumaRV
co
Comienzo {Reporte principal}
Limpiar_pantalla
.
ly
vz←0; ex←0; cv←0; di←0; suvi←0
tip
sumaVZ (y, m, k, vz, ex, vi)
ul
sumaCV (y, m, k, cv, vi2)
escribir („REPORTE‟)
on
leer_tecla
w
Fin_Reporte
w
Si w≠0 entonces
36
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Reporte (y, m, p)
Leer_tecla
Fin_veriep
m
PROCEDIMIENTO Listado (p: clien_T) {listado de todos los clientes y sus
campos}
co
PROCEDIMIENTO Lpas (p) {número de pasaporte}
.
Variables S, q: max
ly
Comienzo
tip
Desde S←1 hasta capcid hacer
ul
Comienzo
q←s+2
.m
na
ir_xy (1, q); escribir (p[S].n_pas)
Fin_desde
tu
Fin_Lpas
on
Comienzo
dm
Comienzo
.a
q←s+2
w
Fin_desde
w
Fin_Lori
Comienzo
37
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Comienzo
q←s+2
m
Fin_desde
co
Fin_Lnom
.
ly
Variables S, q, F: max
tip
Comienzo
ul
Comienzo
q←s+2 .m
na
ir_xy (39, q)
comienzo
on
fin_2_desde
dm
Fin_1_desde
Fin_Lexp
.a
Comienzo
w
Comienzo
q←s+2
ir_xy (51, q)
38
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
comienzo
fin_2_desde
m
Fin_1_desde
co
Fin_Lcva
.
ly
Variables S, q, F: max
tip
Comienzo
ul
Comienzo
q←s+2 .m
na
ir_xy (63, q)
comienzo
on
fin_2_desde
dm
Fin_1_desde
Fin_Ldim
.a
Limpiar_pantalla
w
Lpas (p)
Lori (p)
39
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Lnom (p)
Lexp (p)
Lcva (p)
Ldim (p)
m
escribir („presione cualquier tecla‟)
co
leer_tecla
Fin_Listado
.
ly
PROCEDIMIENTO Verili (w: max; p: clien_T)
tip
Comienzo
Si w≠0 entonces
ul
Listado (p)
.m
Si_no escribir („ingrese clientes por favor‟)
na
Leer_tecla
Fin_verili
tu
PROCEDIMIENTO Salir
on
Comienzo
yc
Ir_xy (20,19)
leer_tecla
Fin_salir
.a
Variable opción: op
w
Comienzo
w
Repetir
Limpiar_pantalla
40
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
m
Ir_xy (20,13); escribir („l. Emitir Listado‟)
co
Ir_xy (20,14); escribir („s. Salir‟)
Leer (opción)
.
ly
En_caso_de opción hacer
tip
„i‟: Ingresa (y, m, d, w, k)
ul
„m‟: verim (y, m, d, w, k)
.m
„e‟: veriel (w, k)
Si_no
on
Comienzo
fin
dm
Fin_En_caso_de
Hasta_que opción=‟s‟
.a
Fin_Menu2
w
PROCEDIMIENTO MenuP
w
Comienzo
w←0
repetir
41
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
limpiar_pantalla
operativo de la computadora}
m
TOURSVEN, Bienvenidos‟)
co
ir_xy (10,5); escribir („hoy es‟ días[dow],‟,‟, d, „/‟, mesi[m], „/‟, y)
.
ly
ir_xy (20,9); escribir („presione una de estas teclas‟)
tip
ir_xy (20,10); escribir („a. Actualizar clientes‟)
ul
ir_xy (20,11); escribir („o. Ordenar clientes‟)
.m
ir_xy (20,12); escribir („e. Emitir fechas No-Vigentes‟)
leer (opción)
on
„s‟. Salir
w
Si_no
w
Comienzo
w
fin
Fin_En_caso_de
42
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
hasta_que opción=‟s‟
Fin_MenuP
MenuP
m
Fin_Servicios_Turismo
co
OBJETIVO 7 PRUEBA DE ROBUSTEZ Y VERIFICACIÓN
Recordemos los conceptos de corrección, robustez, amigabilidad.
.
ly
Un programa es correcto si, para cualquier entrada que satisfaga la
tip
precondición, termina generando una salida que satisface sus poscondiciones.
ul
Es correcto.
.m
Para todas las entradas que no satisfacen las precondiciones, el
programa termina y produce una salida que refleja el hecho de que ha
na
ocurrido un error en la entrada.
Es correcto
on
PASCAL y con una tabla de datos que estén dentro de las precondiciones se
comprueba las salidas previamente establecidas en las poscondiciones. En este
caso, se demuestra que el programa es “correcto”.
.a
43
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
insertar letras al principio de cada nombre y apellido, que puede llevar números en
otra parte si es necesario. Se muestra un mensaje invitando a teclear el tipo de
datos correcto.
m
Para el número de pasaporte, se usa el procedimiento valipas para saber si
co
está en los rangos correctos.
.
El procedimiento vori es el requerido para averiguar si el carácter que se
ly
ingresa es uno de los dos previamente establecidos: „v‟ si el pasaporte es origen
venezolano y ‟e‟ si el pasaporte es de origen extranjero.
tip
Para las fechas, primero se detecta si se ingresan cadenas de caracteres o
ul
números por medio del procedimiento letr2.
.m
Siendo datos numéricos de fechas, es necesario si éstas se ajustan a los
rangos usuales de fecha, detallados anteriormente. De todo esto se encarga el
procedimiento valife, que detecta además si la fecha 29 de febrero es de un año
na
bisiesto, si se inserta un 31 de junio, que no existe en el calendario, y otros por el
estilo. Se muestra un mensaje invitando a teclear el tipo de datos correcto, en este
tu
veriep, que revisan antes de ejecutar algún procedimiento del menú que requiera
del arreglo de clientes activo.
.a
vac.
44
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
m
03 01 06
co
Cabañas Cabrera 5857324 E 2009 05 2009 02 2010 05
Lucia 02 02 08
.
ly
Díaz Fernández Fgty V 2009 02 2009 02 2010 05
Doris 25 02 25
tip
6302127
ul
Antonio 05 27 05
Adela 21 29 21
Carlos 03 30 04
dm
13 09 30
w
45
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
m
31 31 11
co
González Díaz 11639420 E 2010 11 2009 08 2010 06
Dayana 31 25 28
.
ly
Granado Grandi 11640324 V 2010 02 2009 09 2009 02
Víctor 30 31 28
tip
Graterol Greco 11642314 V 2010 10 2010 10 2010 08
ul
Oscar 31 30 17
.m
Hernández Egaña 11682214 V 2011 10 2009 10 2010 12
Alicia 02 04 07
na
Hidalgo Higuera Elio 11821666 E 2009 13 2009 11 2009 08
02 24 15
tu
Roman 31 30 28
Andrés 31 18 18
31 26 23
w
46
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com
m
co
OBJETIVO 8 PROGRAMA CODIFICADO
El programa está escrito en lenguaje TURBO PASCAL versión 7.0, y se
.
entrega grabado en un CD contentivo de los archivos necesarios para su correcto
ly
funcionamiento.
tip
ul
BIBLIOGRAFÍA
.m
Tucker, Allen y otros (2000). Fundamentos de Informática. Editorial Mc
na
Graw Hill. Madrid.
47
Digitalizado por Osmer Montilla para www.admycontuna.multiply.com