Sie sind auf Seite 1von 14

INTRODUCCION

Los archivos son parte fundamental en los lenguajes de programacin de cualquier tipo ya que permiten ampliar enormemente las caractersticas de las aplicaciones en donde se aplique.A medida que el uso de archivos gano terreno entre los programadores fue posible el intercambiar informacin entre programadores. De all, mientras se estudiaban ms a fondo los archivos, se derivaron muchas aplicaciones como la encriptacin de datos, entre otros.

A continuacin presentaremos de forma concisa y breve informacin bsica para el manejo de archivos en usando el lenguaje de programacin C++ como base.

1. Archivos. Un archivo es una secuencia de bits tratados como una unidad, tpicamente organizados en un sistema de archivos, almacenados en un medio externo como disco duro, CD, pendrive, cinta magntica, etc. Adems se puede decir que un archivo es un bloque de informacin o un medio para almacenar informacin, que est disponible para ser usado por un programa y est basado en algn medio de almacenamiento duradero. El archivo se dice que es duradero en el sentido que la informacin queda disponible aun cuando el programa o programas que lo utilizan han finalizado. Se consideran como el equivalente moderno de los documentos en papel que se mantenan o mantienen en las oficinas o bibliotecas.

2. Desarrollar una lista con las ventajas y desventajas de la utilizacin de Archivos en programas desarrollados en C++. Independencia de las informaciones respecto de los programas La informacin almacenada es permanente Un archivo puede ser accedido por distintos programas en distintos momentos. Gran capacidad de almacenamiento

3. Con qu libreras se manejan los Archivos en C++?

Para poder manipular archivos, C++ dispone de la biblioteca estndar fstream (file stream) donde se encuentran todas las funciones necesarias para abrir y cerrar archivos, as como para realizar las operaciones de lectura y escritura de datos en archivos. # include <fstream.h> 4. Especificar las instrucciones necesarias para realizar las siguientes Operaciones Bsicas en los Archivos, y dar una breve explicacin de las mismas: 4.1 Crear. La creacin de un archivo se hace abriendo el archivo en modo escritura y el archivo se crea en forma automtica. ofstream Datos; Datos.open("Datos.txt",ios::out); // Abre el archivo en modo escritura sta funcin sirve para abrir y crear ficheros en disco. El valor de retorno es un puntero a una estructura FILE. Los parmetros de entrada son:

1. nombre: una cadena que contiene un nombre de fichero vlido, esto depende del sistema operativo que estemos usando. El nombre puede incluir el camino completo. 2. modo: especifica en tipo de fichero que se abrir o se crear y el tipo de datos que puede contener, de texto o binarios. 4.2 Abrir. El archivo lgico es una variable por lo que necesita ser declarada. <tipo> <nombre_variable> #include<fstream.h> ifstream ofstream ArchivoLogico fstream Una vez creado el archivo lgico se puede abrir el archivo fsico. ArchivoLogico.open(ArchivoFisico,modo apertura); El modo de apertura tiene las siguientes opciones: app Lo que se escribe se inserta siempre al final del archivo. ate Posiciona cursor para escribir al final del archivo, pero permite escribir en otra posicin. in Permite leer la informacin del archivo out Permite escribir en el archivo. trunc Borra el contenido, si existe. Default de out, si no se especifica ate, app o in binary Abre en modo binario, el default es texto. Estas opciones se pueden combinar usando el operador Or (|) ofstream Datos; Datos.open("Datos.txt",ios::out); // Abre el archivo en modo escritura La operacin abrir un archivo puede fallar por varias causas como por ejemplo medio no disponible o sin espacio, archivo no existe, error en la ruta de acceso al archivo, etc. Si la operacin falla la variable ArchivoLogico se hace NULL. Luego entonces se debe chequear, despus del intento de apertura si sta es NULL, enviando un mensaje indicando la condicin de falla. ofstream Datos; Datos.open("Datos.txt",ios::out); if(Datos==NULL) { cout<<"Problemas al abrir archivo para escribir"<<endl; getch(); return 0; }

