SlideShare une entreprise Scribd logo
1  sur  41
ARCHIVOS
Conceptos.
Conceptos basicos
Manejo en C++
Secuenciales
De acceso directo
2
Introducción
 Ya aprendieron a manejar gran cantidad
de datos del mismo y diferente tipo al
mismo tiempo.
 El problema es que el programa retiene
los datos mientras esté ejecutándose y se
pierden al terminar la ejecución.
 La solución para hacer que los datos no se
pierdan es almacenarlos en un archivo.
 Los archivos son medios que facilita el
lenguaje para almacenar los datos en
forma permanente, normalmente en los
dispositivos de almacenamiento externo.
3
Introducción
 Desde el punto de vista informático, un archivo es una
colección de información que almacenamos en un
soporte permanente para poder manipularla en cualquier
momento.
 Esta información se almacena como un conjunto de
registros.
Archivos de datos
 Area localizada en una unidad
secundaria de almacenamiento que
se utiliza para guardar los datos que
se utilizarán en un programa.
Programa
en C++
Input
data
file
Output
data
file
5
Introducción
 En C++, se utilizan streams (flujos) para gestionar la
lectura y escritura de datos. Ya conocemos dos flujos
estándar: cin y cout.
 En definitiva, abrir un fichero significa definir un stream.
Dicho stream permite la transferencia de datos entre el
programa
 El buffer es un área de memoria situada en la RAM
asignada al programa que abre el archivo y el fichero en
disco.
6
Introducción
 Flujos o streams
 • Un flujo o stream permite comunicar información entre un
 origen y un destino.
 – El propio programa C++ es uno de los extremos de un flujo (el destino
 o el origen de la información)
 – El otro extremo del flujo puede ser un dispositivo físico (teclado,
 pantalla, etc.) o un fichero o archivo almacenado en un dispositivo
 físico de almacenamiento.
7
Introducción
 Ficheros o archivos de datos
 • Un fichero o archivo almacena una secuencia de datos:
 – < d1, d2, d3, ... , dK‐1, dK >
 • Los datos de un fichero o archivo son persistentes:
 – Persistencia: capacidad de que los datos sobrevivan a la ejecución del
 programa y puedan ser utilizados (leídos) posteriormente
 • La capacidad de un fichero o archivo no está limitada a priori:
 – Los ficheros o archivos almacenan secuencias de datos de longitud
 no limitada a priori (el límite lo impondrá la capacidad física del
 dispositivo que lo almacene)
8
Introducción
 Manipulación de Ficheros
 Toda transferencia de datos entre el programa y
el fichero en disco se realiza a través del buffer.
El buffer está para dar eficiencia.
 Las operaciones de E/S son más eficientes:
 El acceso a la memoria RAM consume menos tiempo que el acceso a un
dispositivo físico.
 El buffer hace que el número de accesos al fichero físico sea menor.
 El uso del buffer permite realizar operaciones de
entrada salida de forma más eficiente.
9
Introducción
 Organización de archivos
 Archivos de acceso secuencial: los datos se
almacenan de forma consecutiva y no es posible leer un registro
directamente, es decir para leer el registro n hay que leer los n-1
registros anteriores.
 Archivos de acceso aleatorio: se puede acceder a un
registro concreto sin necesidad de leer todos los anteriores.
 Tipo de almacenamiento en Archivos
 Archivos de texto: Los datos se almacenan usando código
ASCII y por tanto, pueden ser procesados por cualquier editor de
texto.
 Archivos binarios: Los datos se almacenan en binario.
10
Archivos en C++
 Biblioteca de flujos
 Para poder manipular archivos, C++ dispone de la
biblioteca estándar 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>
 Operaciones asociadas a archivos
 – Abrir fichero
 – Cerrar fichero
 – Lectura y escritura
 – Funciones de control
11
Archivos en C++
 Biblioteca de flujos
 Para poder manipular archivos, C++ dispone de la
biblioteca estándar 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>
 Operaciones asociadas a archivos
 – Abrir fichero
 – Cerrar fichero
 – Lectura y escritura
 – Funciones de control
 ARCHIVOS Y FLUJOS
 En C++, un stream es un flujo de datos de una
fuente a un destino. Las fuentes y los destinos
pueden ser cualquiera de los dispositivos o
archivos de entrada/salida.
 Para la entrada y la salida, hay dos flujos
diferentes llamados flujo de entrada y flujo de
salida.
 flujo de entrada estándar cin
 flujo de salida estándar cout
 la entrada y la salida estándar son el teclado y
la pantalla del monitor, respectivamente.
13
Introducción
 Los flujos sobre archivos en disco vienen representados por las clases
