SlideShare una empresa de Scribd logo
1 de 26
Universidad Mariano Gálvez de Guatemala
Manipulación de Archivos con C++
Ing. Eddy Ronaldo Alvarez
¿Cómo surge la necesidad de utilizar archivos?
Hasta antes de esta clase, muchas de las aplicaciones que los
alumnos han programado han sido usando la memoria principal
o memoria RAM como único medio de almacenamiento (usando
variables, arreglos o estructuras de datos mas complejas), con el
inconveniente que esto representa: la volatilidad de la memoria
RAM; es decir, si se apaga la computadora se pierden los datos.
Además, algunas aplicaciones exigen transportar los datos de una
computadora a otra. De ahí surge la necesidad de almacenar
dichos datos de forma permanente que permita retenerlos en
ciertos dispositivos de almacenamiento secundario por un
período de tiempo largo sin necesidad de suministrarles energía,
de tal forma que permitan transportarlos y utilizarlos en otro
equipo computacional.
Apertura de archivos
Antes de escribir o leer datos de un archivo es necesario abrirlo.
Al abrir el archivo se establece comunicación entre el programa y
el sistema operativo a cerca de cómo accesarlo. Es necesario que
el programa le proporcione al sistema operativo el nombre
completo del archivo y la intención de uso (leer o escribir datos),
entonces se definen áreas de comunicación entre ellos. Una de
estas áreas es una estructura que controla el archivo (alias del
archivo), de esta forma cuando se solicita una operación del
archivo, se recibe una respuesta que informa el resultado
mediante un apuntador. Cada archivo abierto requiere un alias
para poder realizar operaciones en él.
La estructura del archivo contiene información del archivo que se
está usando, así como el tamaño actual y la localización de los
buffers de datos.
Clasificación de archivos por tipo de contenido
Texto
Clasificación de archivos por contenido
Binarios
Archivos de texto
Son aquellos que pueden contener cualquier clase de datos y de
tal manera que son “entendibles” por la gente. En este tipo de
archivos, todos sus datos se almacenan como cadenas de
caracteres, es decir, los números se almacenan con su
representación ASCII y no su representación numérica, por lo
tanto no se pueden realizar operaciones matemáticas
directamente con ellos.
Archivos binarios
Este tipo de archivos almacenan los datos numéricos con su
representación binaria. Pueden ser archivos que contienen
instrucciones en lenguaje máquina listas para ser ejecutadas.
Clasificación de archivos por tipo de acceso
Secuenciales
Clasificación de archivos por acceso
Directos
Archivos Secuenciales
Como su nombre lo indica, en este tipo de archivos los registros
se graban en secuencia o consecutivamente y deben accesarse
de ese mismo modo, es decir, conforme se van insertando
nuevos registros, éstos se almacenan al final del último registro
almacenado.
Archivos Directos
En los archivos directos no es necesario recorrerlo
completamente para acceder un registro, sino se puede colocar
el apuntador interno del archivo directamente en el registro.
Cabe destacar que para reposicionar este apuntador se utiliza el
comando SEEK indicándole la dirección del registro que se desea.
Direcciones lógicas y direcciones físicas
El lenguaje C++ utiliza direcciones físicas para los archivos, esto
es, que el direccionamiento consiste en el espacio ocupado por
los datos en el archivo (calculado en bytes) no en el renglón al
que se asignó dicho registro. P. ejem. Suponga que tiene un
archivo llamado “PRODUCTO.SEC” que almacena registros con el
formato de un registro. Dicho registro tiene cinco campos, cada
uno con un tipo de dato determinado, un tamaño específico y
que al sumarlos se obtiene el espacio ocupado por cada registro
con este formato.
Cálculo de direcciones físicas
Para poder reposicionar el apuntador de un archivo en un
registro específico es necesario calcular su dirección física
correspondiente de acuerdo al espacio ocupado por sus registros
predecesores.
Cálculo de direcciones físicas
De esta forma, para convertir direcciones lógicas en direcciones
físicas se utiliza la fórmula mostrada en la figura.
FUNCIONES DE MANEJO DE ARCHIVOS EN LENGUAJE C++
Esta sección presenta los aspectos generales de la
implementación de programas de archivos en Lenguaje C++.
Aunque se puede almacenar cualquier tipo de datos en archivos,
aquí se muestran las operaciones del manejo de registros (struct)
en archivos, por lo que las funciones que se mencionan a
continuación son las mas importantes para este tipo de datos.
Declaración del alias del archivo
Para realizar programas de manejo de archivos en Lenguaje C++
se requiere el encabezado “Standard I/O” y se necesita incluirlo
de la sig. forma:
#include <stdio.h>
además es necesario declarar una variable de tipo FILE que opere
como el apuntador a la estructura del archivo (alias), esto se
logra con la sig. línea:
FILE *alias;
La función fopen() y modos de apertura de archivos
Se usa la función fopen para abrir un archivo, determinar el
modo de apertura y establecer la vía de comunicación mediante
su alias correspondiente. Además determinar el tipo de
contenido del archivo (texto o binario). Esta función tiene dos
argumentos: el nombre del archivo y su modo (ver diapositiva
que sigue a la tabla de modos de apertura). La siguiente tabla
muestra los modos de apertura de archivos de texto y binarios.
Validar la apertura de un archivo
Algunas funciones requieren la existencia del archivo para realizar
operaciones, por ello es necesario verificar que cuando se intenta
abrir un archivo haya tenido éxito la operación. Si un archivo no se
puede abrir, la función fopen devuelve el valor de 0 (cero),
definido como NULL en stdio.h. La siguiente figura muestra un
ejemplo de la manera de detectar la apertura de un archivo.
Cierre de archivos usando fclose() y fcloseall()
Antes de dejar de utilizar un archivo es necesario cerrarlo. Esto se
logra mediante las funciones fclose o fcloseall. Si se usa fclose es
necesario indicarle el alias del archivo que se desea cerrar. La
función fcloseall cierra todos los archivos abiertos.
Escritura de registros usando fwrite()
La función fwrite proporciona el mecanismo para almacenar todos
los campos de un registro en un archivo. Cabe destacar que al
utilizar esta función, se almacena una variable (de tipo struct) que
representa un bloque de datos o campos; es decir, no se almacena
campo por campo. Esta función tiene cuatro argumentos: la
variable que se desea grabar, su tamaño en bytes, la cantidad de
variables y el alias del archivo donde se desea almacenar (ver
siguiente diapositiva).
Lectura de registros usando fread()
La función fread permite “cargar” todos los campos de un registro
en un archivo, es decir, lee un registro y lo copia en la memoria
RAM . Esta función tiene los mismos argumentos que la función
fwrite.
Reposicionando el apuntador mediante fseek()
Para comprender la operación de esta función es necesario estar
relacionado con el apuntador del archivo, el cual indica la posición
dentro del archivo. Cuando se abre un archivo en modo de sólo
lectura, sólo escritura o lectura/escritura, el apuntador del archivo
se posiciona al inicio del mismo y cuando un archivo se abre en
modo agregar se posiciona al final, sin embargo, se puede
reposicionar este apuntador del archivo mediante la función fseek.
También es importante mencionar que cada vez que se realiza una
operación de lectura o de escritura de cualquier tipo de datos
(caracter, cadena, estructura, etc.), el apuntador del archivo se
mueve al final de dicho dato, de tal forma que está posicionado en
el siguiente, por lo que es muy importante asegurarse que se
encuentre en la posición deseada antes de realizar cualquier
operación.
Los archivos en lenguaje C++ son controlados por direcciones
físicas (no lógicas) indicadas en bytes y la función fseek permite
reposicionar el apuntador del archivo en la dirección física deseada
mediante tres argumentos: el alias del archivo, la dirección física
(en bytes) y el punto de referencia. Para poder reposicionar el
apuntador del archivo es necesario que éste se encuentre abierto y
se le haya asignado el alias correspondiente, también es necesario
calcular la dirección física donde se desea colocar e indicarle el
punto de referencia de donde se partirá en el conteo de la cantidad
de bytes indicado por la dirección física, los cuales pueden ser
desde el principio, desde donde se encuentre el apuntador del
archivo y desde el final.
Puntos de referencia de la función fseek()
El último argumento de la función fseek es conocido como el punto
de referencia o el modo y se refiere desde dónde se iniciará el
conteo de bytes determinado por la dirección física
Conociendo la posición del apuntador del archivo con la función
ftell()
Se usa la función ftell para conocer la posición actual del
apuntador de un archivo abierto. La posición se expresa en bytes
(dirección física) contados desde el principio del archivo.
Colocando el apuntador del archivo al principio con la función
rewind()
Se usa la función rewind para colocar el apuntador del archivo al
principio de un archivo abierto sin necesidad de usar la función
fseek. Basta con enviar el alias del archivo como argumento
Detectando el final del archivo con feof()
Se usa feof() para determinar si se ha encontrado el final de un
archivo. Si se encuentra el final de un archivo, devuelve un valor
diferente de cero y cero en caso contrario. Para invocarlo es necesario
colocar el alias del archivo abierto como argumento.
Cambiando nombres de archivos mediante rename()
Esta función tiene como objetivo cambiar el nombre de un archivo
por su ruta de acceso. Sólo necesita dos argumentos: el nombre
anterior del archivo y el nuevo nombre. Es importante destacar que
esta función sólo puede aplicarse a archivos cerrados.
Eliminando archivos con la función remove()
La función remove elimina definitivamente un archivo
especificando su nombre. Es importante destacar que esta función
sólo puede aplicarse a archivos cerrados.
Actividad en clase
En base a lo descrito anteriormente realice un programa que haga
lo siguiente con un archivo:
• Creación del archivo con la estructura siguiente:
• Nombre vendedor (30 espacios)
• Venta Semana 1 (4 espacios)
• Venta semana 2 (4 espacios)
• Venta semana 3 (4 espacios)
• Venta semana 4 (4 espacios)
• Inserción de datos en el archivo
• Reporte en pantalla con los datos del archivo.

