Está en la página 1de 8

INFORMATICA I Tema archivos Ing.

Laura Angelone

Volviendo al tema de registros, en muchas ocasiones uno de los campos que forman el registro contiene un
valor que nunca se repite. Si en el ejemplo del empleado guardásemos también el DNI o en el caso de un
alumno de la facultad, el Legajo, tendríamos un campo cuyo valor no se repite nunca, puesto que cada
persona tiene un número diferente de DNI, y cada alumno un legajo distinto. Este tipo de campo se
denomina campo clave. Los campos clave aportan una gran ventaja, ya que con ellos podemos identificar un
registro de manera univoca. Esto permite acelerar muchas operaciones con archivos, tales como búsquedas y
ordenaciones.

En registros vimos como armar, por ejemplo, una ficha de empleados, donde para cada empleado
disponemos de la siguiente información:

Nombre Direccion E.C. hijos sueldo


Apell Nom Calle Nro Dto CP Basico Ant Neto

Type
NN = registro
Carácter(25) Apellido
Carácter(15) Nombre
fin registro NN
end Type
NN Tipo de datos
definido anteriormente
Variables Empleado : registro
NN Nomb;
Empleado es el
nombre de la variable Direccion: registro
compuesta Carácter(30) Calle
Entero Nro
Fin registro direccion
Declaración de la Carácter EC Dirección y Sueldo son
variable Entero Hijos Variables compuestas
compuesta Sueldo : registro
real Básico
entero Ant
real Neto
Fin registro sueldo
Fin registro empleado.

Lo mismo podríamos hacer para trabajar con la información de:

Equipos de football para generar la tabla de posiciones.


Una concesionaria de automóviles.
Socios de un club.
Libros de una biblioteca.
Datos de tarjetas de créditos.
Datos de los usuarios de Internet.
Datos de una inmobiliaria.

Cuando se trabaja con este tipo de datos, el objetivo es almacenar dicha información en un soporte externo,
por ejemplo en un disco. Disponiendo de un registro para cada objeto.
INFORMATICA I ARCHIVO Ing. Laura Angelone

En muchos programas, cuando la información se debe volcar a memoria para poder procesarla, tendremos
que utilizar una estructura de arreglos para almacenar la información de los diferentes registros. Es decir,
necesitamos declarar un arreglo cuyos elementos sean registros. A continuación veremos cómo lograrlo.

ARREGLOS DE REGISTROS

Para declarar un arreglo de registros se debe definir un tipo de datos del registro a usar de la siguiente
manera. Lo veremos con un ejemplo.

1) definición de un tipo de dato, por ejemplo denominado TDE, utilizando el Type:

Type
TDE = registro
NN Nomb;
Direccion: registro
Carácter(30) Calle
Entero Nro
fin registro direccion

carácter EC
entero Hijos
Sueldo : registro
real Básico
entero Ant
real Neto
Fin registro sueldo
endType

2) declaración del arreglo de registros, por ejemplo denominado E

Variables TDE E[100 ]

Donde TDE es el tipo de dato antes definido.

3) uso del arreglo

Para notar un elemento de este arreglo se escribe “ primero el nombre del arreglo seguido del subíndice
correspondiente, y luego un punto por cada uno de los niveles jerárquicos de la estructura del registro”. Por
ejemplo para acceder al Sueldo Básico de la 3er. componente del arreglo E se escribe:

E[3].Sueldo.Básico

- 2 de 8
INFORMATICA I ARCHIVO Ing. Laura Angelone

Cómo hacer para guardar estos datos en memoria externa?

Supongamos que la memoria externa es un disco. En un dispositivo así se podrá almacenar información
(mediante la escritura en disco: de memoria a disco) que luego puede ser recuperada (mediante la lectura
desde disco: de disco a memoria) para su procesamiento.

REGISTRO LÓGICO
Cuando la información está almacenada en memoria, los datos están agrupados por una lógica impuesta en
la declaración de variables del programa. A este registro se lo denomina registro lógico.

ARCHIVO
Un conjunto de registros con cierto aspecto en común y, organizados para algún propósito particular, se
denomina archivo.
Un archivo es una estructura diseñada para contener datos en un medio externo de almacenamiento. Los
datos están organizados de tal modo que puedan ser recuperados fácilmente, actualizados, borrados y
almacenados nuevamente en el archivo con todos los cambios realizados.

