Professional Documents
Culture Documents
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
4.1
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
91
Alan Mason
123 Maple
90 Eastgate
Ada, OK 74820
Stillwater, OK 74075
PRCGRAMA: escribesec
APELLIDO
NOMBRE
DIRECCION
CIUDAD
ESTADO
CP
en
en
en
en
en
en
el
el
el
el
el
el
archivo
archivo
archivo
archivo
archivo
archivo
SALIDA
SALIDA
SALIDA
SALIDA
SALIDA
SALIDA
Lee APELLIDO
fin mientras
cierra SALIDA
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
92
'
4.2
ESTRUCTURAS DE CAMPOS
Hay muchas formas de aadir estmctura a los archivos para mantener
la identidad de los campos. Los tres mtodos m4s comunes son:
O Forzar que los campos tengan una longitud predecible;
O Comenzar cada campo con un indicador de longitud, y
O Colocar un delimitador al final de cada campo para separarlo del
siguiente.
No se 11ck.n mniundir los t6minos campo y regietro mn los significados que algunos
lenkmajes dr programaei6n les han dado, incluso Pnwnl. En Psscnl. un registra es una
estructura de datos apegada que puede contener miembms de tipos diferentes, donde
a cada miembro se le denomina campo. Como se ver& con frecuencia hay una correspondencia directa entre esas definiciones de los t6minos y los campos y registms que
se usan en los archivos. Sin embargo, los terminas campo y registro, coma se emplean
en el texto, tienen significadas mucha mds generales que los que tienen en Pascal.
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
En C:
En Pascal:
struct {
char apellido [lo];
char nombre [lo];
char direccibn [l51:
char ciu&d[l5J :
char estado[2];
char cpr91:
1 conj-de-campos;
m E
conj-de-campos
apellido :
nombre
:
direccin :
:
ciudad
estado
:
CP
END;
= EECOR
packed array
packed array
packed array
packed array
packed array
[l. .lo]
[l.. 10)
[l.,151
[l.,151
[1..21
of
of
of
of
of
char;
char;
char;
char;
char;
of char:
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
94
Longiiud de
los campos
10
1-
Datos: Ames
15
10
I
John
15
I
123 Maple
(a)
Stillwater
2
I l
OK74075
10
I
Mason
...
...
(b)
A m e s J o h n ; 1 2 3 Maple; S t i l l w a t e r ; o K i 4 0 7 5 ; M a s " ; A l a n 9 0 E a s t g a t e ; A d a ; 0 K ; 7 4 8 2 0
(e)
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
4.3
'I
PROGPAMA: leesec
Lee el nombre del archivo de entrada y lo abre como ENTRWA
inicia CONT-CAMPOS
LONG-CAMPO := leecampo(ENTRADA, CONTENIDO-CAMPO);
mientras ( LONG-CAMPO > O)
incrementa el CONT-CAMPOS
escribe CONT-CAMPOS y CONTENIDO-CAMPO en la pantalla
LONG-CAMPO :- leecampo (ENTRADA, CONTENIDO-CAMPO) ;
fin mientras
cierra ENTRADA
fin PROGRAMA
FUNCION: leecampo (ENTRADA, CONTENIDO-CAMPO)
inicia 1
inicia CH
mientras (no EOF (ENTRADA) y CA distinto de DELIMITADOR)
lee un carcter de ENTRADA en CAR
incrementa 1
CONTENIDO-CAMPO[I] := CA
fin mientras
devuelve(1ongitud del campo que se ley)
fin FUNCION
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
96
# 1:
# 2:
# 3:
# 4:
# 5:
# 6:
# 7:
# 8:
# 9:
Ames
John
123 Maple
Stillwater
OK
74075
Mason
Alan
90 Eastgate
# 10: Ada
# 11: OK
# 12: 74820
-ESTRUCTURAS DE REGISTROS
4.4
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
ESTRUCTURAS DE REGISTROS
97
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
98
combinan para hacer un registro de longitud fija. Esta clase de estructura de campos y registros se ilustra en l a figura 4.5(a).
Sin embargo, es importante comprender que fijar el nmero de
bytes en un registro no implica de ninguna manera que los tamaiios o
el nmero de campos deban ser fijos. Los registros de longitud fija se
usan con mucha frecuencia como recipientes para guardar un nmero
variable de campos de longitud variable. Tambi6n e s posible mezclar
campos de longitudfijay variable dentro de un registro. Lafigura4.5(b)
muestra cmo pueden colocarse campos de longitud variable en un
registro de longitud fija.
Ames
John
123 Maple
Stillwater
OK74075
Mason
Alan
90 Eastgate
Ada
OK74820
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
99
ESTRUCTURAS DE REGISTROS
datos
. .
ndice
@)
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
100
.. .
DE CADA REGISTRO
Esta es la opcin que, en el nivel de registro, es por completo similar a
la solucin que se dio para distinguir los campos en el programa del
ejemplo que se desarroll. Lamarcade fin de lnea seusa frecuentemente
como un delimitador de registro (la pareja de retorno de carro y avance
de lnea o, en sistemas UNIX, sloun carcter de avance de lneaC\n')).
En la figura 4.6(c) se usa un carcter '' como delimitador de registro.
4.5
UNA ESTRUCTURA DE REGISTROS QUE USA UN
INDICADOR DE LONGITUD
Ninguno de estos enfoques para preservar la idea de un registro dentro
de un archivo es apropiado en todas las situaciones. La seleccin de un
mtodo de organizacin del registro aepende de la naturaleza de los
datos y de lo que se necesite hacer con ellos. Se comenzar examinando
unaestructurade registro queusaun campodelongitudal principio del
registro. Este enfoque permite preservar l a variabilidad de la longitud
de los registros, inherente al archivo de secuencia de bytes inicial.
Se llamar escribereg al programa que construye esta nueva
estructura de registros de longitud variable. El conjunto de programas
que se presenta al final del captulo contiene las versiones de este
programa en C y en Turbo Pascal. La realizacin de este programa
requiere, en parte, modificar el programa escribesec que se hizo con
anterioridad en este capitulo, aunque tambin implica resolver algunos
problemas nuevos:
O
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
lee APELLIDO
mientras ( APELLIDO tenga longitud > O )
asigna la longitud de la cadena en BUFFER a cero
concatena: BUFFER + APELLIDO + DELIMITADOR
mientras ( existan campos por leer para el registro )
lee el CAMPO
concatena: BUFFER + CAMPO + DELIMITADOR
fin mientras
escribe la longitud de la cadena de BUFFER al archivo
escribe la cadena de BUFFER al archivo
lee APELLIDO
fin mientras
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
102
40 Ames
; John 1
Eastgate
123 Maple
: Ada: OK ( 74820:
Stillwater
; OK 1
74075
36 Mason
I Alan 1 90
4.6
MEZCLA DE NUMEROS Y CARACTERES:
USO DE UN VACIADO HEXADECIMAL
Los vaciados hexadecimales permiten examinar dentro de un archivo
los bytes reales almacenados. Por ejemplo, considrese la informacin
referida a la longitud de registro en la salida del programa en Pascal
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
Valor decimal
del nmero
'O'
Valor decimal
del nmero
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
104
-Espacio,
fEspaoio,
por la miama razn
0x24 es el cdigo ASCII de 'S'
O 10 20 30 40 -
F
1F
2F
3F
4F
2800416D
4D61706C
7C4F4B7C
6E7C416C
74657C41
Valores hexadecimales
65737C4A
657C5374
37343037
616E7C39
64617C4F
6F686E7C
696C6C77
347C2400
30204561
487C3734
Valores ASCII
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
..
105
Examinemos ahora los valores hexadecimales de los bytes que representan nmeros. En algunoscasos, comoen 123,lasrepresentaciones
son cdigos ASCII (Ox31,0~32,0~33);
en otros, como en la longitud de
registro 40 que comienza el archivo, son, en realidad, valores hexadecimales de dos bytes (0x28). Pero el nmero hexadecimal correspondiente a 40 parece ser 0x2800 en lugar de 0x0028. Por qu6 estn
invertidos los bytes?
La respuesta es que este vaciado hexadecimal es el tipo de salida
producida por un computador que almacena los valores de los nmeros
segn un orden de bytes invertido. Para enteros de dos bytes, el byte
menos significativo siempre se guarda en una direccin ms baja que
la del ms significativo. De esta forma, el byte con 0x28 se coloca en una
direccin de memoria que precede a la que se us6 para 0x00. Este orden
invertido tambin se aplica a los enteros largos de cuatro bytes en esas
mquinas. Por ejemplo, el valor hexadecimal del nmero 500 000 000
es OxlDCD6500. Si se transcribe este valor a un archivo en una
mquina VAX, IBM PC, o alguna otra de orden invertido, un vaciado
hexadecimal del archivo creado se ver asi:
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
106
4.7
LECTURA DE REGISTROS DE LONGITUD
VARIABLE DE UN ARCHIVO
Con la estructura del archivo de registros de longitudvariable precedidos
por campos de longitud de registro, es fcil escribir un programa que lea
todo el archivo, registro por registro, desplegando los campos de cada
uno de los registros en la pantalla. La lgica del programa se muestra
en la figura 4.11. El programa principal llama a la funcin toma-reg0
para que traslade los registros a u n buffer; este llamado continahasta
que toma-regO devuelve un valor de O. Una vez que toma-reg0 coloca
el contenido de un registro dentro de un buffer, se pasa el buffer %una
funcin llamada tomacampd). La llamada a toma-campd) implica
una posicin de bsqueda (POS-BUS) en la lista de argumentos. A
partir de POSBUS, toma-campd) traslada los caracteres del buffer
hacia un campo hasta que encuentra un delimitador o se llega al final
del registro. La funcin toma-campd) devuelve la POS-BUS para que
se use en la siguiente llamada. Las realizaciones de leereg, tanto en C
como en Pascal, se incluyen junto con los dems programas al final del
captulo.
4.8
EXTRACCION DE REGISTROS POR LLAVE:
FORMAS CANONICAS PARA LLAVES
Como est claro que la nueva estructura de archivo analizada concibe
un registro como la cantidad de informacin que se lee o escribe, tiene
sentido pensar en extraer slo un registro especfico en lugar de leer el
archivo completo, desplegndolo todo. Cuando se examina un registro
individual, es convenienteidentificarlo con una llave que se base en el
contenidodel registro. Por ejemplo,en el archivodenombresy direcciones
se puede desear tener acceso al "registro Ames", o al "registro Mason",
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
...
PROGRAMA: leereg
abre el archivo de entrada c o m q E N T
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
108
CONCEPTOSFUNDAMENTALESDEESTRUCTURASDE...
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
...
109
4.9
4.10
EVALUACION DEL DESEMPERO
DE LA BUSQUEDA SECUENCIAL
En los captulos que siguen se encuentran formas de bsqueda de
registros ms rpidas que el mecanismo de bsqueda secuencial. Se
puede usar la bsqueda secuencial como una especie de punto de
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
110
PRCGWLMA: e n c u e n t r a
s i (LLAVE-REGISTRO
== LLAVE-BUS)
a s i g n a VERDADERO a ENCONTRO
otro
LONG-REGISTRO
f i n mientras
s i (ENCONTRO)
l l a m a a toma_campa
:= to-reg
(ARCH-ENT,
BUFFER)
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
111
4.11
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
112
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
113
ACCESO DIRECTO
4.12
ACCESO DIRECTO
La alternativa ms radical para la bsqueda secuencia1 de un registro
en un archivo es un mecanismo de extraccin de informacin conocido
como acceso directo. Se tiene acceso directo a un registro cuando es
posible colocarse directamenteen eliniciodel registro y leerlo. Mientras
que la bsqueda secuencia1 es una operacin O(n), el acceso directo es
O(1);noimporta cungrande seael archivo, conun solo desplazamiento
es posible extraer el registro que se quiera.
El acceso directo implica saber dnde est el comienzo del registro
requerido. Algunas veces esta informacin acerca de la posicin del
registro se guarda en un archivo separado de ndices. Sin embargo, por
el momento se supone que no existe un ndice, y que, en lugar de esto,
se sabe el nmero relativo de registro (NRR) del que se desea. La idea
de un NRR es un concepto importante que surge de la nocin de un
archivo como un conjunto de registros, y no como un conjunto de bytes.
Si un archivo es una secuencia de registros, entonces el NRR de un
registro proporciona su posicin relativa con respecto al principio del
archivo. El primer registro de un archivo tiene un NRR O, el siguiente
tiene un NRR 1, y as sucesivamente.
En el archivo de nombres y direcciones es posible unir un registro
a su NRRasignndole nmeros de membresarelacionados con el orden
en que se introducen los registros al archivo. La persona con el primer
registro puede tener el nmero de membresa 1001,la segunda, el
nmero 1002,y as sucesivamente. Dado un nmero de membresa,
puede restarse 1001 para tener el NRR del registro.
&u6se puede hacer con este NRR?Nomucho,ya que las estmcturas
de archivos que se han usado hasta ahora consisten en registros de
longitudvariable. El NRRindica la posicin relativa del registro que se
quiereen lasemenciaderegistros, peroan se debeleer secuencialmente
a lo largo del archivo, contando los registros que se llevan, para tener
'
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
114
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
..
115
4.13
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
116
Ames
John
123 Maple
Stillwater
0K74075
Mason
Alan
90 E a s t g a t e
A&
OK74820
A m e s ~ J o h n ~ l 2M
3 a p l e i S t i l l w a t e r i O K ~ 7 5 1 t Espacio sin u s r
MasoniAlani90 Eastgate:A&~OKi74820:
t Espaciosin usar d
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
..
117
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
118
O
10
- 1F
20
30
40
50
- 2F
60
70
80
90
- 61
- 7F
3F
4F
5F
j 8F
- 9F
02000000
00000000
00000000
00000000
00000000 00000000
00000000 00000000
41606573
706C657C
487C3134
00000000
lC4A6F68
5374696C
3037351C
00000000
637C3132
6C776174
O0000000
00000000
33204061
65727C4F
00000000
O0000000
4D61736F
73146161
3832307C
00000000
6ElC416C
74657C41
00000000
00000000
616ElC39
64617C4F
00000000
00000000
30204561
487C3134
00000000
O0000000
02000000
00000000
0000000~
00000000
0000
00000000
00000000
0000nooo
00000000
00000000 00000000
00000000 00000000
2800
33204061
65727C4F
20202020
20202020
41606573
706C65lC
4Blc3734
20202020
7C4A6F68
5314696C
3037357C
20202020
6E7C3132
6~776174
20202020
20202020
24004061
45617374
31343832
20202020
2020
736F6ElC
67617465
307C2020
20232020
4165616E
lC416461
20202020
20202020
7C393020
7C4F4BlC
20202020
20202020
oooooooo oooooooo
00000000 00000000
................
................
Registro de encabezado
m e s ; ~ o h n1 123 : ~ a h h c r l c g i ~ I r 0
ple Stillwater I 0
K ; 75075 1 ........
................
1 90 Ea
stgate 1 Ada
820 1
: OK 1 74
Segundoregistro
............
................
................
................
................
................
Registro de encabezado
..
{ . m e s ; ~ o h n1 12
3M
~ ; srillwar
~
I
~
erlo~ 74075 1
$.Masa"
Alan
: 90 Eastgate I Ads
; OK
Primer registra
El entero en los primeros
dos bytes contiene el
nmero de bytes de datos
de registro
Segundo registro
174820:
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
4.14
REGISTROS DE ENCABEZADO
A menudo es necesario, o til, mantener informacin general sobre un
archivo que se usar en el futuro. Por ejemplo, en algunas versiones de
Pascal no esfcil saltarhasta el final del archivo, aunquela realizacin
permita el acceso directo. Una solucin simple a este problema es
mantener el contador del nmero de registros del archivoy almacenarlo
en alguna parte. Muchas veces se coloca un registro de encabezado al
principio del archivo para guardar esta clase de informacin.
El registro de encabezado tiene una estructura diferente de la que
tienen los registros de datos del archivo. Por ejemplo, la salida de
actua1iza.c usa un registro de encabezado de 32 bytes, mientras que
cada uno de los registros de datos contiene 64 bytes. Asimismo, los
registros de datos creados por actua1iza.c contienen slo caracteres
como datos, mientras que el registro de encabezado contiene un entero
que indica cuntos registros de datos hay en el archivo. La diferencia
entre los registros de encabezado y los de datos se acenta al incluir
informacin como la longitud de registro de los registros de datos, la
fecha y la hora de la actualizacin mas reciente del archivo, etctera.
Al realizar los registros de encabezado en Pascal, el programador
suele adecuar las diferencias entre los registros de datos y los de
encabezado mediante el uso de un registro variante. En actualiza.pas
se muestraunasolucin ms sencilla an: seusael campo entero inicial
del registro para un propsito diferente en el registro de encabezado. En
los registros de datos este campo guarda el nmero de bytes de datos
vlidos dentro del registro; en el registro de encabezado y a r d a el
nmero de los registros de datos del archivo.
Los registros de encabezado son una herramienta de diseo de
archivos muy difundida e importante. Por ejemplo, cuando se llegue al
punto en donde se hace el anlisis de la construccin de ndices para
archivos, se observar que los registros de encabezado con frecuencia
se colocan al principio del ndice para mantener informacin sobre
datos tales como el NRR del registro que es la base del ndice.
4.15
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
120
O
O
El acceso secuencial, y
El acceso directo.
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
RESUMEN
121
RESUMEN
El nivel ms bajo de organizacin que por lo regular se impone a un
archivo es el de una secuencia de bytes. Por desgracia, al almacenar los
datos en un archivo slo como una secuenciade bytes, se pierde lacapacidad de distinguir entre las unidades fundamentales de informacin
de los datos. A estas piezas fundamentales de informacin se les llama
campos. Los campos se agrupan para formar registros. Para reconocer
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
122
los campos y los registros se debe imponer una estructura alos datos del
archivo.
Existen varias formas de separar un campo de otro y un registro de
otro:
1. Fijar la longitud de cada campo o registro.
2. Empezar cada campo o registro con el nmero de bytes que
contenga.
3. Usar delimitadorespara marcarlasdivisionesentre entidades.
Otra tcnica til, en el caso de los registros, es usar un s e y n d o archivo
de ndices que informe dnde empieza cada registro.
A menudo tambin se impone a los archivos una organizacin de
nivel superior, donde los registros se agrupan en bloques. Este nivel se
impone para mejorar la eficiencia de la EIS en lugar de slo mejorar el
punto de vista lgico del archivo.
E n este capitulo se usa l a estructura de registro que emplea un
indicadorde longitud al iniciode cadauno paradesarrollar los programas
que escriben y leen un archivo de registros de longitud variable con
nombres y direcciones de personas. Se usa el manejo de buffers para
acumular el dato en un registro individual antes de conocer sulongitud
para poderlo transcribir al archivo. Los buffers tambin son tiles para
realizar l a lectura de un registro completo a la vez. Se representa el
campo de longitud de cada registro como un nmero binario o como una
secuencia de digitos ASCII. En el primer caso es til usar un vaciado
hexadecimal para examinar el contenido del archivo.
Algunas veces se identifican los registros individuales por su nmero relativo de registro (NRR) en un archivo. Sin embargo, a menudo
se necesita tambin identificar un registro mediante una llave, cuyo
valor est basado en algo del contenido del registro. Los valores llave
deben presentarse en a l y n a forma cannica predeterminada, o convertirse en sta, para que los programas las reconozcan en forma
precisa y sin ambigedades. Si cada valor llave de registro es distinto
de los dems, la llave puede emplearse para identificar y ubicar un
registro nico en el archivo. A las llaves que se usan en esta forma se
les llama llaves primarias.
En este capitulo se examina un programa llamado encuentra, que
busca secuencialmente a lo largo deun archivo un registrocon unallave
en particular. La bsqueda secuencial puede tener un desempeo
deficiente en archivos grandes, pero hay ocasiones en que la bsqueda
secuencial es adecuada. El manejo de registros en bloques puede usarse
para mejorar considerablemente el tiempo de E/S en una bsqueda
secuencial.
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
TERMINOS CLAVE
TERMINOS CLAVE
Acceso directo. Modo de acceder a un archivo que implica saltar al
lugar preciso de un registro. El acceso directo a un registro de
longitud fija por lo regular se lleva a cabo mediante su nmero
relativo de registro (NRR), despus calculando su distancia en
bytes y, por ltimo, colocndose en el primer byte del registro.
Acceso secuencial. El acceso secuencia1 a un archivo significa leer
el archivo desde el principio y continuar hasta que se haya ledo
todo lo que se necesita. La alternativa es el acceso directo.
Bloque. Conjunto de registros almacenados como una unidad
fsicamente contigua en el almacenamiento secundario. En este
capitulo se manejaron los registros por bloques para mejorar la
eficiencia de la EIS durante la bsqueda secuencial.
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
124
CONCEPTOS FUNDAMENTALES DE E S T R U C T W D E . .
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
EJERCICIOS
directo.
Registros de longitud variable. Organizacin de archivos en
donde los registros no tienen una longitud predeterminada; son
tan largos como sea necesario y, por tanto, permiten un mejor
uso del espacio que los registros de longitud fija.
Desafortunadamente, no es posible calcular l a distancia en
bytes a un registro de longitud variable nicamente con su
nmero relativo de registro.
Secuencia de bytes. Trmino que describe el punto de vista de
ms bajo nivel de un archivo. Si se empieza con el punto de vista
bsico de un archivo, como secuencia de bytes, entonces se puede
imponer niveles superiores de orden en el archivo, como
estructuras de campos, registros y bloques.
EJERCICIOS
1.Encuentre situaciones donde sean apropiadas cada una de las tres
estructuras de campos descritas en el texto. Haga lo mismo para cada
una de las estructuras de registro descritas.
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
126
7. Encuentre las estructuras de archivos bsicas disponibles en el lenguaje de programacin que actualmente usa. Porejemplo, reconoce su
lenguaje un tipo de estmctura de secuencia de bytes? Reconoce lneas
de texto?Maneja bloques de registros? Explique cmo puede desarrollar
los tipos de estructuras que sulenguajeno reconoce, usando estructuras
que s reconozca.
8. Indique cules son las estructuras de campos y registros bsicas
disponibles en PL'I o en COBOL.
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
EJERCICIOS
12.Se ha planteado (Sweet, 1985) que las llaves primarias deben ser
"sin datos, invariables, precisas y nicas." Analice l a importancia de
cada criterio y muestre, por ejemplo, cmo es que su ausencia podra
provocar problemas. La llave primaria usada en el archivo del ejemplo
viola alguno de los criterios?
13.iCuntas comparaciones se requeriran en promedio para encontrar
un registro en un archivo con 10 000 almacenado en disco, usando la
bsqueda secuencia]? Si el registro no est en el archivo, cuntas
comparaciones se requieren? Si el archivo se maneja por bloques, de tal
forma que se guardan 20 registros por bloque, cuntos accesos se
requieren en promedio? Cuntos, si slo se guarda un registro por
bloque?
14. En la evaluacin del desempeo de la bsqueda secuencial, se supone que toda lectura implica un desplazamiento del brazo del disco.
Cmo cambian las suposiciones en una mquina con un solo usuario?Cmo afectan el anlisis de labsquedaestas nuevas suposiciones?
15. Proporcione una frmula para encontrar el desplazamiento en
bytes de un registro de longitud fija donde el NRR del primer registro
es 1 en lugar de O.
16. Por qu no funciona la estructura de registros de longitud variable
en el programa actualiza? Ayudara tener un ndice que apunte al
inicio de cada registro de longitud variable?
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
128
organizacin de archivos?
EJERCICIOS DE PROGRAMACION
23. Reescriba escribecad, de tal forma que use delimitadores como
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
EJERCICIOS
Apellido:
Nombre:
Direccin:
Ciudad:
Estado:
Cdigo postal:
15 caracteres
15 caracteres
30 caracteres
20 caracteres
2 caracteres
5 caracteres
30. Modifique actua1ira.c y actualiza.pas para sealar al usuario cuando un registro excede su longitud fija. La modificacin permitir al
usuario reducir el registro a un tamao aceptable e introducirlo de
nuevo. Qu otras modificaciones haran ms slido el programa?
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
130
LEC'IZTRAS ADICIONALES
Muchos libros de texto cubren el material bsico del diseo de estruc- turas de
campos y registros, pero slo unos pocos abordan lasconsideracionesy opciones
de diseo con mucho detalle. Dos posibles fuentes son Teorey y Fry I19821 y
Wiederhold[1983].El capitulo'%hoiceofFile Organization", de Hanson [19821,
es excelente, pero resulta ms provechoso despus de leer el material de los
ltimos captulos de este texto. Se puede aprender mucho sobre los tipos de
alternativas de organizacin y acceso a archivos estudiando las descripciones
delas opciones dis-poniblesen ciertos lenguajes y sistemas administradores de
archivos. PWI ofrece un conjunto de alternativas particularmente rico, y
Pollack y Sterling [19801 las describen bien y ampliamente.
Sweet [19851 es un artculo corto pero estimulante sobre el diseo de
campos de llave. Se describen varios algoritmos interesantes para mejorar la
eficiencia de las bsquedas secuenciales en Gonnet [19841 y, por supuesto, en
Knuth [1973bl.
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
PROGRAMAS EN C: ARCHES.H
131
PROGRAMAS EN C
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
132
CONCEPTOSFUNDAMENTALESDEESTRUCTURASDE...
/*
arche5.h--archivo&en&zadoquecaitienelas
definiciones de E/S para archivos
*/
#define
Xdefine
tdefine
tdefine
#define
#define
PMODE
SOiOLECT
SOLOESCRIT
LECPESCRIT
DELIM-CAD
DELIM-m
Xdefine TM-MAX-FSG
0755
O
1
2
1"
'1'
"
512
sacocad(fd, cad)
*/
#include "arches.hV
#define saca-cad (fd,cad)
char
char
char
int
");
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
PROGRAMAS EN C: Ll3ESEt.C
--- Fin de
1
printf("\n\nDigite un apellido, o <CR> para salir\n>>><');
gets (apellido):
while (strlen(apellido) > O)
(
*/
tinclude "arches.h"
(continuacin)
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
134
int fd ,n;
char cad[30];
char nomrch[l5]:
int contcampos;
printf("Proporcione el nombre del archivo a leer: " ) ;
gets (nomarch);
if ( (fd = creat (nomrch,SOLOLECT)) < O) {
printf("Error en la apertura del archivo - fin de programa\nW);
exit (1);
cont-campos = 0;
while ( (n = leecampo (fd,cad)) > 0)
printf ("\tCampo # %3d: %s\n",++cont-campos,cad);
close (fd);
1
leecampo (fd,cad)
int fd;
char cad [ ] ;
(
int i;
char c;
i = 0.
while ( read(fd,hc,l) > O 6 8 c ! = DELIM-m)
cad[i++l = c:
cad[ll = '\O';
*/
return (i);
*/
Xinclude "arches.hW
Xdefine campo-a-buffreg (br,cad) strcat (br,cad); strcat (br,DELIM-CAD) ;
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
PROGRAMAS EN C: ESCR1BEREG.C
5,
char
char
int
int'
respuesta[50]:
nomrch[l5]:
fd.i:
long-reg;
");
printf ("\n\n%sW,solicitud[Ol ) :
gets (respuesta);
while (strlen(respuesta) > O)
buffreg[O]
!\Os;
campo-a-buffreg(buffreg,respuesta);
for (i=l: *solicitud[il != '\O' ; i++)
printf("%s",solicitud[il):
gets (respuesta):
campo-aabuffreg(buffreg,respuesta);
1
*/
*/
(continuacin)
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
136
p r i n t f ( " \ n \ n % s Vs ,o l i c i t u d [ O l ) ;
g e t s (respuesta) ;
/*
Preguntas:
Cmo funciona l a condicibn de terminacibn en e l c i c l o f o r :
f o r (i=l:* s o l ~ c i t u d [ i l !
: i++)
?
*/
*/
Xinclude "arches.hH
i n t f d , cont-reg, cont-campos:
i n t pos-bus, long-reg;
char nomarch[l5] :
char buffreg[TAM-M-REG
11:
char campo[TAM-M-REG + 11;
1
cont-reg = 0;
pos-bus = 0 :
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
PROGRAMAS EN C: T0MARC.C
while
(long-reg
/*
Pregunta: Por que se puede asignar O a pos-bus s61o una vez, fuera
del ciclo while para los registros? */
/*
tomarc.c
..
*/
Xinclude "arches.hU
toma-reg (fd, buffreg)
int fd;
char buffreg [ ] ;
t
int long-reg;
if (read(fd, &long-reg, 2 ) = O /* Toma la longitud del registro */
return (0);
/* Devuelve O si EOF */
long-reg
read (d. buffreg, long-reg) ;
/* Lee el registro
return (long-reg);
tomcampo (campo,buffreg,pos-bus,long-reg)
char campo [ l . buffreg [ ] :
short po-us,
long-reg;
(
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
138
short c p o ~= 0;
if (pos-bus
long-reg)
return (0);
i==
*/
/ * Ciclo de recoleccin */
while ( pos-bus < long-reg 66
(campo[cpos++l = buffreq [pos-bus++]) != DELIM-CAR)
if (campo[cpos - 11
==
campo[-cpsl = 0
else
campo[cpos] = 0
return (pos-bus) ;
DELIM-CAR)
/*
Si el ltimo
carcter es un campo * /
/* delimitador, reemplacese con nulo. */
*/
Yinclude "arches.h"
1
#define EXITO
Xdefine FRACASO O
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
PROGRAMAS EN C: ENCUENTRkC
exit (1);
)
printfV\n\nDigite el apellido:
gets (apellido);
");
toma-reg(fd,buffreg)) > 0 )
pos-bus = O;
pos-bus = toma-campo (apellido, buffreg, p+us,
long-reg) ;
pos-bus = tomacampo (nombre, buffreg, po-us,
long-reg) ;
hazllave (apellido, nombre, llave-enc) ;
if (strcmp(l1ave-enc, llave-bus) == 0)
encontr6 = EXITO;
)
if (encontr)
(
/ * Preguntas:
Por qu pos-bus se pone en cero dentro del ciclo while?
Que sucedera si se escribiese el ciclo que lee los registros
as:
while ( (long-reg
toma-reg(fd,buffreg) ) > O
&&
!encontr ) ?
*/
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
140
/*
hazllave (apellido,nombre,
cad)
...
Funcin que hace una llave a partir del nombre y del apellido
pasados por los argumentos de la funcin. Devuelve la llave en
f o m cannica a travs de la direccin pasada por el argumento
cad. La rutina que llama es responsable de asegurarse de que cad sea
lo suficientemente grande para guardar la cadena que se devuelve.
El valor devuelto por mdio del nombre de la funcin es la
longitud de la cadena devuelta a travs de cad.
*/
hazllave (apellido,nombre,cad)
char apellido[1, nombre [ l . cad[];
int longap, longnom;
longap = cadespac(apellldo);/*
strcpy (cad,apellido):
/*
cad[longap+t] = ' ';
/*
cad[longapl = ' \Ot:
longnom = cadespac(nombre1; / *
strcat (cad,nombre):
/*
maysculas (cad,cad) ;
/*
return (longap t longnom);
*/
*/
*/
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
*/
cadespac(cad)
char cad[ ] :
(
int i;
maysculas (cadent,cadsal)
char cadent [ 1 , cadsal [ 1 ;
"hile (*cadsal++ = (*cadent >= 'a' & & *cadent <*cadent & Ox5F : *cadent )
cadent++;
'2')
*/
Xinclude "arches.hW
Xdefine LONG-FCZG 64
Xdefine campo-a-buffreg (br,cad) strcat(br,cad) ; strcat (br,DELIM-CAD) ;
statlc char
*solicitud[]
( "
"
Apellido: ",
Nombre: ",
Direccin: " ,
(continuacin)
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
142
Ciudad: ",
Estado: ",
Cd. Post.: ",
"
0,
1:
9,
11:
/*
*/
else
/* Se abre el archivo existente - se lee el encabezado * /
readtfd,&encabezado,sizeof (encabezado)) ;
==
- llama al
menu ( ) ) < 3 )
switch (men-elec)
LONG-F32G
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
PROGRAMAS EN C: ACTUAL1ZA.C
nrr
pide-nrr
() ;
... */
t
/ * En caso contrario, se coloca en el registro ... */
b y t e p s = nrr * LONG-PSG + sizeof(encabezado);
lseek (fd, (long) byteps, 0);
/* Lo despliega y pide los cambios
...
*/
leey-muestra ( ) ;
if (canbio( ) )
(
/ * men0
...
*/
static men() {
int eleccibn;
char respuesta [lo1 ;
printf ("\n\n\n\n
DE ACTUALIZACION DEL ARCHIVO\n");
PRprintf ("\n\nUd. Puede elegir:\n\nU);
printf("\nl. Agregar un registro al final del archivo\nW);
printf("\n2. Extraer un registro para actualizarlo\n");
printf("\n3. Salir del programa\n\nW);
printf("Proporci0ne el nmero de su eleccibn: " ) ;
gets (respuesta);
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
144
eleccin = atoi(respuesta);
return (eleccin);
/ * pide-info0
...
*/
static pide-info (buffreg)
char buffreg[l;
{
int contcampos, i;
char respuesta[501;
'\Oa)
1
printf ("%se',solicitud[i]) :
gets (respuesta);
campo-a-buffreg(buffreg,respuesta);
)
F
/ * pide-nrr 0
...
*/
static pide-nrr ( )
{
int n r r :
char respuesta 1101:
~rintf("\n\nDigiteel nmero relativo del registro\nU);
printf ("\Que desee actualizar: " ) :
gets (respuesta);
nrr = atoi (respuesta);
return (nrr);
)
/ * leey-nuestra O
. ..
*/
static leey-nuestra
()
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
PROGRAMAS EN C: ACTUALIZ.4.C
char buffreg[TAb-MAX-REG
int pos-bus, long-datos;
pos-bus = O;
readifd, buffreg, LONG-REG);
printf ("\n\n\n\nContenido del registro existente\nS');
buffreg[iONG-REG]
/*
/ * cambio0
...
*/
static cambio 0 (
char respuesta(101;
printf("\n\nDesea modificar este registro?\nM);
printf ( " Conteste S o N, seguido por <ENTER> ==>") ;
gets (respuesta);
maysculas(respuesta,respuesta);
return ((respuesta[O]
==
1 : O);
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
146
PROGRAMAS EN PASCAL
Los programasen Pascal listadosen l a s siguientespginas corresponden
Adems de estos archivos, existe u n archivo llamado herramientas.prc, q u e contiene l a s h e r r a m i e n t a s p a r a t r a b a j a r con variables de
tipo cadena. Un listado de herramientas.prc aparece en el Apndice B,
al f i n a l del libro.
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
1: PRO-
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
escribesec (INPUT,OUTPUT) :
' 1 ';
=
255;
TYPE
cadena
= packed array [O..TAM-M?&-REGI
o char;
= (apellido,nombre, direccin, ciudad,estado,codpost) ;
lista-ent
tlpoarchivo = packed array[l..40] of char;
VAR
respuesta
(continuacin)
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
148
20:
tipo-resp : lista-ent;
21:
nomrch
: tiparchivo;
22:
archivosal : text;
23:
24: {$1 herramientas.prc)
25: ( Otra directiva que indica al compilador incluir el archivo
26:
herramientas.prc )
27:
28: BEGIN {principal}
29:
write('Proporcione el nombre del archivo: ' ) ;
30:
readln (nomarch);
31:
assign (archivosa1,nomrch)
:
32:
rewrite(archivosa1):
33:
34:
write('Digite un apellido, o <CR> para salir: ' ) :
35:
lee-cad (respuesta[apellido]1 ;
36:
while (long-cad (respuesta[apellido]) > O) DO
37:
BEGIN
38:
{ T o m todos los datos de una persona }
39:
write ( '
Nombre: ' ) ;
40:
lee-cad (respuesta[nombrel ) :
41:
write(' Direccin:'):
42:
leecad (respuesta[direcci6nlI:
43:
write ( '
Ciudad: ' ) :
lee-cad (respuesta[ciudad]) ;
44:
45:
write ( '
Estado: ' 1 ;
46:
lee-cad(respuesta [estado]) ;
47:
write('Cod. Post.: ' ) ;
lee-cad (respuesta[codpost]) ;
48:
49:
50:
{ escribe las respuestas al archivo )
51:
for tiporesp := apellido TO codpost DO
escribe-arch-cad (archivosal,respuesta [tipo-respl ) ;
52:
53:
54:
{ inicia la siguiente vuelta de lectura 1
55:
write('Digite un apellido, o <CR> para salir\n>>>');
56:
lee-cadirespuesta [apellido]) ;
57:
END;
58:
close (archivosal)
59: END.
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
CONST
DELIM-CA = ' I ';
TAM-MAX-REG = 255;
TYPE
cadena
= packed array [O..TAM-MAX-REG]
o char:
tipoarchivo = packed array[l..40] o char;
VAR
:
nomrch
archivoent :
contcampos:
long-campo :
cad
:
tlpoarchlvo:
text:
integer;
integer;
cadena;
(SI herramientas.prc1
FUNCTION leecampo(VAR archivoent: text; VAR cad : cadena): integer;
(
Funcin que lee caracteres del archivo archivoent hasta que alcanza
el final del archivo o una ' 1 ' . Leecampo pone los caracteres en cad
y devaelve la longitud de cad )
VAR
i : integer;
car : char;
BEGIN
i := O.
car : = ' ';
"hile (not EOF (archivoent)) and (car <> DELIM-W) DO
BEGIN
read (archivoent,car);
i := i + 1;
cad[i] := car
END;
i := i - 1 ;
cad[OI := CHR(i) ;
leecampo := 1
END;
(continuacin)
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
150
BEGIN ( principal )
write('Proporcione el norbre del archivo que quiera abrir:
readln (nomarch);
assign (archivoent,nomarch);
rest (archivoent);
cont-campos
:=
');
0;
long-campo := leecampo(archivoent,cad);
while (lonpampo > O) DO
BEGIN
cont-campos := cont-campos + 1;
write(' c a q m #':lO,cont-camps:l, ' : ' :2);
escribe-cad (cad);
( escribe-cad est en herramentas.prc
long-campo := leecampo(archivoent,cad)
END;
close (archivoent)
ENE.
escribereg (INPUT,OUTPUT);
2:
3: (SB-)
4:
5: CONST
6:
DELIM-CAR = ' 1 ' ;
7:
TAM-MAX-FSG = 255;
8:
9: TYPE
10:
cadena
= packed array [O..TAM-MAX-FSG] of char;
11:
tipoarchivo = packed array[l. .40] o char;
12:
13: VAR
14:
15:
16:
17:
18:
19:
nomrch
archivosal
respuesta
buffer
long-reg
tipoarchivo:
: text;
:
:
:
cadena;
cadena;
integer;
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
(continuacin)
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
152
67:
68:
69:
70:
71:
72:
73:
74:
15:
76:
77:
78:
O);
TYPE
packed array [O. .TAM-MRX-REGI of char;
cadena
tipoarchivo = packed array[l..40] of char;
VAR
nomrch
:
archivosal :
cont-regs :
:
pos-bus
long-reg
:
cont-campos:
:
buffer
campo
tipoarchivo;
text;
integer;
integer;
integer;
integer;
cadena;
: cadena;
{SI herramientas.prc)
(SI toma.prc1
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
BEGIN tprinclpal)
write('Proporcione el norrS3re del archivo por leer: ' 1 ;
readln (nomarch);
assign (archivosa1,nomarch);
rewrite(archivosa1);
cont-regs := 1;
pos-bus := 0:
long-reg := toma-reg(archivosal.buffer);
while long-reg > O DO
BEGIN
writeln('Reglstro ',cont-regs);
cont-regs := cont-regs t 1;
cont-campos := 1;
posbus := toma-campo(campo, buffer,pos_bus,long-reg) ;
while pos-bus > O DO
BEGIN
Campo ' , contcampos, ' : ' ) :
write ( '
escribe-cad (campo);
cont-campos := cont-campos + 1;
posbus := tomacampo(campo,buffer,pos~bus.long~reg)
END:
long-reg := toma-reg (archivosal,buffer)
END;
close (archivosal)
END.
( Funcin
VAR
long-reg
: integer;
: char:
espacio
BEGIN
if EOF(fd) then
t o - r e g := O
else
BEGIN
(continuacin)
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
154
read(fd,long-reg) ;
read(fd,espacio) ;
lee-arch-cad (fd,buffer,long-regl ;
tom-reg := long-reg
END
END;
FUNCTION toma_campo(VAR campo: cadena;buffer: cadena;Var posbus: integer;
long-reg: integer):integer;
(
'
VAR
posf
: integer;
BEGIN
if posbus = long-reg then
torocampo := O
else
BEGIN
pos := 1;
posbus := posbus + 1;
campo[posf] := buffer[posbus] ;
while (camp[posf] o DELIM-CAR) and (posbus < long-reg) DO
BEGIN
pos := pos + 1;
posbus := posbus + 1:
campo [posf1 := buffer[posbus]
END;
if campo[posf]
DELIM-CAR then
campo[OI := CHR(posf - 1)
else
campo[O] := CHR(posf1;
tomacampo := posbus
END
END;
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
CONST
TAM-MAX-REG = 255;
DELIM-CA = ' 1 ' ;
TPE
cadena
tipoarchivo
vm
iiomrch
archivosal
apellido
nombre
llave-bus
longitud
encontr
long-reg
buffer
: tipoarchivo:
: text:
: cadena:
:
:
:
:
:
:
po-UJ
:
llave-encont :
campo
:
cadena;
cadena;
integer;
boolean:
integer:
cadena;
integer:
cadena:
cadena:
($1 herramientas.prc)
(SI toma.prc)
BEGIN (principal)
write('Proporcione el nombre del archivo para bsqueda: '1:
readln (nomarch):
assign (archivosal,nomarch):
rewrite (archivosal);
write('Digite el apellido: ' ) :
lee-cad(apel1ido) ;
write ( 'Digite el nombre: ' ) ;
lee-cad(nombre) :
hazllave (apellido,nombre,llave--bus);
encontr := FALSE:
long-reg := toma-reg(archivosa1,bufferl:
while ((not encontr) and (long-reg > O)) DO
BEGIN
pos-bus := O:
pos-bus := toma-campo (apellido,buffer,p o e u s . long-regl ;
pos-bus := toma_campo (nombre,buffer,posbus,long-reg) ;
hazllave(apellido,nombre,llave-encont);
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
156
if comp~cad(llave~encont,llave~bus)
= O then
encontr := TRUE
else
long-reg := toma-reg(archivosa1,buffer);
END;
close (archivosal);
( Si se encontrb el registro, se imprimen los campos 1
if encontrb then
BEGIN
writeln('Se encontr el registro:');
writeln;
pos-bus := O;
( Divide los campos ]
pos-bus := toma-campo(campo, buffer,pos-bus,long-reg) ;
while pos-bus > O DO
BEGIN
escribe-cad (campo);
posbus := toma-campo (campo,buffer,posbus,long-reg)
END;
END
else
writeln(' El registro no se encontr.');
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
(continuacin)
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
158
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
conc-cad ( b u f f e r , c a d ) ;
cad-dato[Ol := CHR(1) ;
cad-dato [ l l := DELIM_CAR;
conc-cad ( b u f f e r , cad-dato)
END;
FUNCTION men:integer;
( Funcin l o c a l que p i d e a l u s u a r i o l a s i g u i e n t e o p e r a c i b n .
Devuelve e l v a l o r numrico d e l a r e s p u e s t a d e l u s u a r i o )
VAR
eleccin : integer;
BEGIN
writeln;
PROGRAMA DE ACTUALIZACION DEL ARCHIVO');
writeln ( '
writeln;
w r i t e l n ('Ud. Puede e l e g i r : ' ) ;
writeln;
writeln ( '
1. Agregar un r e g i s t r o a l f i n a l d e l a r c h i v o ' ) ;
writeln ( '
2. E x t r a e r un r e g i s t r o p a r a a c t u a l i z a r l o ' ) ;
3. S a l ~ d
r e l programa');
writeln ( '
writeln;
write ( ' P r o p o r c i o n e e l nmero d e su e l e c c i n : ) ;
r e a d l n ( e l e c c i n );
writeln;
men := e l e c c i n
END;
PROCEDURE pide-info (VAR b u f f c a d : cadena) ;
( P r o c e d i m i e n t o l o c a l que l e e l o s campos d e nonbre y d i r e c c i n ,
e s c r i b i n d o l o s a l b u f f e r que se p a s a como p a r m t r o )
VAR
r e s p u e s t a : cadena;
BEGIN
( Limpia e l b u f f e r d e l r e g i s t r o 1
limpia-cad (buf f cad) ;
( Toma l o s campos )
w r i t e ('
Apellido: ' ) ;
lee-cad ( r e s p u e s t a ) ;
campo-abuffer (buffcad, respuesta) ;
write ( '
Nombre: ' ) ;
lee-cad ( r e s p u e s t a ) ;
campompoaabuf
fer(buffcad, respuesta) ;
write ( '
Direccin: ' ) ;
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
1-ad
(respuesta);
campo-a-buffer (buffcad,respuesta);
Ciudad:' ) ;
write ( '
lee-cad (respuesta):
campo-a-buffer (buffcad,respuesta);
Estado : ' ) ;
write ( '
1-ad(respuesta);
campo-a-buffer(buffcad, respuesta);
write ( <
Cd. Post. : * ) ;
lee-cad (respuesta);
campompoaabuffer(buffcad,respuesta);
writeln
END;
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
FUNCTION pide-nrr:.integer;
(
VAR
nrr
: integer;
BEGIN
writeln('Proporci0ne el nmero relativo del');
writeln('registro que desea actualizar: ' ) ;
readln (nrr);
writeln;
pide-nrr := nrr
END:
PROCEDURE l e e ~ ~ m e s t r a ;
Procedimiento para leer y desplegar un registro. Este
procedimiento no incluye localizacin: la lectura empieza
en la posicin actual del archivo 1
VAR
pos-bus
: integer;
regbuffdat : regdato;
i
: integer;
long-datos : integer;
CampO
: cadena:
buffcad
: cadena:
BEGIN
pos-bus :- O;
read(archivosa1,regbuffdat);
(
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
160
VAR
respuesta : char:
BEGIN
writeln ('Desea modificar este registro?') ;
write ( '
Conteste S o N, seguido por <ENTER> ==>'):
readln (respuesta);
writeln;
if (respuesta = 'S') or (respuesta = ' S ) then
cambio := 1
else
cambio := O
END:
BEGIN {principal)
write('Proporcione el nombre del archivo: * ) :
readln (nomarch):
assign (archivosal.nomarch):
write(' ;El archivo ya existe? (responda S o N): ' ) :
readln (respuesta):
writeln:
if (respuesta = 'S') OR (respuesta = S ' ) then
BEGIN
( Abre archivosal
)
reset (archivosal);
read(archivosa1,encabezado);
( Toma el encabezado
1
cont-regs := encabezado.longitud
[ Lee el nm. de regs. )
END
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
PROGRAMAS EN PASCAL:ACTUAUZA.PAS
189:
else
190:
BEGIN
191:
rewrite (archivosal);
( Crea arch~vosal
1
192:
cont-regs := O;
( Inicia el nm. de regs. )
193:
encabezado.longitud :- cont-regs; [ lo coloca en el reg. )
194:
for i := 1 to LONG-F?ZG DO
( de encabezado
)
195:
encabezado.datos[il := CHR(0); ( pone los datos del enc.
196:
write(archivosa1,encabezado)
( a nulo; escribe el reg. )
197:
END;
( de encabezado
1
198:
199:l Ciclo del prog. princ.-llama al men y despus salta a las ops. )
200:
men-elec := men;
201:
while men-elec < 3 DO
BGGIN
202:
203:
CASE menelec of
204:
1:
( Agrega un registro nuevo 1
205:
BEGIN
writeln('Proporcione la inf. del registro nuevo --'1;
206:
207:
writeln;
208:
writeln;
209:
pide-info (buffcad);
210:
caddat(regbuffdat,buffcad); ( Convierte cadbuff 1
211:
nrr := cont-regs + 1;
( al tipo regdatos )
212:
seek (archivosa1,nrr)
;
213:
write (archivosal,regbuffdat);
214:
cont-regs := cont-regs + 1
215:
END;
216:
2:
( Actualiza un registro existente )
217:
BEGIN
218:
nrr := pide-nrr;
219:
( Si el NRR es muy grande, imprime mensaje de error ... 1
if (nrr > cont-regs) or (nrr < 1) then
BEGIN
writeln('E1 nmero de reg. est fuera de margen');
writeln ( ' . . . se regresa al men . . . ' )
END
else ( en caso contrario, se coloca en el registro
BEGIN
seek (archivosal, nrr) ;
... 1
(continuacin)
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.
Este documento es proporcionado al estudiante con fines educativos, para la crtica y la investigacin respetando la reglamentacin en materia de derechos de autor.
Este documento no tiene costo alguno. El uso indebido de este documento es responsabilidad del estudiante.
162
235:
writeln('Proporcione los valores revisados: ' ) ;
236:
pide-info (buffcad):
237:
caddat (regbuffdat,buffcad) : ( Convierte buffcad
238:
al tipo regdatos 1
239:
seek (archivosal, nrr) ;
240:
write(archivosal,regbuffdat)
241:
END
242:
END
243:
END
244:
END: 1 CASE )
245:
men-elec := men
246:
END: ( while 1
247:
1
248: [ Reescribe el cont. de regs. correcto en el encab. antes de
249:
encabezado.longitud := contregs:
(
terminar
1
250:
seek (archivosal,0);
251:
write (archivosal,encabezado);
252:
close (archivosal)
253: END.
.. .
...
VAR
i
: integer;
BEGIN
regbuffdat.1ongitud := min(L0NG-ffiG,long-cad(buffcad));
for i := 1 to regbuffdat.1ongitud DO
regbuffdat.datos[i] := buffcad[il:
( Limpia el resto del buffer )
while i < LONG-REG DO
BEGIN
i := i + 1:
regbuffdat.datos[i] := ' *
END
END;
J. Folk, M. y B. Zoellick. (1992). Conceptos fundamentales de estructuras de archivos. En Estructuras de archivos (pp. 90-145). EUA: Addison-Wesley Iberoamericana.