ifstream, ofstreamy fstream, con las que es posible leer de un
archivo, escribir en un archivo o leer y escribir, respectivamente.
 Estas clases heredan de fstreambasemétodos como openy close,
para abrir y cerrar la conexión con el archivo, y de las clases istreamy
ostreamlos operadores y métodos necesarios para escribir o leer.
 El constructor de estas clases acepta como argumento la ruta del archivo
a abrir y, opcionalmente, unos indicadores de modo de apertura.
La manipulación de archivos en C++ es un
proceso de cinco pasos:
1. Incluir el header file fstream en el programa
2. Declarar las variables de tipo file stream
3. Asociar las variables con las fuentes de
input/output
4. Utilizar las variables con >>, << u otras
funciones de i/o
5. Cerrar los archivos.
15
Archivos en C++
 Apertura de archivos
 Al igual que los flujos cin y cout, los flujos de E/S solo
pueden transferir datos en una dirección, esto significa
que se tienen que definir flujos diferentes para lectura y
escritura de datos.
 Abrir el archivo para lectura o entrada
 Abrir un archivo para entrada, es definir un flujo de
archivo de entrada.
16
Archivos en C++
 Supongamos que queremos abrir un archivo
que se llama misdatos.txt que se encuentra en
la unidad de disco a:
 Hemos definido el flujo de entrada Entrada.
 #include <fstream.h>
 ….
 ifstream Entrada (“a:misdatos.txt”);
 …
 ...
20
Archivos en C++
 ifstream: It is the input file stream class. Its member function open( ) associates
the stream with a specified file in an input mode.
 In addition to open(), ifstreamclass inherits the following functions from
istreamclass.
 (i) get( ) (ii) getline( ) (iii) read( ) (iv) seekg( ) (iv) tellg( )
 ofstream: It is the output file stream class. Its member function open( ) associates
the stream with a specified file in an output mode.
 In addition to open(), ofstreaminherits the following functions from ostreamclass
 (i) put( ) (ii) write( ) (iii) seekp( ), (iv) tellp( )
21
Archivos en C++
 fstream: It supports files for simultaneous input and output. It is derived from
ifstream, ofstreamand iostreamclasses.
 The functions associated with this stream are :
 1. open : This associates the stream with a specified file.
 2. close : It closes the stream.
 3. close all : It closes all the opened streams
 4. seekg: Sets current `get' position in a stream
 5. seekp: Sets current `put' position in a stream
 6. tellg: Returns the current `get' position in a stream
 7. tellp: Returns the current `put' position in a stream.
Ejemplo: Algoritmo
1. Declarar las variables
2. Abrir el archivo de input
3. Abrir el archivo de output
4. Utilizar los manipuladores de output
5. Leer el nombre del estudiante del archivo
6. Escribir en el archivo de output el nombre del
estudiante
7. Leer los scores de las cinco notas
8. Escribir los scores en el archivo de output
9. Calcular el promedio
10. Escribir el promedio en el archivo de output
11. Cerrar los archivos
24
Introducción
 Funciones de la clase ifstream que van a ser utilizadas:
 • f.open(const char nombreFichero[]) asocia el fichero al flujo <f>
 • f.is_open() devuelve true si y solo si el flujo <f> está asociado a un
fichero
 • f.get() lee o extrae el siguiente carácter del flujo <f> y lo devuelve
 • f.eof() devuelve true si y solo si la última operación de lectura no pudo
 completarse por no haber ya datos pendientes de lectura en el flujo <f>
 • f.close() libera el fichero asociado al flujo <f> y lo disocia de éste
25
Introducción
 Escritura de datos en un fichero
 Funciones de la clase ofstream que van a ser utilizadas:
 • f.open(const char nombreFichero[]) asocia el fichero al flujo f
 • f.is_open() devuelve true si y solo si el flujo f está asociado a un fichero
 • f.put(char c) inserta en el flujo f el carácter c
