¿ Por qué usar Archivos ? Las estructuras de datos estudiadas hasta ahora, utilizan un almacenamiento primario (las variables se almacenan en la memoria principal). Este tipo de almacenamiento presenta dos desventajas: •La cantidad de información disponible puede ser insuciente para almacenar el volumen de información ue un pro!rama necesite neces ite trabajar. •"o podemos conservar los datos una vez ejecutado el pro!rama. Estos dos inconvenientes, puede resolverse con el uso de archivos (cheros Defnición de Archivo: Es un conjunto de datos estructurados, en una colecc ión de entidades elementales llamadas re!istros, ue son de i!ual tipo # constan a su vez de diferentes entidades de nivel m$s bajo denominados campos. Estos re!istros est$n dispuestos sobre un determinado soporte f%sico de almacenamiento permanente con una determinada or!anización ló!ica. Características de los Archivos •&on independientes respeto a los pro!ramas •'n archivo puede utilizarlo distintos pro!ramas en distintos momentos •La información almacenada es permanente •ienen !ran capacidad de almacenamiento •La recuperación de datos se hace con rapidez •&u %ndice de conabilidad es mu# alto Organización de Archivos Organización Secuencial Los re!istros se encuentran almacenados consecutivamente sobre el soporte eterno. La caracter%stica fundamental de estos archivos, es ue para acceder a un re!istro, es necesario pasar por los re!istros ue le proceden (acceso secuencial). Las cintas son el ejemplo m$s usual de soporte de acceso secuencial.
Organización directa: En este tipo de or!anización cualuier re!istro es directamente accesible mediante la especicación de un %ndice, ue da la posición del re!istro respecto del ori!en del archivo. En este tipo de or!anización acceder a un re!istro determinado, no implica la consulta de los re!istros precedentes (acceso directo). 'n soporte ejemplo es el disco (#a ue es un soporte direccionable). i!os de Archivos Archivos de e"to: &on un caso particular de archivos de or!anización secuencial. Es una serie continua de caracteres ue se pueden leer uno tras otro. Archivos #inarios: *onjunto de b#tes con una correspondencia uno a uno con los del dispositivo eterno, esto es, el n+mero de b#tes escritos (le%dos) es el mismo n+mero ue el del dispositivo eterno. Declaración de Archivos ara un pro!ramador un archivo es un objeto abstrac to sobre el cual se puede leer #-o escribir. La declaración consiste en indicar el nombre de la variable ue ser$ utilizada en el al!oritmo para hacer eferencia al archivo. &e declara la variable tipo archivo como si se trat ara de una variable de tipo de dato simple. archivo$s % donde: (/) % es el identicador de la variable # (0) archivo$s es el identicador de tipo archivo de acceso secuencial. archivo$d % donde: (/) % es el identicador de la variable # (0) archivo$d es el identicador de tipo archivo de acceso directo. O!eraciones so&re Archivos a. 1brir el archivo.
c. 2ericar n de archivo (fda) d. Leer del archivo. e. Escribir en el archivo. O!eraciones so&re Archivos 1brir el 1rchivo: *reación de un canal ue comunica a un usuario a trav3s de un pro!rama con un archivo almacenado en un soporte eterno. a&rir( 4id5archivo6, 4modo6, 4nombre5sico6) a&rir(% , 7e8, 7datos.tt8) donde (/) f es una variable de tipo archivo secuencial, (0) 4modo6 indica el tipo de operación ue se realizar$ sobre el archivo, # (9) 4nombre5sico6 es una epresión de tipo cadena con el nombre f%sico del archivo. Los valores posibles para 4modo6 son los si!uientes: •7l8: lectura al comienzo del archivo. El archivo debe eistir previamente. •7e8: escritura al comienzo del archivo. &i el archivo no eiste, primero c rea un archivo vac%o. &i el archivo eiste, sobrescribe los datos ue ten!a. •7a8: escritura al nal del archivo. &i el archivo no eiste, primero crea un archivo vac%o. *errar el 1rchivo: ermite al usuario cortar el acceso o detener el uso del archivo, permitiendo a otros usuarios utilizar el archivo. cerrar( 4id5archivo6 ) cerrar(% ) 2ericar n de archivo (fda) 'unción %da: función encar!ada de determinar si durante el recorrido sobre un archivo, #a se ha lle!ado al nal del mismo. etorna un valor ló!ico: 7v8 verdadero o 7f8 falso. %da( 4id5archivo6 ) %da(% )
Leer un archivo: *opia la información contenida en un re!istro del archivo a una variable del pro!rama. r!anización secuencial: leer( 4id5archivo6, 4nombre5variable6 ) leer(% ,v ) r!anización directa: leer( 4id5archivo6, 4posición6, 4nombre5variable6 ) leer(% ,(,v ) o i)* leer(% ,i,v ) Escribir en el archivo: *opia la información contenida en una variable del pro!rama sobre un re!istro del archivo. r!anización secuencial: escri&ir( 4id5archivo6, 4epresión6 ) escri&ir(% ,+,l valor de la varia&le es: + v ) r!anización directa: escri&ir( 4id5archivo6, 4posición6, 4nombre5variable6 ) escri&ir(% ,(,v ) o leer(% ,i,v )