Más contenido relacionado

La actualidad más candente

Conversión de un AFN a un AFD.
Conversión de un AFN a un AFD.Conversión de un AFN a un AFD.
Conversión de un AFN a un AFD.Vikky Moscoso
 
Archivo secuencial indexado
Archivo secuencial indexadoArchivo secuencial indexado
Archivo secuencial indexadolesster ostorga
 
conceptos de Punteros y Nodos
conceptos de Punteros y Nodosconceptos de Punteros y Nodos
conceptos de Punteros y NodosBoris Salleg
 
Unidad 3 el administrador de memoria
Unidad 3 el administrador de memoriaUnidad 3 el administrador de memoria
Unidad 3 el administrador de memoriacoffeejimenez
 
Diccionario de base de datos
Diccionario de base de datosDiccionario de base de datos
Diccionario de base de datosalexis armas
 
ESPRESIONES REGULARES
ESPRESIONES REGULARESESPRESIONES REGULARES
ESPRESIONES REGULARESAnel Sosa
 
Procesos concurrencia
Procesos  concurrenciaProcesos  concurrencia
Procesos concurrenciapuracastillo
 
ED Unidad 4: Estructuras de datos no lineales (árboles)
ED Unidad 4: Estructuras de datos no lineales (árboles)ED Unidad 4: Estructuras de datos no lineales (árboles)
ED Unidad 4: Estructuras de datos no lineales (árboles)Franklin Parrales Bravo
 