26
Introducción
27
Introducción
Ejemplo: Programa en C++ donde se capturan datos desde un
archivo, se procesan, y luego se escriben en un archivo de salida
#include<iostream> // para utilizar cin cout endl
#include<fstream> //para utilizar tipos de datos ifstream y ofstream
#include<iomanip> // para los manipuladores de output
#include<string> // para poder utilizar variables del tipo “string” en el programa
Ejemplo: Programa en C++ donde se capturan datos desde un
archivo, se procesan, y luego se escriben en un archivo de salida
using namespace std;
int main()
{ // Paso #1
// Se declaran las variables a utilizar
ifstream inFile; //input file stream variable
ofstream outFile; //output file stream variable
double test1, test2, test3, test4, test5;
double average;
string firstName;
string lastName;
Ejemplo: Programa en C++ donde se capturan datos desde un
archivo, se procesan, y luego se escriben en un archivo de salida
inFile.open("test.txt"); // Paso #2
outFile.open("testavg.out"); // Paso #3
outFile << fixed << showpoint; // Paso #4
outFile << setprecision(2);
cout<< "Processing data" << endl;
inFile >> firstName >> lastName; // Paso #5
outFile << "Student Name: " << firstName
<< " " << lastName << endl; // Paso #6
Ejemplo: Programa en C++ donde se capturan datos desde un
archivo, se procesan, y luego se escriben en un archivo de salida
inFile >> test1 >> test2 >> test3
>> test4 >> test5; // Paso #7
outFile << "Test scores: " << setw(6) << test1
<< setw(6) << test2 << setw(6) << test3
<< setw(6) << test4 << setw(6) << test5
<< endl; // Paso #8
average = (test1 + test2 + test3 + test4
+ test5) / 5.0; // Paso #9
outFile << "average test score: " << setw(6)
<< average << endl; // Paso #10
inFile.close(); // Paso #11
outFile.close();
return 0;
}
32
Archivos en C++
 ASPECTOS GENERALES SOBRE E/S
 Los operadores de inserción y extracción, << y >> respectivamente, están
sobrecargados para todos los tipos de datos intrínsecos, sin importar el tipo
de streamsobre el que se trabaja.
33
Introducción
 Todos las clases derivadas de ios heredan una serie de indicadores de
estado que nos permiten saber cómo ha quedado el streamtras la última
operación:
 good(): Devuelve un valor distinto de 0 si no se ha producido ningún
error.
 eof(): Devuelve un valor distinto de 0 si se ha llegado al fin de archivo.
 bad(): Devuelve un valor distinto de 0 si el streamha quedado inservible.
 fail(): Devuelve un valor distinto de 0 si la última operación ha fallado.
 El operador ! está sobrecargado, de forma que es posible comprobar si
un streamm puede seguir utilizándose o no mediante una expresión del tipo
if(!strEntrada) hayFallo();
34
Directos
 En los flujos que lo permitan, es posible desplazar el puntero de
lectura/escritura con el método seekg, facilitando un desplazamiento y una
de las tres constantes siguientes:
 ios::beg: El desplazamiento será absoluto.
 ios::cur: El desplazamiento será relativo respecto a la posición actual.
 ios::end: El desplazamiento será relativo respecto al fin de archivo.
 Para determinar la posición actual en el flujo existe el método tellg.
35
Directos
 Condiciones para que un archivo sea de organización directa:
 Almacenamiento en un soporte direccionable.
 •Cada registro debe contener un campo clave.
 •Debe haber correspondencia entre los posibles valores de la clave y las
direcciones existentes en el soporte.
36
Directos
 DIRECCIÓN ABSOLUTA O RELATIVA
 •Es un soporte direccionable, cada posición se realiza por su dirección
absoluta, número de pista y número de sector de disco. Los archivos
directos manipulan direcciones relativas en lugar de absolutas esto hará al
programa independiente de la posición absoluta del archivo en el soporte.
37
Directos
 Características
 oRegistros de longitud fija
 oAcceso directo a los registros
 oAccede a los registros por medio de direcciones
 oUso de soporte direccionable.
38
Directos
 Ventajas
 oLos archivos pueden insertarse sin destruir otros datos del archivo.
 oPara consultar un registro en específico no es necesario accesar a todos
 oTiempo de acceso optimo
 oLos registros pueden actualizarse o eliminarse sin necesidad de reescribir
