Programación II
M.C. Rebeca Rodríguez
Huesca
Objetivo de la asignatura
Desarrollar la capacidad en el
alumno para programar en el
lenguaje de programación “C” las
técnicas recursivas, de ordenación
y búsqueda de información, así
como la construcción y uso de
estructuras de datos básicas
Unidades de aprendizaje
Archivos
Tipos de estructuras de datos
Recursividad
Ordenación
Búsqueda
Políticas de evaluación
Calificación mínima 7
3 parciales “oficiales”
Criterios de evaluación:
Producto 40%
Conocimiento 40%
Desempeño 20%
Archivos
Definición de Archivo
Es una secuencia de bits
almacenados en algún dispositivo
externo
En C++, es simplemente un flujo
externo, una secuencia de bytes
almacenados en disco
Tipos de archivos
Texto
Binarios
Archivos de texto
Es un secuencia de caracteres organizados
en líneas terminadas por un carácter de
nueva línea.
Almacenan datos como códigos ascii. Los
valores simples, tales como números y
caracteres únicos, están separados por un
espacio.
Se pueden utilizar para almacenamiento
de datos o crear imágenes de salida
impresa que se pueden enviar más tarde a
una impresora
Archivos binarios
Almacenan flujos de bits, sin prestar
atención a los códigos ascii o a la
separación de espacios.
Son adecuados para almacenar objetos.
Sin embargo, el uso de los archivos
binarios requiere usar la dirección de
una posición de almacenamiento
Ejemplos: fotografías, imágenes, texto
con formato, archivos ejecutables, etc.
Biblioteca de Flujos
ifstream
ofstream
fstream
Se declaran en fstream.h
Operaciones con archivos
Abrir
Cerrar
Leer
Escribir
Buscar
Borrar
Apertura de un archivo
Identifica la posición del archivo en
el programa.
Para abrir un archivo de texto para
lectura, se crea un objeto (un flujo)
de la clase ifstream
Para abrirlo para escritura, se crea
un objeto de la clase ofstream
Formas de abrir con
ofstream
en un modo salida (ios_base ::out)
en modo añadir (ios_base::app)
Ejemplo:
ofstream archsal("[Link]",
ios_base::out);
Precaución
if (!archsal) // apertura fallida
{
cerr <<”no se puede abrir el archivo para salida \
n";
exit(-1);
}
Ejemplo
//Se debe tener un archivo de texto que se pueda leer y mostrar en la pantalla
#include <fstream.h>
#include <iostream.h>
int main () {
char nombre_arch[10];
cout<< "Nombre del archivo: ";
cin>> nombre_arch;
ifstream archent(nombre_arch);
if (!archent){
cout <<"No se puede abrir el archivo";
return 1;
}
char car;
while ([Link](car))
[Link](car);
[Link]() ;
return 0;
}
Prototipo de la función
Open
void open(const char*nomarch, int modo, int acceso = filebuf::openprot);
Argumento Modo
Donde:
ios::in Modo de entrada
nomarch: es el nombre
del archivo que puede ios:app Modo añadir
incluir la ruta de acceso ios:out Modo salida
modo: determina cómo ios:ate Abrir y buscar el fin de
se abrirá el archivo. archivo
ios::nocreate Genera un error si no
acceso: especifica el existe el archivo
permitido de acceso por
ios::trunc Trunca el archivo a 0 si
defecto que se asigna a ya existe
un archivo si se crea por
ios::noreplac Genera un error si el
la función constructor. El e archivo ya existe
valor por defecto es
ios:binary El archivo se abre en
filebuf::openprot modo binario
Ejemplos
Abre el archivo [Link] para entrada de texto
char cAutoExec = \\[Link];
fstream f;
[Link] (cAutoExec, ios::in);
Abre el archivo [Link] para salida de textos fstream f;
[Link] ("[Link]", ios:out);
Abre el archivo [Link] para entrada y salida binaria
fstream f;
[Link] ("[Link]', ios::in I ios::out I ios::binary);
Aunque es válido abrir un archivo mediante la función
open(), no se suele hacer, ya que las clases ifstream,
ofstream y fstream disponen de las funciones que lo abren
automáticamente.
Función Close
Cierra el archivo al que se conecta
el objeto de flujo.
Su sintaxis es:
void close()
Otras funciones
good: devuelve un valor distinto de cero si no existe ningún
error en una operación de flujo. Su declaración es:
int good()
fail: devuelve un valor distinto de cero si existe un error en una
operación de flujo. Su declaración es:
int fail()
eof: devuelve un valor distinto de cero si el flujo alcanzó el
final del archivo. Su declaración es:
int eof();
El operador sobrecargado ! determina el estado del error. Este
operador toma un objeto de flujo como su argumento.
void attach(int fd): conecta el objeto flujo al flujo
referenciado por el descriptor del archivo fd.
filebuf* rdbuf(): devuelve un array filebuf asociado con el
objeto flujo
Lectura y escritura de
archivo de texto
Se pueden realizar con los
operadores
<<
>>
con el flujo abierto.
Ejemplo: Escribe un entero, un valor
de coma flotante y una cadena en
un archivo llamado demo
#include <fstream.h>
#include <iostream.h>
int main()
{
ofstream sal("[Link]");
if (!sal){
cout <<"No se puede abrir el archivo";
return 1;
}
sal <<10 << " " <<325.45 <<endl;
sal <<"Ejemplo de archivo de texto" <<endl;
[Link]();
return 0;
}