4.3 Cerrar. ArchivoLogico.close(); Una vez cerrado el archivo se rompe el vnculo que existe entre el ArchivoLogico y el ArchivoFisico. La variable ArchivoLogico queda disponible para ser utilizada otra vez, con el mismo o con otro ArchivoFisico. ofstream Datos; Datos.open("Datos.txt",ios::out); . . Datos.close(); Es importante cerrar los ficheros abiertos antes de abandonar la aplicacin. Esta funcin sirve para eso. Cerrar un fichero almacena los datos que an estn en el buffer de memoria, y actualiza algunos datos de la cabecera del fichero que mantiene el sistema operativo. Adems permite que otros programas puedan abrir el fichero para su uso. Muy a menudo, los ficheros no pueden ser compartidos por varios programas. Un valor de retorno cero indica que el fichero ha sido correctamente cerrado, si ha habido algn error, el valor de retorno es la constante EOF. El parmetro es un puntero a la estructura FILE del fichero que queremos cerrar. 4.4 Borrar. Las operaciones de Borrar un registro se deben hacer utilizando un archivo auxiliar, quedando al final un archivo auxiliar con la informacin actualizada y otro desactualizado. Se lee la informacin del archivo, se actualiza y se guarda en otro archivo auxiliar. Se tienen ahora dos archivos, uno actualizado y el original Se hace necesario entonces borrar el archivo fsico usando el comando: remove(nombre_ArchivoFisico). Luego se cambia el nombre del archivo auxiliar por el nombre del archivo original rename(nombre"viejo",nombre"nuevo")

si

no si

si no

no

// Funcion para borrar los campos de un registro de una cedula void Borrar(struct T_Datos Datos, int ced) { int flag=0; ifstream ENT; ofstream AUX; ENT.open("Datos.txt"); if (!ENT) { cout<<"Archivo no puede ser Abierto"<<endl; getch(); return; } AUX.open("Datos_Aux.txt");

if (!AUX) { cout<<"Archivo no puede ser Abierto"<<endl; getch(); return; } ENT>>Datos.nombre; ENT>>Datos.cedula; while(!ENT.eof()) { if(ced!=Datos.cedula) AUX<<Datos.nombre<<'\t'<<Datos.cedula<<endl; else flag=1; ENT>>Datos.nombre; ENT>>Datos.cedula; } AUX.close(); ENT.close(); if(flag==0) { cout<<"Cedula No Existe"<<endl; remove("Datos_Aux.txt"); getch(); } else { remove("Datos.txt");

rename("Datos_Aux.txt","Datos.txt"); } } 4.5 Modificar. La operacin de modificacin implica la lectura o recorrido del archivo. La operacin mueve la cabeza de lectura del dispositivo de almacenamiento de un registro en cada operacin. La lectura se realizara hasta llegar a la marca fin de archivo (EOF) que es un tipo lgico: EOF es verdadera (=1) sino quedan registros por leer EOF es falsa (=0) sino se ha alcanzado el final del archivo Esta operacin bsica no se puede realizar directamente, es necesario copiar el archivo modificado en un archivo auxiliar. Este archivo es temporal, por lo que al terminar el proceso de modificacin se obtienen dos archivos: El antiguo: ORIGINAL El nuevo: NUEVO Se debe borrar el archivo original y renombrar el nuevo con el nombre del archivo ORIGINAL. Pasos para modificar un registro en la posicin n 1. Abrir el archivo original y el archivo auxiliar 2. Leer y escribir registros 1,2,3,,n-1 en el archivo auxiliar 3. Leer el registro n del archivo original 4. Modificar los campos del registro n 5. Escribir el registro n en el archivo auxiliar 6. Leer y escribir registros n+1,n+2,. en el archivo auxiliar 7. Cerrar el archivo original y el archivo auxiliar 8. Borrar el archivo original 9. Renombrar el archivo auxiliar con el nombre del archivo original // Funcion para modificar los campos de un registro de una cedula void Modificar(struct T_Datos Datos,int ced) { ifstream ENT; ofstream AUX; ENT.open("Datos.txt"); if(!ENT) { cout<<"Archivo no puede ser Abierto"<<endl; getch(); return; } AUX.open("Datos_Aux.txt"); if (!AUX) { cout<<"Archivo no puede ser Abierto"<<endl;

getch(); return; } ENT>>Datos.nombre; ENT>>Datos.cedula; while(!ENT.eof() && ced!=Datos.cedula) { AUX<<Datos.nombre<<'\t'<<Datos.cedula<<endl; ENT>>Datos.nombre; ENT>>Datos.cedula; } cout<<"Datos Nuevos"<<endl; cout<<"Nombre : "; cin>>Datos.nombre; cout<<"Cedula : "; cin>>Datos.cedula; AUX<<Datos.nombre<<'\t'<<Datos.cedula<<endl; ENT>>Datos.nombre; ENT>>Datos.cedula; while(!ENT.eof()) { AUX<<Datos.nombre<<'\t'<<Datos.cedula<<endl; ENT>>Datos.nombre; ENT>>Datos.cedula; } AUX.close(); ENT.close(); remove("Datos.txt"); rename("Datos_Aux.txt","Datos.txt"); }

