UNIDAD 10: SISTEMAS DE ARCHIVOS

 SISTEMAS DE ARCHIVOS
ARCHIVO (FICHERO, FILE).
Un archivo es un grupo de datos estructurados que son almacenados en algún medio y pueden ser usados por las aplicaciones.
La forma en que una computadora organiza, da nombre, almacena y manipula los archivos se denomina sistema de archivos.
Como está organizada la información:
•   Dato: Es el elemento primario de la información conformado por símbolos (letras, números, dibujos, señas, gestos) que reunidos pueden cobrar significación.
•   Campo: elemento básico de información, que contiene un único valor y se caracteriza por su longitud y tipo. Ej.: nombre, su dirección, su teléfono, etc., de un profesor.
•   Registro: colección de campos relacionados. Son tratados como unidad. Ej.: datos de un profesor.
•   Archivo: colección de registros similares, tratados como una entidad. Tiene nombre único y puede tener acceso restringido. Ej.: archivo profesor.
•   Base de Datos: colección de archivos relacionados. Tiene relaciones establecidas entre los archivos. Ej.: organización de un departamento.
Características generales de los archivos
•   Nombre y extensión: Cada archivo es individual y es identificable por un nombre y una extensión opcional que suele identificar su formato.
•   Los nombres de archivos originalmente tenían un límite de ocho caracteres más tres caracteres de extensión, actualmente permiten muchos más caracteres dependiendo del sistema de archivos. Pascal solo acepta 7 caracteres.
•   Tamaño: Los archivos tienen también un tamaño que se mide en bytes, kilobytes, megabytes, gigabytes y depende de la cantidad de caracteres que contienen.
•   Ubicación: La ruta de acceso a un archivo suele comenzar con la unidad lógica que lo contiene y los sucesivos subdirectorios hasta llegar al directorio contenedor, por ejemplo: "C:\Archivos de programaMicrosoftarchivo.txt".

Extensión de los archivos
Los archivos pueden contener diferentes tipos de información según su formato:
                            Archivo             Extensión
                             Texto                   .txt
                         documentos      .doc, .pdf, entre otros.
                         ejecutables       .exe, .com, entre otros.
                            datos            .xls, .dbs, entre otros.
                          imagen           .jpg, png, bmp, gif, entre otros.
                           audio             .wav, mp3, entre otros.
                           video             .mpg, avi, entre otros.
SISTEMAS DE ARCHIVOS
Un sistema de archivos es un conjunto de tipo de datos abstractos que son implementados para el almacenamiento, la organización jerárquica, la manipulación, el acceso, el direccionamiento y la recuperación de datos. Los sistemas de archivos comparten mucho en común con la tecnología de las bases de datos.
OPERACIONES CON ARCHIVOS
Existen muchas operaciones asociadas a archivos, las más elementales son:
1.- Creación de Archivo.- En este proceso se pretende solamente crear un archivo nuevo en disco con su nombre tipo y especialidad de almacenamiento de datos apropiado.
2.- Apertura de Archivos.- En este caso se pretende abrir un archivo ya existente en disco para procesarlo ya sea para cargar o grabar estructuras en sus registros o leer algún registro en especial para mandarlo a una variable de cualquier tipo.
No confundir creación con apertura, creación es un proceso que solo se ejecuta una sola vez en la vida de un archivo, mientras que apertura, siempre se esta realizando por los programas especializados en algún proceso.
3.- Cierre de archivos: Es la operación mas importante en cualquier programa que maneje archivos, o se cierra el archivo como ultima instrucción del programa o se vera el anuncio ABORT,RETRY,FAIL. 98, /s, scandisk.
4.- Altas en archivo.- En este proceso se captura una estructura en memoria con sus datos pertinentes y después se graba la estructura al archivo en disco.
5.- Lectura de archivo.- En este proceso se abre el archivo, se manda el registro de disco a una estructura en memoria para su procesamiento.
6.- Consulta de archivos: En este proceso se pretende desplegar todos los registros del archivo en disco a la pantalla.
7.- Búsqueda en archivos: Una de las operaciones mas comunes consiste en que el usuario pide toda la información de algún renglón en disco proporcionando la información de algún campo generalmente el campo clave de la estructura.
8.- Filtros.- En este proceso el usuario esta interesado en algún conjunto de renglones con características comunes (condición), por ejemplo todos los alumnos de “sistemas” o todos los empleados que ganen más de Bs 15000.00, o todos los clientes que sean de “Apure”, entre otros.
9.- Modificaciones de registros o archivos: Problema muy común, donde los datos originales ya grabados se tienen que cambiar o actualizar, por ejemplo el nombre no era “juan” es “juana”, o la calificación no es 19, es 20, etc.
10.- Bajas de registros: también muy común este proceso, por ejemplo el estudiante ya egresó, el cliente huyó, etc.

