178 Estructuras de datos: archivos
*, #, etc. Esta función se utiliza en la lectura de archivos secuenciales. En escritura, al cerrar
el archivo, el procesador coloca la marca EOF. Reiteramos, en los archivos secuenciales, para
acceder a un registro, se debe pasar por los anteriores, no se puede acceder directamente a un
registro dado. Leer o escribir en un archivo secuencial significa siempre “en el registro siguiente”
(o en el primero cuando se abre).
b) Organización directa
Sabemos que en este tipo de organización se accede al registro sin necesidad de pasar por
los registros que le anteceden, ya que el procesador junto a su sistema operativo, los ubica en
direcciones de disco o memoria que obtiene a través de un cálculo. Si todos los registros tienen el
mismo tamaño y están almacenados consecutivamente, conociendo el tamaño de cada uno, le es
simple al procesador localizar el registro número N, con independencia de los demás. Entonces
se hace necesario informar al compilador cómo son los registros, pues ya dijimos que en un
archivo directo son todos del mismo tipo. Esto se efectúa habitualmente al abrir el archivo. No es
necesario, en cambio, especificar el modo de habilitación, porque los archivos directos se abren
siempre como entrada-salida.
Si bien la sintaxis de las declaraciones y operaciones varía considerablemente de un lenguaje
a otro, es esencial que en cada operación de lectura o escritura se indique específicamente el
número relativo del registro en el que se va a leer o escribir. Aquí ya no hay “registro siguiente”.
El ejemplo que sigue busca dar una idea de cómo se trabaja con archivos directos, procurando no
atarse a formas rígidas de sintaxis.
Sólo puede emplearse con soportes direccionales. El procesador debe conocer o calcular
la dirección de cada registro a partir de su número relativo (1, 2, 3,..), para poder posicionarse
directamente en él.
c) Organización indexada
Consideremos un archivo de organización directa cuyos registros, todos de la misma forma
(p. ej. el tipo alum declarado anteriormente), contienen campos referidos a alumnos de una
asignatura:
legajo apeynom notas domicilio
G2015 GARCIA ALBERTO 8 10 6 8 7 JUJUY 1678 ROSARIO
P2436 PEREZ JUAN 73856 ALSINA 380 PERGAMINO
R3118 RODRIGUEZ ANA 9 9 9 7 10 PASCO 1220 ROSARIO
L3223 LOPEZ JOSE 55672 SALTA 927 PARANA
Cada registro está representado por una línea, y al procesar el archivo podemos acceder di-
rectamente a él, sin pasar por los anteriores, si conocemos su posición, número de orden o
número relativo.
Llamamos campo clave a un campo que toma valores distintos en cada uno de los registros
del archivo. En este caso, el legajo es seguro un campo clave, pues cada alumno aparece una sola
8.1 Organización de Archivos 179
vez, y entonces legajodefine unívocamente al registro que lo contiene. El campo nombre podría
eventualmente pensarse como clave, pero puede darse el caso de homónimos. Las notas y el
domicilio no son claves, pues pueden repetirse en distintos registros.En las aplicaciones, puede
ser importante acceder a un registro conociendo su clave, p. ej. 191;Qué nota obtuvo el alumno de
legajo R3118?, pero a un archivo directo sólo podemos acceder por número relativo de registro:
el 1, el 2, el 26. Si no sabemos en qué registro están los datos del legajo R3118, tendremos que
acceder primero al registro 1, si el legajo no coincide ir al 2, etc. y esto no es más que una búsque-
da secuencial, que es lenta.La organización indexada soluciona el problema agregando al archivo
directo un archivo secuencial complementario llamado índice, cuyos registros contienen, al la-
do de cada valor de la clave, el número de registro en que ésta se encuentra en el archivo principal.
INDICE
clave no. de registro
A1111 7
L3223 4
P2436 2
R3112 3
Z0325 1
Las claves habitualmente están ordenadas. Entonces, para procesar el registro cuya clave es
R3112, vamos al índice y hacemos una búsqueda binaria o dicotómica, según el método que ya
hemos desarrollado en el capítulo correspondiente. El resultado de la búsqueda, 3 en este caso,
nos permite ahora sí acceder en forma directa al registro número 3 del archivo principal, sin tener
que pasar por los anteriores. En la organización indexada, que es común en bases de datos, cada
vez que se modifica el archivo principal, se actualiza automáticamente el índice.
a.1) Instrucciones para el manejo de archivos con Organización Secuencial
Orden abrir()
En nuestro pseudocódigo la orden Abrir significara: HABILITAR
La forma o sintaxis es:
abrir (nro de comunicación lógico, “Path o ruta nombre del archivo”, acción= “modo”)
Donde:
nro de comunicación lógico o canal de comunicación es un número ENTERO, que se asigna
al archivo al habilitarlo. En cada operación posterior que deba realizase con ese archivo se lo
identificará a través de ese número y no por medio de su nombre. Algunos lenguajes, en vez del
nro, emplean un nombrede variable o alias para identificar al archivo. “Path o ruta nombre del
archivo” es el lugar donde se encuentra o encontrará el archivo habilitado,seguido del nombre
del mismo. modo o forma de su habilitación, puede asumir los valores:
Escritura, el archivo habilitado es para crearlo, se graba o escribe un archivo nuevo.
Lectura, el archivo habilitado es leído y ya debe estar creado.
Lectura-Escritura, permite abrir un archivo para lectura yx2F;o escritura. Existe el peligro