You are on page 1of 26

Estructura de Datos: Archivos

Programacion I Mgter. Vallejos, Oscar A.

Estructura de Datos: Archivos


Archivo: Concepto Para poder acceder a determinada informacin en cualquier momento, se necesitar que ella est depositada en soportes fsicos los cuales la almacenan en forma permanente. Este es el caso de la memoria externa o auxiliar como ser disquete, disco duro, cinta magntica, etc.-, en las cuales sin necesidad de estar conectadas a la corriente elctrica, la informacin permanece all. La forma de guardar los datos en estos dispositivos auxiliares es mediante unas estructuras llamadas archivos o ficheros.

ARCHIVOS DE DATOS ARCHIVOS DE PROGRAMA

Programacion I Mgter. Vallejos, Oscar A.

Archivos Estructura de Datos


Objetivos (entre otros...)

Almacenamiento permanente Manipulacion de un gran numero de datos Independencia de los programas Residentes en soportes externos

Estrutura Archivos = Coleccin de Registros Registros = Coleccin de campos (tamao, longitud,...)

Clave

Un campo que identifica al registro

Programacion I Mgter. Vallejos, Oscar A.

Tipos de Registros
Registro Fisico: Cantidad de datos que puede transferirse en una operacin de I / O a traves del buffer.

Registro Logico: Definido por el programador.


Factor de Bloqueo: Numero de Registros Logicos que puede contener un Registro Fisico.

Programacion I Mgter. Vallejos, Oscar A.

Jerarquizacion
Base de Datos

Archivos

Registros

Campos

Sub Campos

Programacion I Mgter. Vallejos, Oscar A.

Estructura de Datos: Archivos


Campo es un conjunto de caracteres capaz de suministrar una determinada informacin referida a un concepto. Al igual que en las variables, al definir un campo hay que indicar claramente sus tres caractersticas:
Nombre: identifica a ese conjunto de caracteres Tipo: Tipo de caracteres que puede contener (alfabtico, entero, etc.-) Tamao: Cantidad de caracteres que puede contener

Por ejemplo, si tenemos que definir al campo nmero de documento resultara: Nombre: documento Tipo: numrico Tamao: 8 enteros Un campo es la entidad lgica ms pequea, consiste en un conjunto de byte que conforman un dato. Un campo es la unidad mnima de informacin de un registro.
Programacion I Mgter. Vallejos, Oscar A.

Estructura de Datos: Archivos


Registro es un conjunto de campos referentes a una entidad en particular y constituyen una unidad para su proceso. Un ejemplo de un registro puede ser la informacin de un determinado alumno universitario, que contiene los campos: libreta universitaria, apellido y nombre, nmero de documento, domicilio, fecha de nacimiento, entre otros campos.

libreta universitaria

Apellido y nombre

nmero de documento

Domicilio

Fecha de nacimiento

Programacion I Mgter. Vallejos, Oscar A.

Clasificacion segn su funcion


Maestros: Datos permanentes o historicos. De Movimientos: Auxiliares. Contienen registros

necesarios para realizar actualizaciones a los archivos permanentes. De Maniobras: Esfimeros y auxiliares. Contienen informacion de registros selccionados o semielaborados. De informes: Contienen datos para ser presentados a los usuarios.

Programacion I Mgter. Vallejos, Oscar A.

Estructura de Datos: Archivos


Soporte: A) Secuenciales; B) Direccionables; Un soporte secuencial Org. secuencial Un soporte direccionable Distintos tipos de Org. Organizacin de Archivos: La organizacin de un archivo define la forma en la que los registros se disponen sobre el soporte de almacenamiento, o tambin se define la organizacin como la forma en que se estructuran los datos en un archivo. En general, se consideran tres organizaciones fundamentales: Organizacin secuencial Organizacin directa o aleatoria (random) Organizacin secuencial indexada
Obs: En Pascal standar los archivos son de Org. Secuencial Turbo Pascal permite el acceso aleatorio o directo en todos los archivos (excepto en archivos de textos).
Programacion I Mgter. Vallejos, Oscar A.

Estructura de Datos: Archivos


Organizacin secuencial No es mas que una sucesin de registros almacenados en forma consecutiva sobre un soporte externo. Los registros estn ubicados fsicamente en una secuencia usualmente fijada por uno o ms campos de control contenidos dentro de cada registro, en forma ascendente o descendente. Esta organizacin tiene el ltimo registro en particular, contiene una marca (en general un asterisco) de fin de archivo, la cual se detecta con funciones tipo EOF (end of file) o FDA (Fin de Archivo).
Registro 1 Registro 2