Equipo 6 programacion hibrida
Equipo 6 programacion hibridaEquipo 6 programacion hibrida
Equipo 6 programacion hibridagabo
 
Archivos secuenciales-indexados C++
Archivos secuenciales-indexados C++Archivos secuenciales-indexados C++
Archivos secuenciales-indexados C++EdsonRc
 

La actualidad más candente (20)

Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Algoritmos de Ordenamiento Externo.
Algoritmos de Ordenamiento Externo.Algoritmos de Ordenamiento Externo.
Algoritmos de Ordenamiento Externo.
 
Conversión de un AFN a un AFD.
Conversión de un AFN a un AFD.Conversión de un AFN a un AFD.
Conversión de un AFN a un AFD.
 
Manejo de memoria
Manejo de memoriaManejo de memoria
Manejo de memoria
 
funcion de archivo secuencial
funcion de archivo secuencial funcion de archivo secuencial
funcion de archivo secuencial
 
Cuestionario 2
Cuestionario 2Cuestionario 2
Cuestionario 2
 
Archivo secuencial indexado
Archivo secuencial indexadoArchivo secuencial indexado
Archivo secuencial indexado
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
conceptos de Punteros y Nodos
conceptos de Punteros y Nodosconceptos de Punteros y Nodos
conceptos de Punteros y Nodos
 