CARACTERÍSTICAS DE LOS ARCHIVOS


♦ Un archivo siempre está en un soporte externo de almacenamiento ( disco, cinta, pendrive, etc. )
♦ Existe independencia de los datos respecto a los programas
♦ Todo programa intercambia información con un archivo mediante la estructura registro.
♦ La información guardada en un archivo es permanente.
♦ Los archivos permiten una gran capacidad de almacenamiento.

Los registros escritos en disco se los agrupan en un archivo.


Ejemplos:
1)- registro lógico en memoria: TDE E (100)
2)- registro lógico en disco: Emp : archivo de registros de tipo de dato TDE

REGISTRO FÍSICO
En un archivo la información está escrita “físicamente”. Cada vez que se realiza una operación sobre un
archivo, se trasvasa cierta cantidad de información de la memoria secundaria (un disco u otro dispositivo) a
la memoria RAM, o viceversa. A la cantidad de información (medida en bytes) que puede transferirse en una
operación de lectura/escritura entre la memoria y el dispositivo externo se denomina bloque o registro físico.
El registro físico viene predeterminado por el computador, por el periférico de almacenamiento, e incluso
por el sistema operativo.
Cuanto mayor sea el registro físico, mas registros lógicos se transferirán en una operación de entrada/salida,
ahorrando tiempo. Por otra parte, cada vez que se transfiere información de E/S, se almacena temporalmente
en una zona de memoria especial llamada buffer.

Veamos algunos ejemplos, suponiendo que el registro físico es de 512 Bytes, por ejemplo un sector de disco
o una línea de impresión (impresora)
Un registro físico puede contener uno o mas registros lógicos, de acuerdo al tamaño del registro lógico.
En el ejemplo de la encuesta literaria tenemos:
Tamaño del registro lógico = 2 bytes (edad) + 1 bytes ( sexo ) + 1byte ( género) = 4 bytes
Tamaño del registro físico = 512 bytes
Por lo tanto, el microprocesador podría en la lectura de información desde el disco a la memoria bajar 128
registros de una sola transferencia.
Si el ejemplo es el de Empleados:
Tamaño del registro lógico = 25 bytes (apellido) + 15 bytes (nombre) + 30 bytes (calle)

- 3 de 8
INFORMATICA I ARCHIVO Ing. Laura Angelone

+ 2 bytes (número) + 1 byte (EC) + 2 bytes (Hijos) + 5bytes (basico)


+ 2 bytes (Ant) + 5 bytes (neto) = 87 bytes
Tamaño del registro físico = 512 bytes
Por lo tanto, el microprocesador podría en la lectura de información desde el disco a la memoria bajar 5
registros de una sola transferencia.

ORGANIZACION DE LOS ARCHIVOS


Para almacenamiento y para acceder a los datos, se puede organizar la información dentro de los archivos de
muchas formas, nosotros veremos sólo tres formas distintas: SECUENCIAL, ACCESO DIRECTO y
SECUENCIAL INDEXADA.
El criterio de usar una u otra organización depende del uso posterior de la información.

Organización secuencial
En un archivo organizado secuencialmente los registros están grabados en el orden en el cual fueron
originalmente escritos.
Todos los tipos de almacenamiento externos (discos, cinta, etc.) soportan este tipo de organización.
Algunos dispositivos, por su naturaleza física, sólo soportan archivos secuenciales, por ejemplo, acceder a la
información almacenada en un registro particular de una cinta magnética, requiere el acceso a los registros
desde el primero hasta el buscado en ese momento (Es análogo a la búsqueda de un tema musical en un
cassette ). Otros dispositivos estrictamente secuenciales son las impresoras.

Para el manejo de este tipo de archivo los lenguajes de programación disponen de instrucciones especiales.
Para generalizar el manejo de archivos veremos la codificación en seudocódigo:

Para abrir un archivo:


ABRIR (nombre_del_archivo, referencia)

En un programa se le da una referencia a ese archivo. Esta es una variable de tipo “archivo” que se usa para
cada vez que se quiera nombrar a ese archivo. Gracias al uso de estas variables se pueden tener varios
archivos abiertos al mismo tiempo en un programa.

Para leer el registro siguiente desde el dispositivo de almacenamiento externo:

LEER ( registro, referencia )

