2011 clase18

23
Algorítmica y Programación I Archivos

Transcript of 2011 clase18

Page 1: 2011 clase18

Algorítmica y Programación I

Archivos

Page 2: 2011 clase18

Algorítmica y Programación I

Page 3: 2011 clase18

Algorítmica y Programación I

Hasta aquí hemos manipulado datos (información) contenidos en variables cuyos tipos son simples o estructurados. Estos tipos de variables se almacenan en memoria RAM, y esa información se almacena mientras el algoritmo que las utilice se esté ejecutando. Es evidente que se necesita tener información perpetua para todos los procesos que se realicen por medio de una computadora, por lo que surge la necesidad de un “almacén”para contenerlos. Esto se logra por medio de un archivo, el que se guardará en algún soporte no volátil: disco, cinta, zip, diskette, pen_drive y otros. En cualquiera de estos, la información queda preservada aunque el programa finalice.El archivo es la estructura de datos también conocida como estructura de almacenamiento, y se asocia a un dispositivo de memoria auxiliar permanente donde se archiva la información.

Page 4: 2011 clase18

Algorítmica y Programación I

Definiciones:

Un archivo es una colección de registros semejantes, guardados en dispositivos de almacenamiento secundario de la computadora.

Un archivo es una estructura de datos que guarda una colección de elementos del mismo tipo en un dispositivo de almacenamiento secundario de una computadora.

Podemos observar que un archivo es una estructura de datos homogénea. Se caracteriza por:

• crecimiento ( se incorporan nuevos elementos )

• modificaciones que se efectúan sobre él (se pueden alterar datos o quitar).

Page 5: 2011 clase18

Algorítmica y Programación I

Administración de archivosEn un disco rígido se puede almacenar un gran número de archivos (físicos)

S.O.

Sistema encargado de los detalles de almacenamiento.

Un programa procesa archivos (lógicos) independientemente del lugar físico en el que estáalmacenado

Programa XXX

Page 6: 2011 clase18

Algorítmica y Programación I

El programa referencia indirectamente al archivo físico, utilizando para ello un nombre lógico, que se denomina archivo lógico

Page 7: 2011 clase18

Algorítmica y Programación I

Antes de que el programa pueda operar sobre un archivo, el SO debe recibir instrucciones para hacer un enlace entre el nombre lógico que utilizará el algoritmo y el archivo físico. Cada lenguaje tiene su propia instrucción (o conjunto de instrucciones) para ese fin.

Page 8: 2011 clase18

Algorítmica y Programación I

Operaciones básicas sobre archivos

• ABRIR• CERRAR• LEER• GRABAR

Page 9: 2011 clase18

Algorítmica y Programación I

ABRIR ( archivo ): Esta operación debe ser usada previamente a cualquier otra, para preparar la utilización de archivo.

Para Lectura: Esta operación se utiliza cuando el archivo ya está creado y se

desea acceder a la información que se encuentra en él.

Para Escritura: Esta operación se utiliza cuando el archivo no existe y se

necesita crearlo para grabar información en él.

Es necesario aclarar el tipo de apertura del archivo.

Ejemplo

Abrir (Facultad ) -- Para lectura {se abre un archivo existente}

Abrir (Facultad) -- Para escritura { se abre un archivo que no

existe}

La apertura de un archivo establece una posición corriente en el mismo, la cual indica el dato que va a ser leído, o el lugar sobre el que va a ser escrito. Todos los lenguajes la utilizan para operar con los archivos, aunque cada uno lo maneja de manera diferente.

Page 10: 2011 clase18

Algorítmica y Programación I

CERRAR ( archivo ): Se utiliza esta operación una vez que se ha terminado de

procesar la información de un archivo. Éste ha sido abierto para lectura o para

escritura.

Ejemplo

Cerrar (Facultad) -- se cierra el archivo que se abrió previamente

Cualquier acceso que se pretenda realizar sobre un archivo cerrado será no válido

Al cerrarse un archivo, se graba una marca en éste que señala el fin de

archivo

Page 11: 2011 clase18

Algorítmica y Programación I

LEER( archivo, dato ): Se utiliza para leer dato desde el archivo. Dato está en

la posición actual (o corriente) de archivo. Esta lectura colocará el contenido

de dato del archivo en una variable del mismo tipo. Si se trata de un registro,

lee un registro desde el archivo, y lo almacena en una variable del mismo tipo

registro.

Es importante aclarar que con cada realización de la operación Leer, el

indicador de posición actual se irá modificando hasta avanzar hacia el fin-de-

archivo.

Ejemplo

Leer(Facultad, Profesor) -- coloca en la variable Profesor

-- información de un registro del archivo Facultad

Page 12: 2011 clase18

Algorítmica y Programación I

GRABAR( archivo, dato ): Se utiliza para agregar un registro en el archivo,

colocando la información de la variable registro en un registro del archivo.

Aclaramos que con cada operación Grabar que se realiza, se irá actualizando

la marca de fin-de-archivo.

Ejemplo

Grabar (Facultad, Profesor) -- agrega información de la variable

-- profesor en el archivo Facultad

Page 13: 2011 clase18

Algorítmica y Programación I

FIN ( archivo ): Esta operación (función) se utiliza para detectar el fin del archivo. En caso de que sea falso, podemos continuar leyendo información desde el archivo. Si es verdadero, indica que se llegó al final.

Una función para procesar archivos