Unidad 3 el administrador de memoria
Unidad 3 el administrador de memoriaUnidad 3 el administrador de memoria
Unidad 3 el administrador de memoria
 
Diccionario de base de datos
Diccionario de base de datosDiccionario de base de datos
Diccionario de base de datos
 
ESPRESIONES REGULARES
ESPRESIONES REGULARESESPRESIONES REGULARES
ESPRESIONES REGULARES
 
Procesos concurrencia
Procesos  concurrenciaProcesos  concurrencia
Procesos concurrencia
 
ED Unidad 4: Estructuras de datos no lineales (árboles)
ED Unidad 4: Estructuras de datos no lineales (árboles)ED Unidad 4: Estructuras de datos no lineales (árboles)
ED Unidad 4: Estructuras de datos no lineales (árboles)
 
Automatas de pila
Automatas de pilaAutomatas de pila
Automatas de pila
 
Equipo 6 programacion hibrida
Equipo 6 programacion hibridaEquipo 6 programacion hibrida
Equipo 6 programacion hibrida
 
Lenguaje y automata operaciones con lenguajes
Lenguaje y automata operaciones con lenguajesLenguaje y automata operaciones con lenguajes
Lenguaje y automata operaciones con lenguajes
 
Programacion de Cadenas
Programacion de CadenasProgramacion de Cadenas
Programacion de Cadenas
 
Archivos secuenciales-indexados C++
Archivos secuenciales-indexados C++Archivos secuenciales-indexados C++
Archivos secuenciales-indexados C++
 
Automatas de pila
Automatas de pilaAutomatas de pila
Automatas de pila
 

Similar a Archivos C++

Similar a Archivos C++ (20)

Programación Orientada a Objetos -Unidad 6 archivos
Programación Orientada a Objetos -Unidad 6 archivosProgramación Orientada a Objetos -Unidad 6 archivos
Programación Orientada a Objetos -Unidad 6 archivos
 
Objetivo 01 Archivos de Texto
Objetivo 01 Archivos de TextoObjetivo 01 Archivos de Texto
Objetivo 01 Archivos de Texto
 
Archivos de datos en C
Archivos de datos en CArchivos de datos en C
Archivos de datos en C
 
Metodo File Pascal
Metodo File PascalMetodo File Pascal
Metodo File Pascal
 
Manejo de archivosss
Manejo de archivosssManejo de archivosss
Manejo de archivosss
 
Archivos en c clase unsam
Archivos en c clase unsamArchivos en c clase unsam
Archivos en c clase unsam
 
Manejo dearchivosc
Manejo dearchivoscManejo dearchivosc
Manejo dearchivosc
 
Archivos c
Archivos cArchivos c
Archivos c
 
Archivos c
Archivos cArchivos c
Archivos c
 
Lab archivos
Lab archivosLab archivos
Lab archivos
 
Bryan gordillo ensayo_ficheros
Bryan gordillo ensayo_ficherosBryan gordillo ensayo_ficheros
Bryan gordillo ensayo_ficheros
 
Fichero c y c++
Fichero c y c++Fichero c y c++
Fichero c y c++
 
03. Archivos Completo Obliogatorio Para Imprimir.pdf
03. Archivos Completo Obliogatorio Para Imprimir.pdf03. Archivos Completo Obliogatorio Para Imprimir.pdf
03. Archivos Completo Obliogatorio Para Imprimir.pdf
 
ARCHIVOS DEL LENGUAJE C
ARCHIVOS DEL LENGUAJE CARCHIVOS DEL LENGUAJE C
ARCHIVOS DEL LENGUAJE C
 
Bryan gordillo ensayo_ficheros
Bryan gordillo ensayo_ficherosBryan gordillo ensayo_ficheros
Bryan gordillo ensayo_ficheros
 
PERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSPERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOS
 
Archivos
ArchivosArchivos
Archivos
 
Archivos Secuenciales Indexados
Archivos Secuenciales IndexadosArchivos Secuenciales Indexados
Archivos Secuenciales Indexados
 
Archivo de datos
Archivo de datosArchivo de datos
Archivo de datos
 
Arreglos Turbo C
Arreglos Turbo CArreglos Turbo C
Arreglos Turbo C
 

Último

IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...YobanaZevallosSantil1
 
HISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICAHISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICAJesus Gonzalez Losada
 
Presentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxPresentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxRosabel UA
 
libro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguajelibro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguajeKattyMoran3
 
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfMEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfJosé Hecht
 
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfFichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfssuser50d1252
 
historieta materia de ecologías producto
historieta materia de ecologías productohistorieta materia de ecologías producto
historieta materia de ecologías productommartinezmarquez30
 
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbalPPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbalRosarioChoque3
 
Acuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfAcuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfmiriamguevara21
 
5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectosTrishGutirrez
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docxMagalyDacostaPea
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxNataliaGonzalez619348
 
describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...DavidBautistaFlores1
 
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJODIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJOLeninCariMogrovejo
 
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docxMagalyDacostaPea
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfssuser50d1252
 
Actividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 EducacionActividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 Educacionviviantorres91
 
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...Martin M Flynn
 
LOS AMBIENTALISTAS todo por un mundo mejor
LOS AMBIENTALISTAS todo por un mundo mejorLOS AMBIENTALISTAS todo por un mundo mejor
LOS AMBIENTALISTAS todo por un mundo mejormrcrmnrojasgarcia
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).hebegris04
 

Último (20)

IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
 
HISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICAHISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICA
 
Presentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxPresentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptx
 
libro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguajelibro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguaje
 
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfMEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
 
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfFichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
 
historieta materia de ecologías producto
historieta materia de ecologías productohistorieta materia de ecologías producto
historieta materia de ecologías producto
 
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbalPPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
 
Acuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfAcuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdf
 
5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
 
describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...
 
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJODIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
 
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
 
Actividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 EducacionActividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 Educacion
 
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
 
LOS AMBIENTALISTAS todo por un mundo mejor
LOS AMBIENTALISTAS todo por un mundo mejorLOS AMBIENTALISTAS todo por un mundo mejor
LOS AMBIENTALISTAS todo por un mundo mejor
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
 