5. Explicar brevemente los siguientes tipos de Acceso a los Archivos, y elaborar una tabla de con las ventajas y desventajas de cada uno (al menos 2 de c/u). 5.1 Secuencial. El acceso a los registros del archivo se hace en una forma predeterminada y de manera ordenada. En el caso de los archivos de acceso secuencial, para tener acceso al registro localizado en la posicin N, se debe haber accesado los N-1 registros previos, en un orden secuencial. Cuando se tienen pocos registros en un archivo, o que los registros son pequeos, la diferencia entre los tiempos de acceso de forma secuencial y directa puede no ser perceptible para el usuario; sin embargo, la diferencia viene a ser significativa cuando se manejan archivos con grandes cantidades de informacin.

La forma de manejar los archivos de acceso secuencial es ms sencilla en la mayora de los lenguajes de programacin, por lo que su estudio se antepone al de los archivos de acceso directo. El manejo secuencial de un archivo es recomendable cuando se deben procesar todos o la mayora de los registros, como por ejemplo en los casos de una nmina de empleados o en la elaboracin de reportes contables. Ventajas Desventajas La capacidad de accesar al siguiente Para leer una zona concreta del archivo registro rpidamente. hay que avanzar siempre, si la zona est antes de la zona actual de lectura, ser necesario "rebobinar" el archivo. Son muy sencillos de usar y de aplicar. Slo se pueden abrir para lectura o para escritura, nunca de los dos modos a la vez. El archivo crece proporcionalmente a la Si el acceso no est basado en el orden cantidad de registros que contiene. fsico de los registros, entonces la eficiencia del programa puede ser terrible dando lugar a tiempos de acceso muy altos. 5.2 Secuencial Indexado. Los registros se organizan en una secuencia basada en un campo clave presentando dos caractersticas, un ndice del archivo para soportar los accesos aleatorios y un archivo de desbordamiento. El ndice proporciona una capacidad de bsqueda para llegar rpidamente al registro deseado y el archivo de desbordamiento es similar al archivo de registros usado en un archivo secuencial, pero est integrado de forma que los archivos de desbordamiento se ubiquen siguiendo un puntero desde su registro predecesor. La estructura ms simple tiene como ndice un archivo secuencial simple, cada registro del archivo ndice tiene dos campos, un campo clave igual al del archivo principal y un puntero al archivo principal. Para encontrar un campo especifico se busca en el ndice hasta encontrar el valor mayor de la clave que es iguale o precede al valor deseado de la clave, la bsqueda continua en el archivo principal a partir de la posicin que indique el puntero. Cada registro del archivo principal tiene un campo adicional que es un puntero al archivo de desbordamiento. Cuando se inserta un nuevo registro al archivo, tambin se aade al archivo de desbordamiento. El registro del archivo principal que precede inmediatamente al nuevo registro segn la secuencia lgica se actualiza con un puntero del registro nuevo en el archivo de desbordamiento, si el

registro inmediatamente anterior est tambin en el archivo de desbordamiento se actualizar el puntero en el registro. Para procesar secuencialmente un archivo completo los registros del archivo principal se procesarn en secuencia hasta encontrar un puntero al archivo de desbordamiento, el acceso continua en el archivo de desbordamiento hasta que encuentra un puntero nulo, entonces renueva el acceso donde se abandon en el archivo principal. Las caractersticas ms relevantes de un archivo indexado, son las siguientes: a) El diseo del registro tiene que tener un campo, o combinacin de campos, que permita identificar cada registro de forma nica, es decir, que no pueda haber dos registros que tengan la misma informacin en l. A este campo se le llama campo clave y es el que va a servir de ndice. Un mismo fichero puede tener mas de un campo clave, pero al menos uno de ellos no admitir valores duplicados y se le llama clave primaria. A las restantes se les llama claves alternativas. b) Permiten utilizar el modo de acceso secuencial y el modo de acceso directo para leer la informacin guardada en sus registros. El modo de acceso directo se hace conociendo el contenido del campo clave del registro que queremos localizar. Con esa informacin el sistema operativo puede consultar el ndice y conocer la posicin del registro dentro del fichero. En el modo de acceso secuencial los registros son ledos ordenados por el contenido del campo clave, independientemente del orden en que se fueron grabando (El orden lgico no es igual al orden fsico), debido a que el acceso a los datos se hace a travs del ndice, que para hacer ms fcil la bsqueda de los registros permanece siempre ordenado por el campo clave. c) Solamente se puede grabar en un soporte direccionable. Ej.: disco magntico. Si esto no fuera as no podra emplear el acceso directo. Ventajas Permite el acceso secuencial. Desventajas Ocupa ms espacio en el disco que los ficheros secunciales, debido al uso del rea de ndices. Permite el acceso directo a los registros. Tiene tendencia a que aumente el tiempo medio de acceso a los registros, cuando se producen muchas altas nuevas con claves que hay que intercalar entre las existentes, ya que aumenta el rea de overflow. Se pueden actualizar los registros en el Solo se puede utilizar soportes mismo fichero, sin necesidad de crear un direccionables.