Para escribir o grabar un registro en dispositivo de almacenamiento externo:

GRABAR ( registro, referencia )


Para cerrar un archivo abierto:
CERRAR ( referencia )

Para acceder a los datos de un archivo, primero debemos abrirlo, como si se tratara de un libro. En esta
operación el procesador coloca un puntero que "apunta" al primer registro del archivo.
Luego de leer este registro, dicho puntero se ubica en el registro siguiente.
Si continuamos leyendo, llegará un momento en que hemos leído todos los registros, llegando al final del
mismo. Una vez que el procesador lee la marca de fin del archivo ( EOF : End Of File ) no puede seguir
leyendo pues da error.
Sólo se puede leer el archivo mientras no sea el final del mismo.

Mientras Not( EOF(referencia) ) hacer

- 4 de 8
INFORMATICA I ARCHIVO Ing. Laura Angelone

Ejemplos de algoritmos para este tipo de archivos

1- Hacer un algoritmo que permita agregar ( ALTAS ) registros al archivo DATOS.DAT, cuyos registros
tienen 6 campos la siguiente forma :

DNI, NOMB, APELL, DIREC, CP, CIUDAD

Algoritmo ALTAS
Type Empleado = registro
DNI: real
Nombre : registro
Apell: string [25];
Nom: string [30];
Fin.;
Dirección: registro
Calle: string[30];
Nro : entero;
CP: entero;
CIUDAD: string [40];
Fin;
Fin;
Variables
E : Empleado;
A: archivo de Empleado;
RTA: char;
Está: char;
num: real;

Comienzo
ABRIR (DATOS.DAT , A) * DATOS. DAT es el nombre del archivo en disco y
* A es la referencia del archivo en el programa.
RTA = "S"
Mientras RTA ="S" hacer
Está="N"
Borrar pantalla
Escribir ( "D.N.I. : " )
Ingresar ( num )
( * ahora busca si este registro ya esta grabado * )
LEER( E, A );
Mientras Not ( EOF(A) ) AND Está = "N" hacer
Si E.DNI = num entonces Escribir ( " Ya esta este número de documento " )
Está ="S"
sino LEER( E, A )
fin si
fin mientras
Si Está = "N" entonces en 7,5 Escribir ( "Nombres : " ) Ingresar ( E.Nombre.Nom )
en 9,5 Escribir ( "Apellido : " ) Ingresar ( E.Nombre.Apell)
en 11,5 Escribir ( "Dirección : Calle - Nro " )
Ingresar ( E.Direccion.Calle)
Ingresar ( E.Direccion.Nro)
en 13,5 Escribir ( "Código Postal : " )

- 5 de 8
INFORMATICA I ARCHIVO Ing. Laura Angelone

Ingresar ( E.Direccion.CP)
en 15,5 Escribir ( "Localidad : " )
Ingresar ( E.Direccion.CIUDAD )
E.DNI = num
GRABAR ( E, A )
fin si
Escribir ( " Quiere ingresar otro registro ? " )
Ingresar ( RTA )
fin mientras
CERRAR ( A );
Fin .

2- Hacer un algoritmo que permita eliminar ( BAJAS ) registros al archivo DATOS.DAT, cuyos registros
tienen 6 campos de la siguiente forma :
DNI, NOMB, APELL, DIREC, CP, CIUDAD

Algoritmo BAJAS
* las declaraciones de variables son iguales que en el algoritmo ALTAS *
B : archivo de Empleado;
Comienzo
ABRIR (DATOS.DAT, A )
ABRIR (AUX, B )
RTA = "S"
Mientras RTA ="S" hacer
Está="N"
Borrar pantalla
en 5,10 Escribir ( "D.N.I. a eliminar : " )
en 5,18 Ingresar ( num )
LEER( E, A );
( * ahora busca si este registro ya está grabado * )
Mientras Not ( EOF() ) hacer
Si DNI = num entonces Escribir ( " Este documento corresponde a ", E.Nombre.Apell,
", " , E.Nombre.Nom , "y será eliminado del archivo DATOS.DAT ")
Está ="S"
sino GRABAR( E, B ) * el registro en AUX
fin si
LEER ( E, A ) * siguiente registro de DATOS.DAT
fin mientras
Si Está = "N" entonces Escribir (" No se encontró ese número de documento ", num ) fin Si
Escribir ( " Quiere borrar otro registro ? " )
Ingresar ( RTA )
RENOMBRAR AUX como DATOS.DAT
fin mientras
CERRAR ( A )
BORRAR ( B )
Fin.

