Anda di halaman 1dari 36

Conceptos Lgicos

Base de
datos
Campos
Registro
Archivos
Jerarqua de Datos
Archivos
Registros
Campos
Subcampos
Caracteres
Base de
datos
FLUJOS
Flujos de
entrada
Flujos de salida
Jerarqua de clases de flujo
Por que usar archivos para
ENTRADA y SALIDA?
Nos permiten almacenar datos
permanentemente .
Guardar datos y no tener que volver a
correr el programa


ENTRADA Y SALIDA DE
ARCHIVOS
Cuando un programa obtiene entradas
decimos que esta LEYENDO.
Cuando un programa enva salidas
decimos que esta ESCRIBIENDO.
ENTRADA y SALIDA DE
ARCHIVOS
ENTRADA I f s t r e a m
SALIDA o f s t r e a m
LIBRERA #include <fstream.h>
SENTENCIAS
ENTRADA
ifstream descriptor
(nombre.extensin);
SALIDA

ofstream descriptor
(nombre.extensin);
APERTURA de FICHEROS
PRIMERO: declaramos la direccin del
flujo de entrada y salida

ifstream descriptor; // Para ficheros de
entrada

ofstream descriptor; // Para ficheros de
salida
APERTURA de FICHEROS
SEGUNDO: Asociamos el descriptor de
ficheros al fichero en s.

descriptor.open(nombre.extensin,int
modo);
Tambien:
ifstream descriptor(nombre.extensin,int
modo); // para entrada

ofstream descriptor(nombre.extensin,int
modo); // para salida

Combinaciones
ios:: in // Modo entrada
ios:: out // Modo salida (por defecto)
ios:: app // Modo aadir, o sea, posicionar el cursor
del fichero (ver abajo)
// al final del fichero antes de cada escritura
ios:: binary // El archivo se abre en modo binario
ios:: ate // El archivo se abre y el cursor se
posiciona al final
ios:: nocreate // Genera un error si el fichero no
existe
ios:: noreplace // Genera un error si el fichero
existe ya
EJEMPLO
//Pseudocdigo en C++
#include <iostream>// Bibliooteca para la entrada-salida
estndar
#include <fstream> // Biblioteca para el manejo de ficheros
#include <stdlib.h>
using namespace std;
int main()
{
ifstream flujo_in;
ofstream flujo_out;
flujo_in.open("datos.txt");
flujo_out.open("datos.txt");
flujo_out<<"la suma de los primeros tres numeros datos.txt
es\n";
flujo_out<<(1+2+3);
flujo_out<<endl;
flujo_in.close();
flujo_out.close();
return 0;
}
ENTRADA y SALIDA de
CARACTERES
FUNCIONES: get y put


funciones
get put
Leer carcter de
entrada y
guardarlo en una
variable tipo char
Se emplea para
salida de
caracteres en
lugar de entrada
GET
//Pseudocdigo en C++
#include <iostream>// Bibliooteca para la entrada-
salida estndar
#include <fstream> // Biblioteca para el manejo de
ficheros
#include <stdlib.h>
using namespace std;
int main()
{
cout<<"teclee una linea de entrada y se hara eco de
ella:\n";
char simbolo;
do
{
cin.get(simbolo);
cout<<simbolo;
}while(simbolo!='\n');
cout<<"demostracio finalizada.";
}

PUT
Es anloga a la funcin miembro get slo que se emplea para salida. La funcin miembro put
recibe un argumento que debe ser una expresin de tipo char
(constante o variable).
char ch;
ch=a;
cout.put(ch);
//Pseudocdigo en C++
#include <iostream>
#include <fstream>
using namespace std;
int main ()
{
char ch; ofstream outfile ("test.txt");
do { ch=cin.get(); outfile.put (ch); }
while (ch!='.'); return 0; }
Banderas
En C++ se definen banderas de formato para la entrada/salida, que pueden ser
manipuladas por medio de las funciones .flags, .setf y .unsetf. Por ejemplo, la
siguiente expresin activa la justificacin por la izquierda para la salida enviada a
la variable cout:
Estas banderas son definidas en la clase ios_base.
cout.setf(ios_base::left, ios_base::adjustfield);
Manipuladores
Es posible acceder y manipular las banderas indirectamente, usando manipuladores para el
acceso desde un flujo. Los programadores ya estarn acostumbrados por ejemplo al uso
de endl, que imprime un salto de lnea y actualiza la salida de datos del flujo.
cout << boolalpha; cout.setf(ios_base::boolalpha);
Manipuladores definidos en
<ostream>