Registro 3

.....

Registro n-1

Registro n

EOF

Programacion I Mgter. Vallejos, Oscar A.

Organizacin Directa

Los datos se colocan y se acceden aleatoriamente mediante su posicin, es decir, indicando el lugar relativo que ocupan dentro del conjunto de posiciones posibles. En esta organizacin se pueden leer y escribir registros, en cualquier orden y en cualquier lugar. Inconvenientes: a) Establecer la relacin entre la posicin que ocupa un registro y su contenido; b) Puede desaprovecharse parte del espacio destinado al archivo. Ventaja: Rapidez de acceso a un registro cualquiera.

Programacion I Mgter. Vallejos, Oscar A.

Organizacin Indexada
Un archivo con esta organizacin consta de tres reas: Area de ndices rea primaria rea de excedentes (overflow) Ventaja: a) Rpido acceso, y, adems, el sistema se encarga de relacionar la posicin de cada registro con su contenido por medio del rea de ndices. b) Gestiona las reas de ndices y excedentes. Desventajas: a) Necesidad de espacio adicional para el rea de ndices. b) el desaprovechamiento de espacio que resulta al quedar huecos intermedios libres despus de sucesivas actualizaciones.

Programacion I Mgter. Vallejos, Oscar A.

Estructura de Datos: Archivos


Organizacin secuencial: Archivos de Textos Son casos particulares de los archivos con organizacin secuencial. Constan de una serie de lineas, cada una de las cuales se encuentra constituida por una serie de caracteres, separadas por una marca de fin de linea la cual es posible detectar. Se puede utilizar la instruccion: Read (id-archivo,var) .para leer caracter a caracter Redln (id_archivo, var) para leer linea a linea Las instrucciones Write y Read no solo escriben o leen los datos si no tambien transformacion de los valores. Ej: valores numericos se convierten en estrng de caracteres antes de escribirse y viceversa.
Programacion I Mgter. Vallejos, Oscar A.

Estructura de Datos: Archivos


Mtodos de acceso El modo de acceso es la manera de acceder a los registros de un archivo para leer informacin o para grabar informacin nueva en el mismo. Existen fundamentalmente dos formas de acceso: Acceso secuencial Se accede a los registros segn secuencia fsica, en el orden es que estn escritos. Dicho de otro modo, para acceder al registro N hay que pasar previamente por los N-1 registros anteriores. Acceso Directo Permite el acceso a un registro determinado sin tener que pasar previamente por los registros anteriores.

Programacion I Mgter. Vallejos, Oscar A.

Estructura de Datos: Archivos


Operaciones sobre archivos Es necesario considerar las operaciones que se pueden realizar con los mismos. Estas son: Creacin: Definicion del archivo Apertura: Comunicacion del archivo logico con el fisico. Cierre: Cerrar la conexion. Lectura / Consulta: Acceder al archivo para ver su contenido. Fin de Archivo: Detecta el final del archivo. Destruccin: Borra el Archivo. Reorganizacion: Optimiza la estructura. Fusion: Reune varios archivos en uno solo. Actualizacion Alta: Adicion de registros. Act. - Baja: Eliminacion o borrado logico de registros. Act. Modificacion: Altera la informacion del contenido.

Programacion I Mgter. Vallejos, Oscar A.

Estructura de Datos: Archivos


Fin de Archivo Toda instruccin de ingreso de datos, ya sea desde teclado o desde un dispositivo magntico, requiere una condicin de fin de ingreso de los datos, con el objeto de determinar cuando se han terminado los registros de un archivo o cuando ya no se desean ingresar mas datos desde el teclado. Esta condicin la denominamos fin de archivo conocida como EOF (end of file).
Comenzar

Comenzar

Ingresar NOTA

Leer {lista de campos}

NOTA = 11

No

EOF

No

Si

Si

Parar

Parar

Programacion I Mgter. Vallejos, Oscar A.

Mantenimiento de Archivos
Requerimiento: a) Que este creado b) Abierto en el modo adecuado Operaciones que se permiten: Creacion: Se realiza la primera vez. (Basta con..abrir con Rewrite y luego escribir los datos con Write) Altas: Aadir nuevos registros al final del archivo (abrir con Append y luego escribir los datos con Write) Consulta total: Obligatoriamente en modo secuencial. (Basta con..abrir con Reset, leer el registro con ReadLn (a) y luego realizar el proceso, calcular, imprimir, etc.) Consulta parcial (busqueda): Obligatoriamente en modo secuencial. (Basta con..abrir con Reset, leer el registro con ReadLn (a, clave) y luego mostrar).
Obs: En todos los casos es necesario el comando Assign y Close

