Professional Documents
Culture Documents
ARCHIVOS
Introducción.
Las estructuras de datos que se asocian con un dispositivo de memoria auxiliar permanente
donde almacenan la información se denominan archivos.
Usaremos archivos:
- cuando la cantidad de datos que manipula el programa es muy grande y no hay suficiente
espacio en la RAM
- cuando el resultado o la salida de un programa sirva de entrada para otro programa, por lo cual
es necesario guardarlo en forma permanente
- cuando la carga sucesiva de datos se torna engorrosa, pesada y lleva demasiado tiempo, por lo
cual conviene guardarla en forma permanente
Definimos entonces:
Un archivo es una colección de datos del mismo tipo relacionados entre sí, almacenados
en una unidad de memoria secundaria, con un determinado diseño o estructura.
Para dar diseño a los archivos se usan los registros: físicamente un archivo se almacena
como una sucesión de datos estructurados por el diseño de un registro. La información se guarda
con el formato especificado por el registro, y se recupera con ese mismo formato. De esta manera,
Algoritmos y Estructuras de Datos- Apuntes teóricos Prof. Lic. María Gabriela Cerra
Año 2010
un registro será la mínima unidad de información transferible entre un archivo y un programa. Así
podemos decir que “un conjunto de registros con ciertos aspectos en común, y organizados para
algún propósito particular, constituyen un archivo”.
Según el modo en que se organizan los registros dentro de los archivos, se consideran 2
técnicas de acceso: secuencial y directa. El acceso secuencial permite acceder a los registros uno a
continuación del otro sin saltear ninguno. El acceso directo permite obtener un registro determinado
sin acceder a sus predecesores.
Características de un archivo
TAMAÑO: se refiere a la cantidad de registros que tiene el archivo y al espacio que ocupa el
mismo en memoria.
Espacio = tamaño de un registro * cantidad total de registros del archivo
CRECIMIENTO: es el tamaño que se prevee que puede tener el archivo al cabo de su vida
útil, en cuanto a la cantidad de registros.
TECNICAS DE ACCESO: se refiere a qué método de acceso se usa para recuperar los datos
del archivo. Secuencial: se procesa un registro detrás del otro sin saltear ninguno; Directo: se lee o
graba por clave o índice el registro deseado independientemente de los otros.
Declaración de archivos.
Por ser estructuras de datos compuestas, los archivos serán declarados en la zona de tipos
definidos por el usuario. Al archivo se lo identifica por un nombre genérico y debe declararse en
base a un registro que lo estructure.
Ejemplo:
Tipos estructurados
LIBRO = registro
TITULO: CARACTER 30
NRO: ENTERO 5
AUTOR :CARACTER 39;
finregistro
ARCH1= archivo de organización secuencial de registro LIBRO
variables
BIBLIO: ARCH1
Reg: LIBRO
Así definimos que vamos a usar un archivo de nombre BIBLIO almacenado en dispositivo
secundario, cuyos datos fueron organizados bajo el formato del registro LIBRO.
La información está estructurada por el diseño del registro LIBRO. Sólo puede guardarse y
recuperarse usando ese diseño de registro.
Algoritmos y Estructuras de Datos- Apuntes teóricos Prof. Lic. María Gabriela Cerra
Año 2010
- Asignación de archivos
- Apertura de archivos
Si bien para trabajar con un archivo el primer paso es asignarlo, esta operación no es
suficiente para operar con dicho archivo. Se debe realizar la apertura del mismo indicando el tipo de
operaciones que se van a realizar sobre él: solo lectura (consulta) o escritura (grabado o creación).
Los lenguajes de programación poseen instrucciones específicas para tal fin. En pseudocódigo la
usaremos así:
Marca de EOF
1º registro 2º registro ……
puntero de direccionamiento
Algoritmos y Estructuras de Datos- Apuntes teóricos Prof. Lic. María Gabriela Cerra
Año 2010
Ejemplos:
- Cierre de archivos
Una vez finalizado el trabajo con el archivo debe ser cerrado, lo cual determina la
desaparición de la posición corriente o puntero de direccionamiento y saca de actividad al archivo.
En el caso de estar usándolo para grabar datos, el cierre del archivo provoca que se agregue
automáticamente al final del mismo una marca especial, llamada de Fin de Archivo (EOF: end of
file).
Cerrar (nombrelógicoarchivo)
- Lectura de archivos
Para consultar los datos que tiene almacenado el archivo usaremos un procedimiento que
nos permite recuperar la información desde el dispositivo secundario, de a un registro por vez.
La instrucción es:
Marca de EOF
1º registro 2º registro ………
- Escritura de un archivo
Para grabar datos en dispositivo auxiliar usaremos la operación de escritura de datos, que
también nos permitirá almacenar de a un registro por vez.
Marca de EOF
1º registro 2º registro ………
Lo que produce esta instrucción es la transferencia de los datos cargados en el registro REG
de la memoria RAM, al dispositivo secundario donde reside el archivo BIBLIO, en la posición
corriente del mismo. También automáticamente se incrementa la posición corriente del archivo,
quedando accesible el próximo lugar a donde grabar el siguiente dato.
Todos los lenguajes proveen procedimientos específicos de escritura de archivos, a los
cuales se les pasa como parámetros el archivo ( por referencia ) y el registro (por copia).
Usaremos una función que nos permitirá detectar el fin de datos del archivo.
EOF( nombrelógicoarchivo)
Ej: EOF(archi)
En cada lenguaje se implementa de distinta manera, pero siempre el archivo se pasa como
parámetro por referencia.
Algoritmos y Estructuras de Datos- Apuntes teóricos Prof. Lic. María Gabriela Cerra
Año 2010
Los archivos pueden ser pasados como parámetros de funciones y procedimientos, con el
cuidado de que siempre sean pasados por referencia (no deseamos crear una copia en la RAM de
un archivo que almacena grandes cantidades de datos, no??!!!!)
Programa uno;
Tipos estructurados
PELI= registro
NRO : ENTERO 3
TITULO : CARACTER 30
GENERO : CARACTER 20
Finregistro
variables
regis: PELI /* variable de tipo registro para las películas*/
video: VID /* archivo de películas*/
Hacer
ASIGNAR ( video, ‘C:\peliculas.dat’) /*relación entre arch. Lógico y físico*/
**** CONSULTAR
Se procesa el archivo de películas para contabilizar las películas dramáticas e imprimir los títulos de
todas las películas en stock
Algoritmos y Estructuras de Datos- Apuntes teóricos Prof. Lic. María Gabriela Cerra
Año 2010
Programa segundo;
Tipos estructurados
PELI = regsitro
NRO : ENTERO 3
TITULO : CARACTER 30
GENERO : CARACTER 20
Finregistro
Variables
video: VID
regis: PELI
contdrama: entero 3
Hacer
ASIGNAR( VIDEO , ‘C:\ peliculas.dat’)
ABRIR (VIDEO) ENTRADA
Contdrama:=0 /*contador de películas dramáticas*/
**** MODIFICAR
Aclaración: las operaciones de agregar, borrar registros y modificarlos se hacen usando un archivo
auxiliar, ya que al ser archivos secuenciales no hay forma de volver a reposicionarse en el registro
leído (pues el puntero de direccionamiento se pasa automáticamente al siguiente culminada la
lectura del registro actual).
Programa tresA;
Tipos estructurados
MAES= registro
PROD1 : ENTERO 2
STOCKAC : ENTERO 3
PRECIO : REAL 5,2
Algoritmos y Estructuras de Datos- Apuntes teóricos Prof. Lic. María Gabriela Cerra
Año 2010
Finregistro
Variables
STO: stock
NUEVO: stocknue
Ma: maes
Sa: maes
Hacer
ASIGNAR (STO , ‘kiosco.dat’)
ASIGNAR (NUEVO , ‘salida.dat’ )
LEER (STO, MA) /*lee un reg de stock , le modif. precio y lo graba en nuevo*/
SA.PROD1:= MA.PROD1
SA.STOCKAC:= MA.SATOCKAC
SA.PRECIO:= MA.PRECIO * 1.05
GRABAR (NUEVO, SA)
FINREPETIRMIENTRAS
CERRAR(STO)
CERRAR(NUevo)
FinHacer
FinPrograma.
Ejemplo 2: Modifica un archivo existente con datos de un archivo de detalle y lo graba en uno
nuevo
Programa tresB;
Tipos estructurados
MAES= registro
PROD1 : ENTERO 2
STOCKAC : ENTERO 3
PRECIO : REAL 5,2
Finregistro
DET = registro
PROD2 : ENTERO 2
Algoritmos y Estructuras de Datos- Apuntes teóricos Prof. Lic. María Gabriela Cerra
Año 2010
CANTVEN : ENTERO 3
finregistro
VENTAS = arch. De org. secuencial de diseño DET /* Archivo con cuyos datos se
actualiza el archivo STOCK */
Hacer
ASIGNAR( STO , ‘kiosco.dat’)
ASIGNAR( VEN , ‘movimientos.dat’ )
ASIGNAR(NUEVO , ‘salida.dat’ )
* AGREGAR REGISTROS Copia todos los registros del archivo original a uno nuevo y le
agrega los nuevos registros al final.
Programa cuatro;
Tipos estructurados
PELI= registro
NRO : ENTERO 3
TITULO : CARACTER 30
GENERO : CARACTER 20
Finregistro
variables
num : ENTERO 3 /* variable donde se lee el número de la película */
tit : CARACTER 30 /* variable donde se lee el título de la película */
gen : CARACTER 20 /* variable donde se lee el género de la película */
regis: PELI /* variable de tipo registro para las películas*/
video: VID /* archivo de películas*/
nuevo: NUE
Hacer
ASIGNAR ( video, ‘C:\peliculas.dat’) /*relación entre arch. Lógico y físico*/
ASIGNAR (nuevo , ‘C:\pelisnuevas.dat’)
ABRIR (video) ENTRADA
ABRIR (nuevo) SALIDA
REPETIR MIENTRAS (NOT EOF (video))
FINREPETIRMIENTRAS
CERRAR (video)
/*A continuación de los anteriores, se agregan los registros nuevos al archivo Nuevo*/
CERRAR(NUEVO)
FinHacer
FinPrograma.
* BORRAR REGISTROS Se copian a un archivo nuevo todos los registros que deben
permanecer en el archivo, exceptuando los que se eliminan
Programa cinco;
Tipos estructurados
PELI= registro
NRO : ENTERO 3
TITULO : CARACTER 30
GENERO : CARACTER 20
Finregistro
variables
num : ENTERO 3 /* variable donde se lee el número de la película */
tit : CARACTER 30 /* variable donde se lee el título de la película */
gen : CARACTER 20 /* variable donde se lee el género de la película */
regis: PELI /* variable de tipo registro para las películas*/
video: VID /* archivo de películas*/
nuevo: NUE
Hacer
ASIGNAR ( video, ‘C:\peliculas.dat’) /*relación entre arch. Lógico y físico*/
ASIGNAR (nuevo , ‘C:\pelisnuevas.dat’)
ABRIR (video) ENTRADA
ABRIR (nuevo) SALIDA
REPETIR MIENTRAS (NOT EOF (video))
- Asignación de archivos
- Apertura de archivos
Se debe realizar la apertura del mismo indicando el tipo de operaciones que se van a realizar
sobre él: solo lectura (consulta) o escritura (grabado: modificación o creación). Los lenguajes de
programación poseen instrucciones específicas para tal fin. En pseudocódigo la usaremos así:
Marca de EOF
1º registro 2º registro ……
puntero de direccionamiento
Ejemplos:
- Cierre de archivos
- Lectura de archivos
- Escritura de un archivo
Ir ( nombrelógicoarchivo, nro_de_registro)
Es una función que devuelve el número del registro corriente, es decir el que está apuntado
por el puntero de direccionamiento.
Posición (nombrelógicoarchivo)
Ej. Posición (BIBLIO) retorna 3 si está apuntando al 4º registro (recordar que numera
desde 0 )
Es una función que retorna la cantidad total de registros del archivo (valor entero entre 0 y
N). Si devuelve 0 significa que el archivo existe pero no tiene registros (archivo vacío).
programa accesoAleatorio;
tipos estructurados
Domicilio= registro
calle : cadena 20
numero: entero 4
ciudad: cadena 40
finregistro
Alumno = registro
nombre : cadena 20
edad : entero 2
dom : Domicilio
borrado: carácter 2
finregistro
ArchivoAlumnos = archivo de org. directa de diseño Alumno;
var
Algoritmos y Estructuras de Datos- Apuntes teóricos Prof. Lic. María Gabriela Cerra
Año 2010
archi : ArchivoAlumnos
opcion : carácter 1
Hacer
ABRIR (ARCHI) salida
Hacer
ABRIR (ARCHI) entrada/salida
IR (ARCHI, Tamaño (archi)) /* se posiciona al final del archivo, después del último registro,
recordar que numera los registros desde 0*/
Algoritmos y Estructuras de Datos- Apuntes teóricos Prof. Lic. María Gabriela Cerra
Año 2010
Bibliografía de referencia:
- Fundamentos de Programación. Algoritmos y estructuras de datos. Luis Joyanes Aguilar.
- Programación en Turbo/Borland Pascal 7.0, Luis Joyanes Aguilar
- Algoritmos, datos y programas. Conceptos básicos, De Giusti, Madoz y otros.