Archivos C++

  • 1. Universidad Mariano Gálvez de Guatemala Manipulación de Archivos con C++ Ing. Eddy Ronaldo Alvarez
  • 2. ¿Cómo surge la necesidad de utilizar archivos? Hasta antes de esta clase, muchas de las aplicaciones que los alumnos han programado han sido usando la memoria principal o memoria RAM como único medio de almacenamiento (usando variables, arreglos o estructuras de datos mas complejas), con el inconveniente que esto representa: la volatilidad de la memoria RAM; es decir, si se apaga la computadora se pierden los datos. Además, algunas aplicaciones exigen transportar los datos de una computadora a otra. De ahí surge la necesidad de almacenar dichos datos de forma permanente que permita retenerlos en ciertos dispositivos de almacenamiento secundario por un período de tiempo largo sin necesidad de suministrarles energía, de tal forma que permitan transportarlos y utilizarlos en otro equipo computacional.
  • 3.
  • 4. Apertura de archivos Antes de escribir o leer datos de un archivo es necesario abrirlo. Al abrir el archivo se establece comunicación entre el programa y el sistema operativo a cerca de cómo accesarlo. Es necesario que el programa le proporcione al sistema operativo el nombre completo del archivo y la intención de uso (leer o escribir datos), entonces se definen áreas de comunicación entre ellos. Una de estas áreas es una estructura que controla el archivo (alias del archivo), de esta forma cuando se solicita una operación del archivo, se recibe una respuesta que informa el resultado mediante un apuntador. Cada archivo abierto requiere un alias para poder realizar operaciones en él. La estructura del archivo contiene información del archivo que se está usando, así como el tamaño actual y la localización de los buffers de datos.
  • 5.
  • 6. Clasificación de archivos por tipo de contenido Texto Clasificación de archivos por contenido Binarios Archivos de texto Son aquellos que pueden contener cualquier clase de datos y de tal manera que son “entendibles” por la gente. En este tipo de archivos, todos sus datos se almacenan como cadenas de caracteres, es decir, los números se almacenan con su representación ASCII y no su representación numérica, por lo tanto no se pueden realizar operaciones matemáticas directamente con ellos. Archivos binarios Este tipo de archivos almacenan los datos numéricos con su representación binaria. Pueden ser archivos que contienen instrucciones en lenguaje máquina listas para ser ejecutadas.
  • 7. Clasificación de archivos por tipo de acceso Secuenciales Clasificación de archivos por acceso Directos Archivos Secuenciales Como su nombre lo indica, en este tipo de archivos los registros se graban en secuencia o consecutivamente y deben accesarse de ese mismo modo, es decir, conforme se van insertando nuevos registros, éstos se almacenan al final del último registro almacenado. Archivos Directos En los archivos directos no es necesario recorrerlo completamente para acceder un registro, sino se puede colocar el apuntador interno del archivo directamente en el registro. Cabe destacar que para reposicionar este apuntador se utiliza el comando SEEK indicándole la dirección del registro que se desea.
  • 8. Direcciones lógicas y direcciones físicas El lenguaje C++ utiliza direcciones físicas para los archivos, esto es, que el direccionamiento consiste en el espacio ocupado por los datos en el archivo (calculado en bytes) no en el renglón al que se asignó dicho registro. P. ejem. Suponga que tiene un archivo llamado “PRODUCTO.SEC” que almacena registros con el formato de un registro. Dicho registro tiene cinco campos, cada uno con un tipo de dato determinado, un tamaño específico y que al sumarlos se obtiene el espacio ocupado por cada registro con este formato.
  • 9. Cálculo de direcciones físicas Para poder reposicionar el apuntador de un archivo en un registro específico es necesario calcular su dirección física correspondiente de acuerdo al espacio ocupado por sus registros predecesores.
  • 10. Cálculo de direcciones físicas De esta forma, para convertir direcciones lógicas en direcciones físicas se utiliza la fórmula mostrada en la figura.
  • 11. FUNCIONES DE MANEJO DE ARCHIVOS EN LENGUAJE C++ Esta sección presenta los aspectos generales de la implementación de programas de archivos en Lenguaje C++. Aunque se puede almacenar cualquier tipo de datos en archivos, aquí se muestran las operaciones del manejo de registros (struct) en archivos, por lo que las funciones que se mencionan a continuación son las mas importantes para este tipo de datos. Declaración del alias del archivo Para realizar programas de manejo de archivos en Lenguaje C++ se requiere el encabezado “Standard I/O” y se necesita incluirlo de la sig. forma: #include <stdio.h> además es necesario declarar una variable de tipo FILE que opere como el apuntador a la estructura del archivo (alias), esto se logra con la sig. línea: FILE *alias;
  • 12. La función fopen() y modos de apertura de archivos Se usa la función fopen para abrir un archivo, determinar el modo de apertura y establecer la vía de comunicación mediante su alias correspondiente. Además determinar el tipo de contenido del archivo (texto o binario). Esta función tiene dos argumentos: el nombre del archivo y su modo (ver diapositiva que sigue a la tabla de modos de apertura). La siguiente tabla muestra los modos de apertura de archivos de texto y binarios.
  • 13.
  • 14.
  • 15. Validar la apertura de un archivo Algunas funciones requieren la existencia del archivo para realizar operaciones, por ello es necesario verificar que cuando se intenta abrir un archivo haya tenido éxito la operación. Si un archivo no se puede abrir, la función fopen devuelve el valor de 0 (cero), definido como NULL en stdio.h. La siguiente figura muestra un ejemplo de la manera de detectar la apertura de un archivo.
  • 16. Cierre de archivos usando fclose() y fcloseall() Antes de dejar de utilizar un archivo es necesario cerrarlo. Esto se logra mediante las funciones fclose o fcloseall. Si se usa fclose es necesario indicarle el alias del archivo que se desea cerrar. La función fcloseall cierra todos los archivos abiertos. Escritura de registros usando fwrite() La función fwrite proporciona el mecanismo para almacenar todos los campos de un registro en un archivo. Cabe destacar que al utilizar esta función, se almacena una variable (de tipo struct) que representa un bloque de datos o campos; es decir, no se almacena campo por campo. Esta función tiene cuatro argumentos: la variable que se desea grabar, su tamaño en bytes, la cantidad de variables y el alias del archivo donde se desea almacenar (ver siguiente diapositiva).
  • 17.
  • 18. Lectura de registros usando fread() La función fread permite “cargar” todos los campos de un registro en un archivo, es decir, lee un registro y lo copia en la memoria RAM . Esta función tiene los mismos argumentos que la función fwrite. Reposicionando el apuntador mediante fseek() Para comprender la operación de esta función es necesario estar relacionado con el apuntador del archivo, el cual indica la posición dentro del archivo. Cuando se abre un archivo en modo de sólo lectura, sólo escritura o lectura/escritura, el apuntador del archivo se posiciona al inicio del mismo y cuando un archivo se abre en modo agregar se posiciona al final, sin embargo, se puede reposicionar este apuntador del archivo mediante la función fseek. También es importante mencionar que cada vez que se realiza una operación de lectura o de escritura de cualquier tipo de datos (caracter, cadena, estructura, etc.), el apuntador del archivo se mueve al final de dicho dato, de tal forma que está posicionado en
  • 19. el siguiente, por lo que es muy importante asegurarse que se encuentre en la posición deseada antes de realizar cualquier operación. Los archivos en lenguaje C++ son controlados por direcciones físicas (no lógicas) indicadas en bytes y la función fseek permite reposicionar el apuntador del archivo en la dirección física deseada mediante tres argumentos: el alias del archivo, la dirección física (en bytes) y el punto de referencia. Para poder reposicionar el apuntador del archivo es necesario que éste se encuentre abierto y se le haya asignado el alias correspondiente, también es necesario calcular la dirección física donde se desea colocar e indicarle el punto de referencia de donde se partirá en el conteo de la cantidad de bytes indicado por la dirección física, los cuales pueden ser desde el principio, desde donde se encuentre el apuntador del archivo y desde el final.
  • 20. Puntos de referencia de la función fseek() El último argumento de la función fseek es conocido como el punto de referencia o el modo y se refiere desde dónde se iniciará el conteo de bytes determinado por la dirección física
  • 21.
  • 22. Conociendo la posición del apuntador del archivo con la función ftell() Se usa la función ftell para conocer la posición actual del apuntador de un archivo abierto. La posición se expresa en bytes (dirección física) contados desde el principio del archivo.
  • 23. Colocando el apuntador del archivo al principio con la función rewind() Se usa la función rewind para colocar el apuntador del archivo al principio de un archivo abierto sin necesidad de usar la función fseek. Basta con enviar el alias del archivo como argumento
  • 24. Detectando el final del archivo con feof() Se usa feof() para determinar si se ha encontrado el final de un archivo. Si se encuentra el final de un archivo, devuelve un valor diferente de cero y cero en caso contrario. Para invocarlo es necesario colocar el alias del archivo abierto como argumento. Cambiando nombres de archivos mediante rename() Esta función tiene como objetivo cambiar el nombre de un archivo por su ruta de acceso. Sólo necesita dos argumentos: el nombre anterior del archivo y el nuevo nombre. Es importante destacar que esta función sólo puede aplicarse a archivos cerrados.
  • 25. Eliminando archivos con la función remove() La función remove elimina definitivamente un archivo especificando su nombre. Es importante destacar que esta función sólo puede aplicarse a archivos cerrados.
  • 26. Actividad en clase En base a lo descrito anteriormente realice un programa que haga lo siguiente con un archivo: • Creación del archivo con la estructura siguiente: • Nombre vendedor (30 espacios) • Venta Semana 1 (4 espacios) • Venta semana 2 (4 espacios) • Venta semana 3 (4 espacios) • Venta semana 4 (4 espacios) • Inserción de datos en el archivo • Reporte en pantalla con los datos del archivo.