Programacion I Mgter. Vallejos, Oscar A.

Mantenimiento de Archivos
Baja: Logica (marca o flag..) o Fisica. Ambos utilizan archivo auxiliar. Modificacion: Similar a la baja logica. Borrar. ( ERASE) Este procedimiento nos permite borrar un archivo, el archivo a borrar no debe estar abierto. Para borrar un archivo se debe realizar lo siguiente : 1. Asignar el archivo externo a una variable de archivo. 2. Llamar al procedimiento erase Renombrar (cambia el nombre) un archivo externo. Para renombrar un archivo se debe hacer los siguiente : 1. Asignar un archivo a la variable archivo 2. Llamar al procedimiento rename

Seek. Sita el puntero de posicin del archivo en el nmero de registro correspondiente.


Programacion I Mgter. Vallejos, Oscar A.

Estructura de Datos: Archivos


Pascal
Declaracin Type <tipo de dato>=record <nombre de campo1>: tipo1; <nombre de campo2>: tipo2; <nombre de campo3>: tipo3; . End; Var <Id archivo>: text {archivo secuencia de <tipo de dato>} <nombre de variable>:<tipo de dato> {variable para leer los registros del archivo}

Programacion I Mgter. Vallejos, Oscar A.

Estructura de Datos: Archivos


Pascal
Instrucciones

Assign (<id_archivo>, <nombre_fsico>) Establece un enlace entre la variable tipo de archivo y el nombre del archivo en el disco.
Rewrite (<id_archivo>) Crea y abre el archivo para escritura. Append(<id_archivo>) Abre el archivo para operaciones de escritura. Coloca el puntero al final del archivo. Reset (<id_archivo>) Abre el archivo para operaciones de lectura. Coloca el puntero al inicio del archivo.
Programacion I Mgter. Vallejos, Oscar A.

Estructura de Datos: Archivos


Pascal
Instrucciones

WriteLn o Write(<id_archivo>, <lista de variables>) Cada vez que se escribe en el archivo avanza el puntero de datos.
ReadLn o Read(<id_archivo>, <lista de variables>) Con cada lectura avanza el puntero de datos. Close(<id_archivo>) Cierre del archivo

Programacion I Mgter. Vallejos, Oscar A.

Programacion I Mgter. Vallejos, Oscar A.

Estructura de Datos: Archivos


Pascal
Funcion EOF

EOF(<id_archivo> Detecta la marca de fin de archivo.

Programacion I Mgter. Vallejos, Oscar A.

Estructura de Datos: Archivos


Pascal
Ejemplo Declaracin Type Datos_personales = record NC: integer(3); AYN: string (30); T: integer (3); End; Arch = text; Var F: arch; Competidor: datos_personales;

NC AYN

Programacion I Mgter. Vallejos, Oscar A.

Codificacin en Pascal p/generar un Archivo


program genero_archivo;

uses NewDelay,Crt,Printer; const esc = #27; type reg = record rnrocte : integer; rnya : string[20]; rsaldo : real; end; var cliente: file of reg; regcli : reg; tecla : char; nrocte, rnrocte : integer; nya, rnya : string[20]; saldo, rsaldo : real;

begin patchCrt(Crt.Delay); clrscr; writeln('Ingrese N Cte., Nombre y Saldo (Esc p/terminar) '); assign (cliente, 'clientes.txt'); rewrite (cliente); while tecla <> esc do begin readln(nrocte); readln(nya); readln(saldo); regcli.rnrocte:=nrocte; regcli.rnya:=nya; regcli.rsaldo:=saldo; write (cliente, regcli); tecla:=readkey end; close(cliente); tecla:=readkey end.

Programacion I Mgter. Vallejos, Oscar A.

Codificacin en Pascal p/lectura e impresin de un Archivo


program lectura_Archivo; begin uses NewDelay,Crt,Printer; patchCrt(Crt.Delay); const esc = #27; clrscr; type assign (cliente, 'clientes.txt'); reg = record reset (cliente); rnrocte : integer; rnya : string[20]; leer; rsaldo : real; while regcli.rnrocte <> 999 do end; begin var cliente: file of reg; regcli : reg; writeln(regcli.rnrocte:5,regcli.rnya:15, tecla : char; regcli.rsaldo:6:2); rnrocte : integer; leer; rnya : string[20]; end; rsaldo : real; procedure leer; close(cliente); begin tecla:=readkey if eof(cliente) then regcli.rnrocte:=999 end. else read(cliente, regcli); end;

Programacion I Mgter. Vallejos, Oscar A.

You might also like