Page 14: 2011 clase18

Algorítmica y Programación I

Soportes que permiten acceso directo

Soportes que permiten sólo acceso secuencial

Los soportes y el acceso

Page 15: 2011 clase18

Algorítmica y Programación I

Técnicas de organización y acceso a un archivo

• acceso secuencial

• acceso directo

Según la manera en que se organizan los registros podemos tener:

Page 16: 2011 clase18

Algorítmica y Programación I

Técnicas de organización y acceso a un archivo

• Secuencial

• Directo

• Secuencial indexado

De acuerdo a su organización, un archivo puede ser:

Page 17: 2011 clase18

Algorítmica y Programación I

El acceso secuencial permite acceder a los registros o elementos uno tras

otro, en el orden físico en que están guardados.

El acceso secuencial permite acceder a los registros o elementos uno tras

otro, en el orden físico en que están guardados.

El acceso directo permite acceder a un registro determinado, sin

necesidad de haber accedido a sus predecedores.

El acceso directo permite acceder a un registro determinado, sin

necesidad de haber accedido a sus predecedores.

La organización define la manera en que los registros se distribuyen sobre el almacenamiento secundario:• en la Organización Secuencial, los registros se graban en forma consecutiva, y se recuperan en el mismo orden.• en la Organización Directa, los registros se recuperan desde su posición k-ésima, la que debe conocerse previamente• la Organización Secuencial Indexada utiliza estructuras de datos auxiliares para permitir un acceso seudo-directo.

La organización define la manera en que los registros se distribuyen sobre el almacenamiento secundario:• en la Organización Secuencial, los registros se graban en forma consecutiva, y se recuperan en el mismo orden.• en la Organización Directa, los registros se recuperan desde su posición k-ésima, la que debe conocerse previamente• la Organización Secuencial Indexada utiliza estructuras de datos auxiliares para permitir un acceso seudo-directo.

Page 18: 2011 clase18

Algorítmica y Programación I

Procesamiento de un archivo

Podemos manipular un archivo en el soporte magnético en el que estáalmacenado, como para buscar información, imprimirla, corroborarla, etc.

Page 19: 2011 clase18

Algorítmica y Programación IAlgorítmica y Programación I

Procesamiento de un archivo

Para procesar un archivo es suficiente con acceder a éste y recuperar la información. Cada lenguaje de programación tiene sus instrucciones de apertura, acceso, lectura, grabación y cierre.Nosotros veremos que para manipular la información de un archivo a fin de ordenarla o realizar una búsqueda binaria, es conveniente bajar el archivo a un vector, y una vez allí, se puede: • ordenar el vector mediante cualquiera de los métodos que hemos visto.• realizar sobre esa estructura todas las operaciones necesarias.• almacenar esa información en un soporte.

Page 20: 2011 clase18

Algorítmica y Programación IAlgorítmica y Programación I

El tipo estructurado que emplearemos es el arreglo unidimensional (un vector), donde cada elemento de éste será un registro que contendrá la información de cada registro lógico del archivo que estemos procesando. TiposT_Reg_Persona = Registro

Nombre : cadena (20)Edad : enteroEstado_Civil : cadena (25)Salario :flotante

FinRegistro

T_Archi_Persona = archivo de T_Reg_Persona --información en dispositivo de

-- almacenamiento secundario

T_Vec_Persona = arreglo (100) de T_Reg_Persona -- información en memoria

-- de acceso directo

VariablesProfesor : T_Reg_PersonaFacultad : T_Archi_Persona -- permite mantener información del

-- personal de la Facultad

InfoFacultad : T_Vec_Persona

La estructura de Datos

Page 21: 2011 clase18

Algorítmica y Programación IAlgorítmica y Programación I

Bajar un archivo: la información de un archivo -existente en almacenamiento secundario (disco, cinta, etc.)- se almacena en una variable del tipo estructurado.

Procedimiento BajarArchivo( Facu : ArchivoPersona;InfoFacu :T_Vec_Persona;

CantPersonas : entero )VariablesRegi : T_Reg_PersonaI : enteroComienzaI � 0 -- inicialmente suponemos que no existe información en el archivoAbrir (Facu) -- Para lecturaMientras no Fin(Facu) Hacer

ComienzaI � I+1Leer (Facu, Regi)InfoFacu (I) � Regi -- coloco en la posición I-esima del vector la

-- información del registro leídoTermina

CantPersonas � I -- tenemos i-elementos en el vector de registrosCerrar (Facu)Termina

Page 22: 2011 clase18

Algorítmica y Programación IAlgorítmica y Programación I

Subir un archivo: se graba la información desde memoria central sobre un archivo que se encuentra en almacenamiento secundario.

Procedimiento SubirArchivo( Facu : ArchivoPersona, InfoFacu : T_Vec_Persona,

CantPersonas : entero )

VariablesRegi : T_Reg_PersonaI : enteroComienzaAbrir (Facu) --Para escrituraPara I � 1 hasta CantPersonas Hacer -- coloco los i-elementos del vector en

-- el archivo

comienzaRegi ← InfoFacu (I )Grabar (Facu, Regi ) -- grabo el i-esimo elemento del vector en el archivo.

-- Esta operación también modifica la marca fin-de-archivo

termina

Cerrar ( Facu )Termina

Page 23: 2011 clase18

… seguiremos en la próxima con más aspectos de los archivos…..