ARCHIVOS SECUENCIALES
Los archivos secuenciales se denominan de esta manera por que la forma de escribir y leer los datos en un archivo es, desde el principio hasta el fin del archivo, es decir, si yo quisiera acceder a un determinado dato del archivo y este dato se encuentra en la mitad del archivo, para llegar a ese dato necesito pasar por todos los demás datos, de forma secuencial. El archivo finaliza con una marca de fin de archivo (eof), que significa End Of File, traducido es Fin de Archivo.
Declaración de un archivo
Para declarar un archivo primero se declara una variable tipo text de la siguiente forma:
                                          VAR
                                          VarArchivo : Text;
Una vez declarada la variable se asigna al nombre de algún archivo:
ASSIGN (VarArchivo, NombreArchivo); Donde NombreArchivo es una cadena de caracteres que contiene el nombre del archivo, la unidad de disco donde se encuentra y el directorio.
Por ejemplo:
ASSIGN (VarArchivo, 'C:\DOS\PRUEBA.TXT');
Abrir archivos
Existen tres formas de abrir un archivo:
                                      Rewrite-Reset-Append
Escribir datos en un archivo
Para escribir datos a un archivo se utilizan las instrucciones Write y WriteLn, como si se quisiera escribir a la pantalla, con la diferencia de que se especificará la variable de archivo ya declarada. Ejemplo:
WriteLn(VarArchivo, 'Prueba de archivos'); Esta sentencia grabaría el texto 'Prueba de archivos' en el archivo asignado a VarArchivo.
Leer datos de un archivo
Para leer los datos de un archivo de acceso secuencial se utilizan las instrucciones Read y ReadLn.
La instrucción Read lee uno o varios datos del archivo abierto y deja el puntero en el mismo renglón en el cual leyó los datos, en cambio ReadLn lee los datos y mueve el puntero al siguiente renglón.
Fin del archivo
Normalmente los archivos de este tipo se leen renglón por renglón hasta llegar al final del mismo. Cuando se conoce de antemano el tamaño del archivo es posible utilizar un ciclo FOR, pero es más seguro utilizar la función EOF la cual es verdadera después de que el programa lee la última línea de un archivo de acceso secuencial.
La sintaxis de la función EOF es:
EOF (VaribleArchivo);
Es común realizar la verificación de la función con un ciclo WHILE como en el ejemplo siguiente:
                                     WHILE NOT EOF(Archivo) DO
                                     BEGIN
                                     ReadLn(Archivo,      Datos);
                                     WriteLn(Datos);
                                     END;
Cerrar archivos
Para asegurar que toda la información se grabe en el disco correctamente es necesario cerrar el archivo antes de que se termine la ejecución del programa, de lo contrario se corre el riego de que la última información que se haya accesado no se grabe en su totalidad.
La instrucción para cerrar un archivo es Close, y su sintaxis es:
Close (VaribleArchivo);
Función Eoln
La función Eoln sirve para verificar si el puntero ha llegado al final de la línea. Regresa el valor verdadero si se encuentra al final. Comúnmente se utiliza en las lecturas carácter por carácter.
Agregar datos a un archivo de texto
Para añadir datos a un archivo de texto son necesarios los siguientes pasos:
Asignar un archivo a una variable con Assign
Agregar los datos con el procedimiento Append
Escribir los datos
Cerrar el archivo
A continuación se ilustra un ejemplo de un programa que agrega una línea a un archivo de texto:
                    PROGRAM Archivo;
                    VAR
                    Texto : TEXT;
                    BEGIN
                    Assign (Texto, 'PRUEBA.DAT');
                    ppend(Texto);
                    WriteLn(Texto, 'Agregando una linea al archivo PRUEBA.DAT');
                    Close (Texto)
                    END.

ARCHIVOS SECUENCIALES INDEXADOS
Estos archivos mantienen las características básicas de los archivos secuenciales: los registros se organizan en secuencia basada en un campo clave.
Definición de Índice:
Un índice en informática es como el índice de un libro donde tenemos los capítulos del libro y la página donde empieza cada capítulo.
Un índice es una estructura de datos que permite recuperar las filas de una tabla de forma más rápida además de proporcionar una ordenación distinta a la natural de la tabla.

Un índice se define sobre una columna o sobre un grupo de columnas, y las filas se ordenarán según los valores contenidos en esas columnas. Por ejemplo, si definimos un índice sobre la columna población de la tabla de clientes, el índice permitirá recuperar los clientes ordenados por orden alfabético de población.
Ventajas de los archivos secuenciales indexados
•   Rápido acceso.
•   El sistema de gestión de archivos se encarga de relacionar la posición de cada registro con su contenido mediante la tabla de índices.
Desventajas
•   Desaprovechamiento del espacio por quedar huecos intermedio cada vez que se actualiza el archivo.
•   Se necesita espacio adicional para el área de índices.
Características de los Archivos Secuenciales Indexados:
•   Los registros se organizan en una secuencia basada en un campo clave.
•   Se incluye una tabla de índices que proporciona una capacidad de búsqueda para llegar a las proximidades de un registro deseado mediante la clave.