Programación Orientada a Objetos -Unidad 6 archivos
Grupo nro4ficheros
1.
2. En numerosas aplicaciones se requiere utilizar grandes
cantidades de información que, normalmente, no
caben en la memoria principal. Debido a estas causas
se requiere utilizar archivos (ficheros) para almacenar
de forma permanente grandes cantidades de
datos, incluso después de que los programas que crean
los datos se terminan. Estos datos almacenados
también se los denomina “datos persistentes” y
permanecen después de la duración de la ejecución del
programa.
3. El procesamiento de archivos es una de las
características más importantes que un lenguaje de
programación debe tener para soportar aplicaciones
comerciales que procesas, normalmente cantidades
masivas de datos persistentes.
4. Un campo esta caracterizado por su tamaño y o
longitud y su tipo de datos (cadena de
caracteres, entero, lógico, etc.). Los campos
pueden incluso variar en longitud. En la mayoría
de los lenguajes de programación los campos de
longitud variable no están soportados y se suponen
de longitud fija.
Ejemplo
5. Es una colección de registros relacionados entre sí con
aspectos en común y organizados apara un propósito
especifico. Por ejemplo, un fichero de una clase escolar
contiene un conjunto de registros de los estudiantes de
esa clase. Otros ejemplos pueden ser el fichero de
nominas de una empresa, inventarios, stocks, etc.
6. Los datos procesados por las computadoras se organizan en
jerarquía de datos formando estructuras a partir de
bits, caracteres, campos, etc. Ejemplo:
•Nombre (cadena)
•Número de expediente (entero)
•Numero de documento de identidad o pasaporte (entero
doble)
•Año de nacimiento (entero)
•Estudios (cadena)
7. Según las características del soporte empleado y el modo en que se han
organizado los registros, se consideran 2 tipos de acceso a los registros de
un archivo:
Acceso secuencial
Acceso directo
Creacion de un archivo:
La creación de un archivo es la operación mediante la cual se introduce la
información correspondiente al archivo en un soporte de almacenamiento
de datos.
Nombre dispositivo (el lugar)
Nombre del archivo (identifica el archivo entre los restantes)
Tamaño del archivo
Organización del archivo (tipo de organización)
Tamaño del bloque o registro físico (cantidad de datos que se leen)
8. Par que el usuario pueda abrir un archivo creado se toma los siguientes
parámetros que se deben incluir en una instrucción de apertura (abrir) son:
Nombre del dispositivo
Nombre del usuario o canal de comunicación.
Nombre del archivo.
Al ejecutar la instrucción abrir se pueden encontrar errores como:
Archivo no encontrado en el dispositivo especificado(nombre de un archivo)
Archivo ya está en uso para alguna otra aplicación del usuario.
Errores hardware
9. Definición de Fichero:
Una biblioteca en C++ que proporciona “funciones” y operadores para el manejo de
ficheros es la biblioteca fstream.
#include <fstream>
Declaración de Variables de tipo "Fichero":
ifstream descriptor; // Para ficheros de entrada
ofstream descriptor; // Para ficheros de salida
Apertura de Ficheros de Texto (supongamos TCadena
nombre):
in.open(nombre); // Apertura para Lectura
out.open(nombre); /* Apertura para Escritura. (borra el contenido si lo hubiera) */
out.open(nombre,ios::app); // Apertura para añadir datos al final
in.open(nombre,ios::in|ios:: out); // Apertura para Lectura y Escritura
out.open(nombre,ios::in|ios:: out); // Apertura para Lectura y Escritura
Apertura de Ficheros Binarios (supongamos TCadena
nombre):
in.open(nombre,ios::binary); // Apertura para Lectura
out.open(nombre,ios::binary); /* Apertura para Escritura, (borra el contenido si lo
hubiera) */
out.open(nombre,ios::binary| ios::app); // Apertura para añadir datos al final
in.open(nombre, ios::binary | ios::in | ios:: out); // Apertura para Lectura y
10. Ejemplo 1:
Las dos líneas siguientes abren el fichero “mio.txt” como fichero de entrada (para
lectura) y lo asocian al descriptor in.
ifstream in; // descriptor del fichero a abrir
in.open(“mio.txt”); // Apertura del fichero;
Ejemplo 2:
Para abrir el fichero “salida.dat” en modo salida (si el fichero no existe lo crea, y si
existe borra su contenido) asociándolo al descriptor out podemos usar la siguiente
sentencia;
ofstream out;
out.open("salida.dat");
Ejemplo 3:
// Abrimos el fichero “F2.txt” como fichero de salida en modo AÑADIR.
fstream inout;
inout.open("F2.txt", ios::app);
11. Cierre de ficheros
Un fichero anteriormente abierto y con un descriptor asociado a él debe ser cerrado
con el fin de liberar los recursos, asociado a él de la siguiente forma:
descriptor.close()
Detección de fin de fichero y otras funciones.
La función eof() que devuelve true si se ha alcanzado el final del fichero y falso en
cualquier otro caso. REQUIERE LECTURA ADELANTADA: Para que la función
eof() devuelva un valor de verdad (actualizado).
La funcioón fail() devuelve true si existe un error en una operación de flujo
asociada al fichero
La función bad() devuelve true si el flujo está corrupto.
La función good() que devuelve true si no existe un error en una operación de
flujo y false en caso contrario.
12. Ejemplo 4:
ifstream in;
in.open("F1.dat");
if (in.bad() )
{
cout << "n Incapaz de crear o abrir el fichero "; // salida estándar
cout << " para salida " << endl;
}
else
{
// Se opera sobre el fichero
}
13. Ejemplo 5:
#include <fstream> // Biblioteca para el manejo de ficheros
#include <iostream> // Biblioteca para la entrada-salida estándar
#include <cstdlib> // Biblioteca estándar de C
using namespace std;
int main()
{
ofstream fichout;
fichout.open("EJEMPLO5.TXT");
if (fichou.bad()t)
{
cout << "n Incapaz de crear este o abrir el fichero n";
}
else
{ // Escritura en el fichero
fichout << "Alumno 1" << " " << 5.0 << " APROBADO" << endl;
fichout << "Alumno 2" << " " << 1.1 << " SUSPENSO" << endl;
fichout << "Alumno 3" << " " << 8.0 << " NOTABLE " << endl;
fichout.close();
}
} // Fin del main
14. Ejemplo 6:
#include <fstream> // Biblioteca para el manejo de ficheros
#include <iostream> // Biblioteca para la entrada-salida estándar
#include <cstdlib> // Biblioteca estándar de C
using namespace std;
typedef char TCadena[30];
int main()
{
ifstream fichin; // declaracion del fichero
int i;
float r;
TCadena cad;
fichin.open("EJEMPLO5.TXT");
if (fichin.bad())
{
cout << "Incapaz de crear o abrir el fichero " << endl;
}
else
{
fichin >> i; // Observese la lectura adelantada!!!
while (!fichin.eof())
{ 1
15. 1
cout << i << " "; // Lectura de valores en el fichero
fichin >> r;
cout << r << " "; // Lectura de valores en el fichero
fichin >> cad;
cout << cad << endl; // Lectura de valores en el fichero
fichin >> i;
}
fichin.close();
} // Fin del main
16. Para poder tener un archivo es necesario primero crearlo.
Concluimos que los ficheros son formas de guardar
informaion a largo plazo que es lo contrario a un array
porque un array solo es capaz de guardar informacion
cuando se ejecuta el programa.
Es importate que comprendamos a fondo la utilidad de
un fichero, porque es capaz de guardar cualquier
informacion, y esto nos sirve en cualquier medio de
trabajo.
Un array cuando se ejecuta se guarda en la memoria
RAM, y un fichero cuando se ejecuta se guarda en la
memoria ROM.