fichero nuevo de copia en el proceso de Obliga a una inversin econmica mayor, actualizacin. por la necesidad de programas y, a veces, hardware ms sofisticado. La organizacin secuencial indexada es Los registros deben de ser de longitud fija. conveniente para archivos con mediana volatilidad, actividad variable y tamao relativamente estable. 5.3 Directo. Los archivos de acceso aleatorio son ms verstiles, permiten acceder a cualquier parte del fichero en cualquier momento, como si fueran arrays en memoria. Las operaciones de lectura y/o escritura pueden hacerse en cualquier punto del archivo. En general se suelen establecer ciertas normas para la creacin, aunque no todas son obligatorias: 1. Abrir el archivo en un modo que te permita leer y escribir. Esto no es imprescindible, es posible usar archivos de acceso aleatorio slo de lectura o de escritura. 2. Abrirlo en modo binario, ya que algunos o todos los campos de la estructura pueden no ser caracteres. 3. Usar funciones como fread y fwrite, que permiten leer y escribir registros de longitud constante desde y hacia un fichero. 4. Usar la funcin fseek para situar el puntero de lectura/escritura en el lugar apropiado de tu archivo. Ventajas Desventajas

Permite acceder al archivo de dos Ineficiente acceso a la totalidad o gran maneras: directamente (a travs de la parte de los registros. Mayor uso de clave de cada registro) y espacio de almacenamiento. secuencialmente. Permite realizar operaciones de lectura El acceso secuencial, del principio al fin y escritura simultneamente. del fichero, puede ser muy lento porque podemos encontrarnos con muchos huecos, es decir, posiciones que no estn siendo usadas. Son muy rpidos al tratar registros individuales.

6. Explicar las diferencias entre el almacenamiento en Archivos en Modo Texto y Modo Binario. La principal diferencia que existe entre el almacenamiento de estos tipos de archivos, es que el archivo en modo texto los datos son almacenados usando Ascii y por tanto son plenamente visibles usando cualquier editor, mientras que en el archivo en modo binario los datos son almacenados en notacin hexadecimal y por tanto se ocupa un editor binario para reconocerlos, sin embargo un archivo binario es mas compacto que un archivo texto. El archivo en modo texto slo estn permitidos ciertos rangos de valores para cada byte. Algunos bytes tienen un significado especial, por ejemplo, el valor hexadecimal 0x1A marca el fin de fichero. Si abrimos un archivo en modo texto, no ser posible leer ms all de un byte con ese valor, aunque el fichero sea ms largo, en cambio el archivo en modo binario estn permitidos todos los valores para cada byte. En estos archivos el final del fichero se detecta de otro modo, dependiendo del soporte y del sistema operativo. La mayora de las veces se hace guardando la longitud del fichero. Cuando queramos almacenar valores enteros, o en coma flotante, o imgenes, etc, deberemos usar este tipo de archivos.

Conclusin En nuestro mundo la programacin cada da toma ms importancia, el resultado de ello es el desarrollo de nuevas tecnologas, las cuales no hacen la vida ms fcil cada da y esto se debe a que nos ayudo a almacenar y manejar informacin de manera fcil y rpida, en este caso los archivo una de las herramientas de la programacin(ya sea por medio de un archivo secuencial, indexado o directo) y dependiendo de las necesidades del programador en ese momento nos puede facilitar una operacin muy complicada en algo ms sencillo de manejar sin necesidad de realizar procedimientos muy largos y tediosos.

Bibliografa

http://www.scribd.com/doc/21709668/Archivos-en-c http://sistemas.itlp.edu.mx/tutoriales/pascal/u8_8_7.html http://www.itnuevolaredo.edu.mx/maestros/sis_com/takeyas/Apuntes/Administracion_Arch ivos/Apuntes/Archivos_secuenciales.PDF http://c.conclase.net/ficheros/index.php?cap=003 http://boards4.melodysoft.com/200402ADA0403/archivos-secuenciales-indexados-6.html http://www.slideshare.net/luismy_martinez/archivo-secuencialindexado http://www.monografias.com/trabajos6/sistar/sistar.shtml#secuenciales http://profeblog.es/blog/alfredo/2008/05/17/ficheros-directos-y-aleatorios-fundamentos-delhashing/ http://www.programacionfacil.com/cpp:archivo_secuencial_introduccion http://www.monografias.com/trabajos7/arch/arch.shtml

Das könnte Ihnen auch gefallen