el archivo completo
 (
39
Introducción
 Desventajas
 oLos datos pueden ser borrados o sobrescritos accidentalmente al menos
que se tomen precauciones especiales
 oRiesgo de pérdida de precisión y violación de seguridad
 oUso menos eficiente de espacio de almacenamiento
 oActualizar el archivo es más difícil que método secuencial

40
Introducción
 Operaciones
 oCrear archivos
 oConsultar registros
 oLecturas de registros
 oActualización
 oReorganización
 oBorrado
PARA POSICIONARME EN UN ARCHIVO DIRECTO EN EL REGISTRO N
<Fstream> .seekg((N-1)* sizeof(mPersona) )
PARA LEER
<Fstream>.read((char *) & <Vble En La que se Lee>, sizeof(<Vble En La que se Lee>))
PARA ESCRIBIR
<Fstream>.write((char *) & <Vble En La que se Lee>, sizeof(<Vble En La que se Lee>))

Contenu connexe

Tendances

Tendances (20)

C# Constructors
C# ConstructorsC# Constructors
C# Constructors
 
Class and object
Class and objectClass and object
Class and object
 
Pointer in c++ part1
Pointer in c++ part1Pointer in c++ part1
Pointer in c++ part1
 
Inheritance
InheritanceInheritance
Inheritance
 
Data members and member functions
Data members and member functionsData members and member functions
Data members and member functions
 
L21 io streams
L21 io streamsL21 io streams
L21 io streams
 
Stream classes in C++
Stream classes in C++Stream classes in C++
Stream classes in C++
 
Files in c++
Files in c++Files in c++
Files in c++
 
Operator overloading C++
Operator overloading C++Operator overloading C++
Operator overloading C++
 
Pointer to array and structure
Pointer to array and structurePointer to array and structure
Pointer to array and structure
 
I/O Streams
I/O StreamsI/O Streams
I/O Streams
 
String Manipulation in Python
String Manipulation in PythonString Manipulation in Python
String Manipulation in Python
 
Constructor and Destructor
Constructor and DestructorConstructor and Destructor
Constructor and Destructor
 
Constructor in java
Constructor in javaConstructor in java
Constructor in java
 
Constructors and destructors
Constructors and destructorsConstructors and destructors
Constructors and destructors
 
Python Introdução e Orientação a Objetos.pdf
Python Introdução e Orientação a Objetos.pdfPython Introdução e Orientação a Objetos.pdf
Python Introdução e Orientação a Objetos.pdf
 
String classes and its methods.20
String classes and its methods.20String classes and its methods.20
String classes and its methods.20
 
Function
FunctionFunction
Function
 
classes and objects in C++
classes and objects in C++classes and objects in C++
classes and objects in C++
 
Function overloading ppt
Function overloading pptFunction overloading ppt
Function overloading ppt
 

Similaire à 2-Archivos.ppt (20)

Archivos en C++
Archivos en C++Archivos en C++
Archivos en C++
 
Grupo nro4ficheros
Grupo nro4ficherosGrupo nro4ficheros
Grupo nro4ficheros
 
Fichero c y c++
Fichero c y c++Fichero c y c++
Fichero c y c++
 
11 archivos guia numero 4
11 archivos guia numero 411 archivos guia numero 4
11 archivos guia numero 4
 
Archivos
ArchivosArchivos
Archivos
 
Archivos de datos en C
Archivos de datos en CArchivos de datos en C
Archivos de datos en C
 
PERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSPERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOS
 
Archivos en c clase unsam
Archivos en c clase unsamArchivos en c clase unsam
Archivos en c clase unsam
 
Objetivo 01 Archivos de Texto
Objetivo 01 Archivos de TextoObjetivo 01 Archivos de Texto
Objetivo 01 Archivos de Texto
 
Manejo de archivos en c++
Manejo de archivos en c++Manejo de archivos en c++
Manejo de archivos en c++
 
S5 - Manejo de Archivos y BDD
S5 - Manejo de Archivos y BDDS5 - Manejo de Archivos y BDD
S5 - Manejo de Archivos y BDD
 
Diapositiva programacion archivos.pptx
Diapositiva programacion archivos.pptxDiapositiva programacion archivos.pptx
Diapositiva programacion archivos.pptx
 
Manejo_de_archivos_C
Manejo_de_archivos_CManejo_de_archivos_C
Manejo_de_archivos_C
 
Archivos.pdf
Archivos.pdfArchivos.pdf
Archivos.pdf
 
S5-PD1.pptx
S5-PD1.pptxS5-PD1.pptx
S5-PD1.pptx
 
S5-PD1-3.1 Manejo de Archivos
S5-PD1-3.1 Manejo de ArchivosS5-PD1-3.1 Manejo de Archivos
S5-PD1-3.1 Manejo de Archivos
 
Flujos y archivo en java
Flujos y archivo en javaFlujos y archivo en java
Flujos y archivo en java
 
Tarea pagweb
Tarea pagwebTarea pagweb
Tarea pagweb
 
Controladora de perifericos indice
Controladora de perifericos indiceControladora de perifericos indice
Controladora de perifericos indice
 
Manejo_archivos.ppt
Manejo_archivos.pptManejo_archivos.ppt
Manejo_archivos.ppt
 

Dernier

CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfwduranteg
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processbarom
 
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTOPRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTOwillanpedrazaperez
 
Presentación de Redes de alcantarillado y agua potable
Presentación de Redes de alcantarillado y agua potablePresentación de Redes de alcantarillado y agua potable
Presentación de Redes de alcantarillado y agua potableFabricioMogroMantill
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATevercoyla
 
2e38892c-fc5d-490e-b751-ce772cf4756f.pdf
2e38892c-fc5d-490e-b751-ce772cf4756f.pdf2e38892c-fc5d-490e-b751-ce772cf4756f.pdf
2e38892c-fc5d-490e-b751-ce772cf4756f.pdfLuisFernandoTQ
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheElisaLen4
 
Presentacion de la ganaderia en la región
Presentacion de la ganaderia en la regiónPresentacion de la ganaderia en la región
Presentacion de la ganaderia en la regiónmaz12629
 
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...GuillermoRodriguez239462
 
CI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdf
CI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdfCI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdf
CI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdfsarm0803
 
FUNCION DE ESTADO EN LA TERMODINAMICA.pdf
FUNCION DE ESTADO EN LA TERMODINAMICA.pdfFUNCION DE ESTADO EN LA TERMODINAMICA.pdf
FUNCION DE ESTADO EN LA TERMODINAMICA.pdfalfredoivan1
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEduardoBriones22
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDEdith Puclla
 
UC Fundamentos de tuberías en equipos de refrigeración m.pdf
UC Fundamentos de tuberías en equipos de refrigeración m.pdfUC Fundamentos de tuberías en equipos de refrigeración m.pdf
UC Fundamentos de tuberías en equipos de refrigeración m.pdfrefrielectriccarlyz
 
SESION 02-DENSIDAD DE POBLACION Y DEMANDA DE AGUA (19-03-2024).pdf
SESION 02-DENSIDAD DE POBLACION Y DEMANDA DE AGUA (19-03-2024).pdfSESION 02-DENSIDAD DE POBLACION Y DEMANDA DE AGUA (19-03-2024).pdf
SESION 02-DENSIDAD DE POBLACION Y DEMANDA DE AGUA (19-03-2024).pdfJorgeFuertes8
 
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptxEFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptxfranklingerardoloma
 
Análisis de Costos y Presupuestos CAPECO
Análisis de Costos y Presupuestos CAPECOAnálisis de Costos y Presupuestos CAPECO
Análisis de Costos y Presupuestos CAPECOFernando Bravo
 
NTC 3883 análisis sensorial. metodología. prueba duo-trio.pdf
NTC 3883 análisis sensorial. metodología. prueba duo-trio.pdfNTC 3883 análisis sensorial. metodología. prueba duo-trio.pdf
NTC 3883 análisis sensorial. metodología. prueba duo-trio.pdfELIZABETHCRUZVALENCI
 
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdfsmendozap1
 

Dernier (20)

CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo process
 
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTOPRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
 
Presentación de Redes de alcantarillado y agua potable
Presentación de Redes de alcantarillado y agua potablePresentación de Redes de alcantarillado y agua potable
Presentación de Redes de alcantarillado y agua potable
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
 
2e38892c-fc5d-490e-b751-ce772cf4756f.pdf
2e38892c-fc5d-490e-b751-ce772cf4756f.pdf2e38892c-fc5d-490e-b751-ce772cf4756f.pdf
2e38892c-fc5d-490e-b751-ce772cf4756f.pdf
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
 
Presentacion de la ganaderia en la región
Presentacion de la ganaderia en la regiónPresentacion de la ganaderia en la región
Presentacion de la ganaderia en la región
 
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
 
CI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdf
CI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdfCI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdf
CI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdf
 
FUNCION DE ESTADO EN LA TERMODINAMICA.pdf
FUNCION DE ESTADO EN LA TERMODINAMICA.pdfFUNCION DE ESTADO EN LA TERMODINAMICA.pdf
FUNCION DE ESTADO EN LA TERMODINAMICA.pdf
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCD
 
UC Fundamentos de tuberías en equipos de refrigeración m.pdf
UC Fundamentos de tuberías en equipos de refrigeración m.pdfUC Fundamentos de tuberías en equipos de refrigeración m.pdf
UC Fundamentos de tuberías en equipos de refrigeración m.pdf
 
SESION 02-DENSIDAD DE POBLACION Y DEMANDA DE AGUA (19-03-2024).pdf
SESION 02-DENSIDAD DE POBLACION Y DEMANDA DE AGUA (19-03-2024).pdfSESION 02-DENSIDAD DE POBLACION Y DEMANDA DE AGUA (19-03-2024).pdf
SESION 02-DENSIDAD DE POBLACION Y DEMANDA DE AGUA (19-03-2024).pdf
 
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptxEFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
 
422382393-Curso-de-Tableros-Electricos.pptx
422382393-Curso-de-Tableros-Electricos.pptx422382393-Curso-de-Tableros-Electricos.pptx
422382393-Curso-de-Tableros-Electricos.pptx
 
Análisis de Costos y Presupuestos CAPECO
Análisis de Costos y Presupuestos CAPECOAnálisis de Costos y Presupuestos CAPECO
Análisis de Costos y Presupuestos CAPECO
 
NTC 3883 análisis sensorial. metodología. prueba duo-trio.pdf
NTC 3883 análisis sensorial. metodología. prueba duo-trio.pdfNTC 3883 análisis sensorial. metodología. prueba duo-trio.pdf
NTC 3883 análisis sensorial. metodología. prueba duo-trio.pdf
 
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
 

2-Archivos.ppt

  • 1. ARCHIVOS Conceptos. Conceptos basicos Manejo en C++ Secuenciales De acceso directo
  • 2. 2 Introducción  Ya aprendieron a manejar gran cantidad de datos del mismo y diferente tipo al mismo tiempo.  El problema es que el programa retiene los datos mientras esté ejecutándose y se pierden al terminar la ejecución.  La solución para hacer que los datos no se pierdan es almacenarlos en un archivo.  Los archivos son medios que facilita el lenguaje para almacenar los datos en forma permanente, normalmente en los dispositivos de almacenamiento externo.
  • 3. 3 Introducción  Desde el punto de vista informático, un archivo es una colección de información que almacenamos en un soporte permanente para poder manipularla en cualquier momento.  Esta información se almacena como un conjunto de registros.
  • 4. Archivos de datos  Area localizada en una unidad secundaria de almacenamiento que se utiliza para guardar los datos que se utilizarán en un programa. Programa en C++ Input data file Output data file
  • 5. 5 Introducción  En C++, se utilizan streams (flujos) para gestionar la lectura y escritura de datos. Ya conocemos dos flujos estándar: cin y cout.  En definitiva, abrir un fichero significa definir un stream. Dicho stream permite la transferencia de datos entre el programa  El buffer es un área de memoria situada en la RAM asignada al programa que abre el archivo y el fichero en disco.
  • 6. 6 Introducción  Flujos o streams  • Un flujo o stream permite comunicar información entre un  origen y un destino.  – El propio programa C++ es uno de los extremos de un flujo (el destino  o el origen de la información)  – El otro extremo del flujo puede ser un dispositivo físico (teclado,  pantalla, etc.) o un fichero o archivo almacenado en un dispositivo  físico de almacenamiento.
  • 7. 7 Introducción  Ficheros o archivos de datos  • Un fichero o archivo almacena una secuencia de datos:  – < d1, d2, d3, ... , dK‐1, dK >  • Los datos de un fichero o archivo son persistentes:  – Persistencia: capacidad de que los datos sobrevivan a la ejecución del  programa y puedan ser utilizados (leídos) posteriormente  • La capacidad de un fichero o archivo no está limitada a priori:  – Los ficheros o archivos almacenan secuencias de datos de longitud  no limitada a priori (el límite lo impondrá la capacidad física del  dispositivo que lo almacene)
  • 8. 8 Introducción  Manipulación de Ficheros  Toda transferencia de datos entre el programa y el fichero en disco se realiza a través del buffer. El buffer está para dar eficiencia.  Las operaciones de E/S son más eficientes:  El acceso a la memoria RAM consume menos tiempo que el acceso a un dispositivo físico.  El buffer hace que el número de accesos al fichero físico sea menor.  El uso del buffer permite realizar operaciones de entrada salida de forma más eficiente.
  • 9. 9 Introducción  Organización de archivos  Archivos de acceso secuencial: los datos se almacenan de forma consecutiva y no es posible leer un registro directamente, es decir para leer el registro n hay que leer los n-1 registros anteriores.  Archivos de acceso aleatorio: se puede acceder a un registro concreto sin necesidad de leer todos los anteriores.  Tipo de almacenamiento en Archivos  Archivos de texto: Los datos se almacenan usando código ASCII y por tanto, pueden ser procesados por cualquier editor de texto.  Archivos binarios: Los datos se almacenan en binario.
  • 10. 10 Archivos en C++  Biblioteca de flujos  Para poder manipular archivos, C++ dispone de la biblioteca estándar 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>  Operaciones asociadas a archivos  – Abrir fichero  – Cerrar fichero  – Lectura y escritura  – Funciones de control
  • 11. 11 Archivos en C++  Biblioteca de flujos  Para poder manipular archivos, C++ dispone de la biblioteca estándar 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>  Operaciones asociadas a archivos  – Abrir fichero  – Cerrar fichero  – Lectura y escritura  – Funciones de control
  • 12.  ARCHIVOS Y FLUJOS  En C++, un stream es un flujo de datos de una fuente a un destino. Las fuentes y los destinos pueden ser cualquiera de los dispositivos o archivos de entrada/salida.  Para la entrada y la salida, hay dos flujos diferentes llamados flujo de entrada y flujo de salida.  flujo de entrada estándar cin  flujo de salida estándar cout  la entrada y la salida estándar son el teclado y la pantalla del monitor, respectivamente.
  • 13. 13 Introducción  Los flujos sobre archivos en disco vienen representados por las clases ifstream, ofstreamy fstream, con las que es posible leer de un archivo, escribir en un archivo o leer y escribir, respectivamente.  Estas clases heredan de fstreambasemétodos como openy close, para abrir y cerrar la conexión con el archivo, y de las clases istreamy ostreamlos operadores y métodos necesarios para escribir o leer.  El constructor de estas clases acepta como argumento la ruta del archivo a abrir y, opcionalmente, unos indicadores de modo de apertura.
  • 14. La manipulación de archivos en C++ es un proceso de cinco pasos: 1. Incluir el header file fstream en el programa 2. Declarar las variables de tipo file stream 3. Asociar las variables con las fuentes de input/output 4. Utilizar las variables con >>, << u otras funciones de i/o 5. Cerrar los archivos.
  • 15. 15 Archivos en C++  Apertura de archivos  Al igual que los flujos cin y cout, los flujos de E/S solo pueden transferir datos en una dirección, esto significa que se tienen que definir flujos diferentes para lectura y escritura de datos.  Abrir el archivo para lectura o entrada  Abrir un archivo para entrada, es definir un flujo de archivo de entrada.
  • 16. 16 Archivos en C++  Supongamos que queremos abrir un archivo que se llama misdatos.txt que se encuentra en la unidad de disco a:  Hemos definido el flujo de entrada Entrada.  #include <fstream.h>  ….  ifstream Entrada (“a:misdatos.txt”);  …  ...
  • 17.
  • 18.
  • 19.
  • 20. 20 Archivos en C++  ifstream: It is the input file stream class. Its member function open( ) associates the stream with a specified file in an input mode.  In addition to open(), ifstreamclass inherits the following functions from istreamclass.  (i) get( ) (ii) getline( ) (iii) read( ) (iv) seekg( ) (iv) tellg( )  ofstream: It is the output file stream class. Its member function open( ) associates the stream with a specified file in an output mode.  In addition to open(), ofstreaminherits the following functions from ostreamclass  (i) put( ) (ii) write( ) (iii) seekp( ), (iv) tellp( )
  • 21. 21 Archivos en C++  fstream: It supports files for simultaneous input and output. It is derived from ifstream, ofstreamand iostreamclasses.  The functions associated with this stream are :  1. open : This associates the stream with a specified file.  2. close : It closes the stream.  3. close all : It closes all the opened streams  4. seekg: Sets current `get' position in a stream  5. seekp: Sets current `put' position in a stream  6. tellg: Returns the current `get' position in a stream  7. tellp: Returns the current `put' position in a stream.
  • 22. Ejemplo: Algoritmo 1. Declarar las variables 2. Abrir el archivo de input 3. Abrir el archivo de output 4. Utilizar los manipuladores de output 5. Leer el nombre del estudiante del archivo 6. Escribir en el archivo de output el nombre del estudiante 7. Leer los scores de las cinco notas 8. Escribir los scores en el archivo de output 9. Calcular el promedio 10. Escribir el promedio en el archivo de output 11. Cerrar los archivos
  • 23.
  • 24. 24 Introducción  Funciones de la clase ifstream que van a ser utilizadas:  • f.open(const char nombreFichero[]) asocia el fichero al flujo <f>  • f.is_open() devuelve true si y solo si el flujo <f> está asociado a un fichero  • f.get() lee o extrae el siguiente carácter del flujo <f> y lo devuelve  • f.eof() devuelve true si y solo si la última operación de lectura no pudo  completarse por no haber ya datos pendientes de lectura en el flujo <f>  • f.close() libera el fichero asociado al flujo <f> y lo disocia de éste
  • 25. 25 Introducción  Escritura de datos en un fichero  Funciones de la clase ofstream que van a ser utilizadas:  • f.open(const char nombreFichero[]) asocia el fichero al flujo f  • f.is_open() devuelve true si y solo si el flujo f está asociado a un fichero  • f.put(char c) inserta en el flujo f el carácter c
  • 28. Ejemplo: Programa en C++ donde se capturan datos desde un archivo, se procesan, y luego se escriben en un archivo de salida #include<iostream> // para utilizar cin cout endl #include<fstream> //para utilizar tipos de datos ifstream y ofstream #include<iomanip> // para los manipuladores de output #include<string> // para poder utilizar variables del tipo “string” en el programa
  • 29. Ejemplo: Programa en C++ donde se capturan datos desde un archivo, se procesan, y luego se escriben en un archivo de salida using namespace std; int main() { // Paso #1 // Se declaran las variables a utilizar ifstream inFile; //input file stream variable ofstream outFile; //output file stream variable double test1, test2, test3, test4, test5; double average; string firstName; string lastName;
  • 30. Ejemplo: Programa en C++ donde se capturan datos desde un archivo, se procesan, y luego se escriben en un archivo de salida inFile.open("test.txt"); // Paso #2 outFile.open("testavg.out"); // Paso #3 outFile << fixed << showpoint; // Paso #4 outFile << setprecision(2); cout<< "Processing data" << endl; inFile >> firstName >> lastName; // Paso #5 outFile << "Student Name: " << firstName << " " << lastName << endl; // Paso #6
  • 31. Ejemplo: Programa en C++ donde se capturan datos desde un archivo, se procesan, y luego se escriben en un archivo de salida inFile >> test1 >> test2 >> test3 >> test4 >> test5; // Paso #7 outFile << "Test scores: " << setw(6) << test1 << setw(6) << test2 << setw(6) << test3 << setw(6) << test4 << setw(6) << test5 << endl; // Paso #8 average = (test1 + test2 + test3 + test4 + test5) / 5.0; // Paso #9 outFile << "average test score: " << setw(6) << average << endl; // Paso #10 inFile.close(); // Paso #11 outFile.close(); return 0; }
  • 32. 32 Archivos en C++  ASPECTOS GENERALES SOBRE E/S  Los operadores de inserción y extracción, << y >> respectivamente, están sobrecargados para todos los tipos de datos intrínsecos, sin importar el tipo de streamsobre el que se trabaja.
  • 33. 33 Introducción  Todos las clases derivadas de ios heredan una serie de indicadores de estado que nos permiten saber cómo ha quedado el streamtras la última operación:  good(): Devuelve un valor distinto de 0 si no se ha producido ningún error.  eof(): Devuelve un valor distinto de 0 si se ha llegado al fin de archivo.  bad(): Devuelve un valor distinto de 0 si el streamha quedado inservible.  fail(): Devuelve un valor distinto de 0 si la última operación ha fallado.  El operador ! está sobrecargado, de forma que es posible comprobar si un streamm puede seguir utilizándose o no mediante una expresión del tipo if(!strEntrada) hayFallo();
  • 34. 34 Directos  En los flujos que lo permitan, es posible desplazar el puntero de lectura/escritura con el método seekg, facilitando un desplazamiento y una de las tres constantes siguientes:  ios::beg: El desplazamiento será absoluto.  ios::cur: El desplazamiento será relativo respecto a la posición actual.  ios::end: El desplazamiento será relativo respecto al fin de archivo.  Para determinar la posición actual en el flujo existe el método tellg.
  • 35. 35 Directos  Condiciones para que un archivo sea de organización directa:  Almacenamiento en un soporte direccionable.  •Cada registro debe contener un campo clave.  •Debe haber correspondencia entre los posibles valores de la clave y las direcciones existentes en el soporte.
  • 36. 36 Directos  DIRECCIÓN ABSOLUTA O RELATIVA  •Es un soporte direccionable, cada posición se realiza por su dirección absoluta, número de pista y número de sector de disco. Los archivos directos manipulan direcciones relativas en lugar de absolutas esto hará al programa independiente de la posición absoluta del archivo en el soporte.
  • 37. 37 Directos  Características  oRegistros de longitud fija  oAcceso directo a los registros  oAccede a los registros por medio de direcciones  oUso de soporte direccionable.
  • 38. 38 Directos  Ventajas  oLos archivos pueden insertarse sin destruir otros datos del archivo.  oPara consultar un registro en específico no es necesario accesar a todos  oTiempo de acceso optimo  oLos registros pueden actualizarse o eliminarse sin necesidad de reescribir el archivo completo  (
  • 39. 39 Introducción  Desventajas  oLos datos pueden ser borrados o sobrescritos accidentalmente al menos que se tomen precauciones especiales  oRiesgo de pérdida de precisión y violación de seguridad  oUso menos eficiente de espacio de almacenamiento  oActualizar el archivo es más difícil que método secuencial 
  • 40. 40 Introducción  Operaciones  oCrear archivos  oConsultar registros  oLecturas de registros  oActualización  oReorganización  oBorrado
  • 41. PARA POSICIONARME EN UN ARCHIVO DIRECTO EN EL REGISTRO N <Fstream> .seekg((N-1)* sizeof(mPersona) ) PARA LEER <Fstream>.read((char *) & <Vble En La que se Lee>, sizeof(<Vble En La que se Lee>)) PARA ESCRIBIR <Fstream>.write((char *) & <Vble En La que se Lee>, sizeof(<Vble En La que se Lee>))