- 6 de 8
INFORMATICA I ARCHIVO Ing. Laura Angelone

3- Hacer un algoritmo que permita hacer modificaciones ( MODIFICACIÓN ) a algunos registros al archivo
DATOS.DAT.

Algoritmo MODIFICAR
* las declaraciones de variables son iguales que en el algoritmo ALTAS *
Comienzo
ABRIR (DATOS.DAT, A )
RTA = "S"
Mientras RTA ="S" hacer
Está="N"
Borrar pantalla
en 5,10 Escribir ( "D.N.I. : " )
en 5,18 Ingresar ( num )
( * ahora busca si este registro ya está grabado * )
LEER ( E, A )
Mientras Not ( EOF(A) ) AND Está = "N" hacer
Si E.DNI = num entonces MOSTRAR ( E )
CAMBIOS ( E )
Está ="S"
sino LEER ( E, A )
fin si
fin mientras
Si Está = "N" entonces Escribir ( " El número de Documento ", num ," no existe" )
fin si
Escribir ( " Quiere ingresar otro registro ?" )
Ingresar ( RTA )
fin mientras
CERRAR ( A )
Fin .

Procedimiento MOSTRAR ( E: Empleado )


Comienzo
en 7,5 Escribir ( "Nombres : " ,E.Nombre.Nom)
en 9,5 Escribir ( "Apellido : ", E.Nombre.Apell)
en 11,5 Escribir ( "Dirección : ", E.Direccion.Calle , E.Direccion.Nro)
en 13,5 Escribir ( "Código Postal : ", E.Direccion.CP)
en 15,5 Escribir ( "Localidad : " , E.Direccion.CIUDAD)
fin del procedimiento Mostrar

Procedimiento CAMBIOS
Comienzo
en 7,16 Ingresar (E.Nombre.Nom)
en 9,16 Ingresar (E.Nombre.Apell)
en 11,16 Ingresar (E.Direccion.Calle , E.Direccion.Nro)
en 13,20 Ingresar (E.Direccion.CP)
en 15,16 Ingresar (E.Direccion.CIUDAD)
GRABAR ( E, A )
fin del procedimiento Cambios

- 7 de 8
INFORMATICA I ARCHIVO Ing. Laura Angelone

Organización de acceso directo

En este tipo de organización se accede al registro sin necesidad de leer los registros que le anteceden.
Cuando se graban los registros que componen el archivo, en los soportes físicos (discos o CD), el procesador
junto a su sistema operativo, ubica cada registro en direcciones del disco que las obtiene a través de una
fórmula matemática. Suponiendo que todos los registros tienen el mismo tamaño, y sabiendo cuanto lugar
ocupa cada uno en el disco, le es simple al procesador ubicar el registro, sin necesidad de leer todos los
registros anteriores, es decir, accede directamente al registro buscado.

Organización secuencial indexada

Los registros están grabados consecutivamente, pero el acceso puede hacerse mediante un camino muy
corto, casi directo. Los diccionarios con pestañas, son un buen ejemplo de este tipo de organización: si
buscamos la palabra " Saber ", primero buscaremos la pestaña S, y luego buscaremos la palabra " Saber".
En esta organización los índices se encuentran en una tabla e indican la localización de un grupo de
registros.

Un archivo con organización secuencial indexada, o simplemente indexado consta de:

- un archivo de datos: los registros con información propiamente dicha


- uno o varios archivos de índices ordenados según un campo clave. Cada registro de este archivo contiene la
clave del último registro de cada grupo, y la dirección relativa del primer registro del grupo. Por ejemplo en
que hoja comienza la letra a y cual es la ultima palabra que empieza con dicha letra.

Cuando deseamos localizar un registro por su clave, primero realiza una búsqueda en el archivo de índices,
hasta encontrar la primera clave superior a la dada. Junto a esta clave, se encuentra la dirección inicial del
grupo de registros que debe contener el registro a localizar. El procesador se posiciona directamente en esa
dirección, efectuando una búsqueda secuencial del registro por su clave.

- 8 de 8

También podría gustarte