Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Metodologia de Programacion A Traves de Pseudocodigo
Metodologia de Programacion A Traves de Pseudocodigo
"S" AND res <>"N"
res = espacios(1)
en 20,43 introduce res
fin del hacer
if res = "S"
marcado para ser borrado
swi = 1
fin del if
fin del if
sw=1
else
jeer siguiente registro
fin del if
fin del hacer
if sw=0
en 12,10 imprime "Baja inexistente"192 — Metadologia de la programacion
en 16,10 imprime "Pulse RETURN para continuar”
detener-listado
fin del if
res = espacio(1)
hacer MAS
fin del hacer
if swl =1
empaquetar
fin del if
cerrar OATOS
fin del programa.
COMPROBACION -
Al podernos posicionar en el primer registro sin necesidad de tener que cerrar y abrir
ficheros, estas dos operaciones irin ahora fuera del bucle.
Introducimos el DNI a dar de alta y buscamos en el fichero hasta el final o lo encontre-
mos, hacer mientras no sea EOF() AND sw=0.
La instruccién de ir al primer registro es por si deseamos dar mas altas y situar el
puntero al principio del fichero para inicializar la busqueda.
Comparamos el valor de la variable con el campo. Puede suceder:
— Son iguales: a su vez, caben las posibilidades:
a) Esta marcado, if estd marcado, es como si estuviera borrado, aunque fisicamente
continue en el fichero.
b) No esta marcado, visualizamos el registro y preguntamos si deseamos darle de
baja: Si: lo marcamos, sw/=]
Tanto si lo deseamos borrar como si no, para qué no continue leyendo asignamos
swell.
Al salir del bucle, si el sw tiene el valor cero nos est indicando que el registro no esté en
el fichero; baja inexistente.
Cuando no deseemos dar mas bajas, preguntamos por el valor del sw/. Si tiene el valor
uno, indica que hay registros marcados v debemos compactar el fichero de datos.
Fuera del ciclo cerramos el fichero.
Ejercicio 3
Dado el fichero secuencial DATOS.DAT, realizar un programa que nos permita realizar
modificaciones cuantas veces deseemos.
ESTUDIO PREVIO
Primero buscaremos el registro a modificar introduciendo por teclado el valor del DNI.
Si dicho valor no se encuentra en el fichero, imprimiremos el mensaje “Registro inexis-
tente”.Ficheros secuenciales
193
Si se encuentra, visualizaremos en pantalla los campos del registro e introduciremos has
nuevos valores deseados.
VARIABLES,
num = dni del registro a modificar.
sw = controla si el valor num esta o no en el fichero.
nom = nuevo valor del nombre.
ape = nuevo valor de los apellidos.
dir = nueva direccién,
pro = nueva provincia
res = modificar mas registros.
PSEUDOCODIGO
res. "S$"
hacer mientras res =
abrir DATOS
sw = 0
num = 0
nom = espacios(15)
ape = espacios (30)
dir = espacios(20)
pro = espacios(20)
borrar pantalla
en 5,10 imprime "D.N.T.:"
en 5,18 introduce num
hacer mientras no sea EOF() AND sw = 0
if ONT = num
hacer IMPRIMIR
hacer CAMBIOS
sw= 1
else
leer siguiente registro
fin del if
fin del hacer
if sw=0
hacer, DETENER
fin del if
cerrar DATOS
res = espacio(1)
hacer MAS
fin del hacer
fin del programa.
IMPRIMIR.
en 7,5 imprime "Nombre:"194 Metodologia de la programacién
en 9,5 imprime "Apel ido:
en 11,5 imprime "Direccién
en 13,5 imprime "Provincia:
en 7,16 imprime nombre
en 9,16 imprime apeilidos
en 11,16 imprime direccion
en 13,16 imprime provincia.
CAMBIOS..
nom = nombre
ape = apellidos
dir = direccion
pro = provincia
en 7,16 introduce nom
en 9,16 introduce ape
en 11,16 introduce dir
en 13,16 introduce pro
nombre = nom
apellidos’= ape
direccion’= dir
provincia = pro
regrabar registro.
DETENER. »
en 10,20 imprime “Registro inexistente”
en 20,18 imprime "Pulse RETURN para continuar®
detener-listado.
COMPROBACION
Una vez introducido el valor del DNI a modificar, leemos él fichero desde el principio
hasta el final o hasta que lo encontremos.
A medida que vamos leyendo comparamos el valor del campo con el DNI introducido
por teclado.
Si son iguales, realiza los subprogramas IMPRIMIR y.CAMBIOS, y ponemos el sw a
uno, sw=/, para que abandone la busqueda.
En IMPRIMIR, simplemente visualizamos el registro por pantalla.
En CAMBIOS, realizamos las modificaciones. Primero volcamos los valores de los cam-
pos en las variables, en el caso de que no deseemos modificar algin campo y al pulsar
RETURN no perdamos el valor anterior.
Introducimos los nuevos valores en los campos deseados y los volcamos sobre ‘los cam-
pos para regrabarlos.
Cuando salga del bucle preguntamos por el estado del sw. Si tiene el valor cero, quiere
decir que el registro buscado no esta.Ejercicio 4
Se desea actualizar el fichero DATOS.DAT mediante el fichero secuencial MODI
CA.DAT, cuyos campos son:
DND2 | NOMBRE? APELLI2 DIRE2 | PROVIN2 TO
donde TO indica el tipo de operacién a realizar:
— A: alta.
—B: baja.
—M: modificacién.
Suponer que ambos ficheros estén ordenados por el campo que contiene el DNI.
ESTUDIO PREVIO
Aparte de los dos ficheros, DATOS y MODIFICA, necesitamos un fichero auxiliar,
AUX, cuya estructura sea igual a la del archivo DATOS, donde iremos grabando los regis-
tros actualizados. Este proceso se denomina enfrentamiento de ficheros.
E} fichero de DATOS es el maestro y el de MODIFICA es ef de modificaciones.
Supongamos que tenemos una situacion como la siguiente:
Ficheros: | DATOS | MODIFICA ‘| AUX
Campos: DNI | DN] To | DNI
| 4
Registros: 2 rfoa i
4 2.) M 2
8 ea 5
10 Ss] oA 8
I 81 A 10
IL A ul
ae it
Empezamos a leer del fichero MODIFICA hasta que sea su final. Comparamos ese
registro con el de DATOS:
Son iguales: leemos el tipo de operacion; puede ser:
—A: alta duplicada; se graba el registro de DATOS en AUX.
—~B: no se graba el registro en AUX.
— M: se graba el registro de MODIFICA en AUX.
En Jos tres casos, leemos de ambos ficheros: MODIFICA y DATOS.
* No son iguales; puede suceder que sea mas pequefio el DNI del fichero:
— MODIFICA y el tipo de operacién es A: lo grabamos en AUX, leemos solamente
del archivo MODIFICA.196 Metodologia de fa programacién
— DATOS: lo grabamos en AUX, leemos del fichero de DATOS.
__Sise termina primero el fichero de MODIFICA, pasaremos los registros que quedan de
DATOS a AUX.
En caso de terminar primero el fichero de DATOS, seguiremos leyendo del archivo de
MODIFICA y grabaremos en AUX solamente aquellos registros cuyo tipo de operacién
sea A.
PSEUDOCODIGO
abrir DATOS
abrir MODIFICA
abrir AUX
hacer mientras na sea EOF() de MODIFICA
if dni = dni2
if to= "A"
posicionarse al final de AUX
grabar registro de DATOS en AUK
else
if to = "M"
posicionarse al final de AUX
grabar registro de MODIFICA en AUX «
fin del if
fin del if
leer siguiente registro de DATOS
leer siguiente registro de MODIFICA
else
if dni < dni2
posicionarse al final de AUX
grabar registro de DATOS en AUX
leer siguiente registro de DATOS
else
if to = "a"
posicionarse al final de AUX
grabar registro de MODIFICA en AUX
leer siguiente registro de MODIFICA
fin del if
fin del if
fin del if
fin del hacer
if NOT EOF() de DATOS
hacer mientras no sea EOF() de DATOS
posicionarse al final de AUX
grabar registro de DATOS en AUX
jeer siguiente registro de DATOS
fin del hacer
fin del ifFicheros secuenciales 197
cerrar todos tos ficheros coe tees
borrar fichero DATOS
renombrar fichero AUX como DATOS
borrar. fichero MODIFICA
fin del programa.
COMPROBACION
Una vez abiertos todos los ficheros. controlamos el final del archivo de movimientos.
MODIFICA. hacer mientras no sea EOF() de MODIFICA.
Comparamos los campos indicativos del fichero maestro. DATOS, con el de movimien-
tos, MODIFICA, if dni=dni2. Si el tipo de operacion:
© Es una alta. ifio="4”, al ser alta duplicada, grabamos en el archivo AUX el contenido
del registro de DATOS.
« Es una modificacién, W, grabamos el registro de MODIFICA en AUX.
* Noes ninguna de las dos cosas anteriores, serd una baja, B; no hace falta preguintario.
por estar controladas la 4 y la B. No se graba el registro en AUX.
Leemos de ambos ficheros.
En el caso de no ser iguales los campos indicativos preguntamos cudl de ellos es el
menor: ifdni