Manipuladores definidos en <iomanip>
Introduccin a clases y objetos

Un programa se encarga de procesar
informacin. El usuario se encarga de
dos cosas fundamentales:
- Los datos que se procesan (datos)
- Las operaciones que procesan esos
datos (funciones)
Podemos ligar datos con operaciones
Objeto : entidad compuesta de unos datos
y las operaciones que realizamos sobre
esos datos.





Clase : Los datos y las operaciones
comunes a un conjunto de objetos forman
un conjunto que se conoce como clase

Ifstream flujo_in;
Ofstream flujo_out;
Flujo_in.open(archin.dat);
Flujo_out.0pen(archout.dat);




Miembros
Datos
Operaciones
Atributos
Mtodos
Sintaxis:

Objeto_Invocador.Nombre_Funcion_Miem
bro(Lista_de_argumentos);



Struct
Los identificadores se declaran dentro
de las llaves {} son los nombres de los
miembros .

Cada tipo de estructura especifica una
lista de nombres de miembros
struct cliente

{
char nombre[30];
char calle[30];
double importe_factura;
char tlf[20] ;

int edad;

void visualizar_datos_cliente ( );
void modificar_edad ( );
void hacer_descuento (double);
} ;
cliente c;
Para ejecutar stos mtodos, se ha de utilizar una variable de esa estructura con el operador .
(acceso habitual a miembros)

Estructura de clases
class NombreClase {
private:
// implementacion de la clase
// solamente los atributos
public:
// interfaz de la clase
}
class Cliente
{
char nombre[30];
char calle[30];
double importe_factura;
char telefono[20] ;
int edad;
void visualizar_datos_cliente ( );
void modificar_edad ( );
void hacer_descuento (double);
} ;
c
Paso de mensajes: Si queremos que un
determinado objeto ejecute un metodo,
utilizamos el operador punto (.)

DiadelAnio hoy;

hoy.salida ( );
Resolucin de alcanse
Empleamos este operador para
especificar el nombre de clase cuando
damos la deficicion de una funcion
miembro.

Void DiadelAnio::salida( )
#include <iostream>
using namespace std;
class diadelanio
{
public:
void salida();
int mes;
int dia;
};
int main ()
{
diadelanio hoy,cumpleanios;
cout<<"Teclee la fecha de hoy \n";
cout<<"Dia del mes como numero: ";
cin>>hoy.mes;
cout<<"Teclee el da del mes: ";
cin>>hoy.dia;
cout<<"Teclee la fecha de su cumpleanos:\n";
cout<<"De el mes como un numero: ";
cin>>cumpleanios.mes;
cout<<"Teclee el dia del mes: ";
cin>>cumpleanios.dia;


cout<<"La fecha de hoy es";
hoy.salida( );
cout<<"Tu cumpleaos es ";
cumpleanios.salida( );
if(hoy.mes==cumpleanios.mes&&hoy.dia==cumpleanios.dia)
cout<<"Feliz cumpleanios\n";
else
cout<<"Feliz no cumpleanios";
return 0;

}
void diadelanio::salida()
{
cout<<"mes ="<<mes<<",dia= "<<dia<<endl;
}
Miembros Pblicos y
Privados
El identificador public separa la clase en
dos partes:
Parte privada

Parte Pblica

Solo podemos acceder a los miembros
privados a travs de las funciones
publicas.
#include <iostream>
using namespace std;
class diadelanio
{
public:
void entrada();
void salida();
void fijar(int nuevo_mes,int nuevo_dia);
int obtener_mes();
int obtener_dia();
private:
int mes; //miembros privados
int dia;
};
int main ()
{
diadelanio hoy,cumpleanios_bach;
cout<<"Teclee la fecha de hoy \n";
hoy.entrada();
cout<<"La fecha de hoy es ";
hoy.salida();
cumpleanios_bach.fijar(3,21);
cout<<"El cumpleaos de J. S. Bach es ";
cumpleanios_bach.salida();

void diadelanio::entrada()
{
cout<<"Introdusca el mes como un numero: ";
cin>>mes;
cout<<"Teclee el dia del mes: ";
cin>>dia;
}
void diadelanio::salida()
{
cout<<"mes= "<<mes<<", dia = "<<dia<<endl;
}
void diadelanio::fijar(int nuevo_mes,int nuevo_dia)
{
mes=nuevo_mes;
dia=nuevo_dia;
}
int diadelanio::obtener_mes()
{
return mes;
}
int diadelanio::obtener_dia()
{
return dia;
APLICACION

Anda mungkin juga menyukai