Descripción: Clase 22 de Programación, Prof. Gonzalo Müller
Programación
Clase 22. Archivos Prof. Gonzalo Müller
[email protected]
Facultad de Ingeniería Universidad Central de Venezuela
Clase Anterior
Cadenas de Caracteres. Declaración de una variable string. String en C. Lectura y Escritura de un string en C. scanf, printf. gets.
String como parámetro. Arreglos de string. Estructuras con string. Programación – Prof. Gonzalo Müller – Clase 22 – GM - 2
Puntero
Es una variable que contiene la dirección de memoria de otra variable Variable
A 101 31
Puntero a A Identificador
Dirección
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 3
B 31 93
Identificador
Dirección
Puntero
Es una variable que contiene la dirección de memoria de otra variable Variable
A 101 31
Puntero a A Identificador
Dirección
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 4
B 31 93
Identificador
Dirección
Puntero Declaración: tipo *variable; tipo *variable1, *variable2, …; tipo indicada el tipo de variable a la que se esta apuntando. Un puntero a tipo char solo puede apuntar a variables tipos char, uno unsigned char solo puede apuntar a variables tipos unsigned char y así sucesivamente. Programación – Prof. Gonzalo Müller – Clase 22 – GM - 5
Puntero Ejemplo: unsigned char A, *B; unsigned short *C; A = 101; B = &A; printf(“%u\n”, A); printf(“%u”, &A);
Escribe 101 en la pantalla
printf(“%u”, B);
Escribe 31 en la pantalla
C = &A;
Escribe 31 en la pantalla Error Programación – Prof. Gonzalo Müller – Clase 22 – GM - 6
Archivo
Colección de información binaria, 0s y 1s, que contiene datos o programas. Los cuales se encuentra almacenados en unidad de almacenamiento externo (disco duros, CD, DVD, etc.). 0 1 0 0 1 0
1 0 1 1 0 1
1 0 1 0 0 1
1 0 0 1 0 1
0 0 1 1 0 1
1 0 1 1 1 0
0 1 0 1 0 1
1 1 0 0 1 0
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 7
Archivo
Colección de bytes, que contiene datos o programas. Los cuales se encuentra almacenados en unidad de almacenamiento externo.
0 1 0 0 1 0
1 0 1 1 0 1
1 0 1 0 0 1
1 0 0 1 0 1
0 0 1 1 0 1
1 0 1 1 1 0
0 1 0 1 0 1
1 1 0 0 1 0
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 8
Archivo
Todo archivo esta representado por una etiqueta de presentación, que permite al usuario identificarlo fácil y rápidamente.
0 1 0 0 1 0
1 0 1 1 0 1
1 0 1 0 0 1
1 0 0 1 0 1
0 0 1 1 0 1
1 0 1 1 1 0
0 1 0 1 0 1
1 1 0 0 1 0
1 1 1 0 0 1
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 9
Ejercicio1.HTML
Archivo
La etiqueta esta formada por dos partes: Nombre
Apellido Familia a la que pertenece
Nombre
Nombre
Extensión
Nombre.Extensión
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 10
Archivo
La etiqueta esta formada por dos partes: Nombre
Apellido Familia a la que pertenece
Nombre
Nombre
Extensión
Nombre.Extensión Ejercicio1.HTML Nombre
Archivo HTML
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 11
Tipos de Archivo
Texto: Contiene datos en formato legible (texto). Representación en Caracteres. (Programa Fuente)
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 12
Tipos de Archivo
Binarios: Ejecutables: Contiene las instrucciones en código de maquina de un programa ejecutable. (Programa Ejecutable) Datos: Contiene datos en formato de maquina. Representación Binaria (tal como en memoria)
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 13
Tipos de Archivo
Datos en Archivo de Texto:
Tipo Número (entero, real) Carácter Lógico
Guarda como Texto Carácter NA
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 14
Tipos de Archivo
Datos en Archivo de Texto: 123 -> “123” -> ‘1’ ‘2’ ‘3’ -> 3 Bytes en lugar de 1
Tipo Número (entero, real) Carácter Lógico
Guarda como Texto Carácter NA
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 15
Tipos de Archivo
Datos en Archivos Binarios: Contiene datos en formato de maquina. Representación Binaria (tal como en memoria) 123 -> 1 Byte Tipo Número (entero, real) Carácter Lógico
Guarda como Número (entero:1,2,4,8 B. real:4,8 B) Carácter (1 Byte) Lógico (1 Byte)
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 16
Flujo Entrada/Salida El flujo de entrada y salida de datos puede ser realizado forma directa con el usuario a través del teclado y el monitor. Entrada Teclado
Programa
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 17
Salida Monitor
Flujo Entrada/Salida El flujo de entrada y salida de datos puede ser realizado forma directa con el usuario a través del teclado y el monitor o utilizando archivos. Entrada Teclado
Programa
y/o
Salida Monitor y/o
Archivo
Archivo Programación – Prof. Gonzalo Müller – Clase 22 – GM - 18
Flujo Entrada/Salida El flujo de entrada y salida de datos puede ser realizado forma directa con el usuario a través del teclado y el monitor o utilizando archivos. Entrada Teclado
Programa
Salida Monitor
y/o
y/o
Archivo
Archivo modo lectura
modo escritura
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 19
Flujo Entrada/Salida C ofrece una colección de funciones para el manejo de archivo predefinidas en las librerías estándar stdio.h.
Entrada Teclado
Programa
Salida Monitor
y/o
y/o
Archivo
Archivo modo lectura
modo escritura
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 20
Flujo Entrada/Salida C ofrece una colección de funciones para el manejo de archivo predefinidas en las librerías estándar stdio.h. printf
scanf
Entrada Teclado
fscanf
Programa
fprintf
y/o
Salida Monitor y/o
Archivo
Archivo modo lectura
modo escritura
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 21
Flujo Entrada/Salida C ofrece una colección de funciones para el manejo de archivo predefinidas en las librerías estándar stdio.h.
Entrada Teclado
scanf fscanf
printf
Programa
fprintf
y/o
Salida Monitor y/o
Archivo
Archivo modo lectura
modo escritura
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 22
Flujo Entrada/Salida C ofrece una colección de funciones para el manejo de archivo predefinidas en las librerías estándar stdio.h. printf
scanf
Entrada Teclado
fscanf
Programa
fprintf
y/o
Salida Monitor y/o
Archivo
Archivo modo lectura
modo escritura
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 23
Flujo Entrada/Salida En C un archivo es manejado por un puntero: FILE * printf
scanf
Entrada Teclado
fscanf
Programa
fprintf
FILE es una estructura que contiene la información necesaria para manejar un archivo
y/o
Archivo
Salida Monitor y/o
Archivo FILE *
FILE *
modo lectura
modo escritura
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 24
Manejo de un archivo
El proceso consta de 3 pasos básicos: 1. Apertura del archivo. 2. Manipulación del archivo. 3. Cierre del archivo
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 25
Manejo de un archivo
Apertura del archivo: antes de poder utilizar un archivo este debe ser abierto. fopen: abre un archivo y retorna un puntero al mismo: puntero = fopen(nombre, modo);
en caso de algún error se retorna 0 nombre: ruta completa al archivo Programación – Prof. Gonzalo Müller – Clase 22 – GM - 26
Manejo de un archivo modo: indica en que forma debe ser abierto el archivo. Modo Descripción r abre un archivo existente para lectura (solo lectura). w abre un nuevo archivo para escritura (solo escritura), si el archivo existe se crea uno nuevo, destruyendo el existente. a abre un archivo existente para añadir (solo escritura), si el archivo no existe se crea uno nuevo. b binario Programación – Prof. Gonzalo Müller – Clase 22 – GM - 27
Manejo de un archivo de esta forma se dispone de los siguientes posibles modos: Modo “r” “w” “rb” “wb”
Descripción lectura de archivo de texto escritura de archivo de texto lectura de archivo binario escritura de archivo binario
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 28
Manejo de un archivo Ejemplo: Apertura de archivo de texto para lectura FILE *pArch; pArch = fopen(“test.txt”, “r”); if(pArch != 0) { …
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 29
Manejo de un archivo Ejemplo: Apertura de archivo de texto para lectura FILE *pArch; pArch = fopen(“test.txt”, “r”); if(pArch != 0) { … la estructura FILE contiene información sobre ubicación de archivo, modo de apertura, ubicación del buffer, posición actual entre otros Programación – Prof. Gonzalo Müller – Clase 22 – GM - 30
Manejo de un archivo
Cierre del archivo: luego de utilizar un archivo este debe ser cerrado, de esta forma se libera el recurso del sistema y otras aplicaciones pueden utilizarlo sin conflicto. fclose: cierra un archivo: fclose(puntero);
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 31
Manejo de un archivo Ejemplo: Cierre de archivo FILE *pArch; pArch = fopen(“test.txt”, “r”); if(pArch != 0) { …... fclose(pArch); } Programación – Prof. Gonzalo Müller – Clase 22 – GM - 32
Salida a un archivo
Apertura del archivo fopen(archivo, “w”)
Manejo del archivo fprintf(…)
Cierre del archivo fclose(…)
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 33
Salida a un archivo
fprintf: Escribe la información indicada en un archivo tipo texto. Formas de uso: 1. Solo texto, sin formato: fprintf(puntero, texto);
Archivo de Información Programación – Prof. Gonzalo Müller – Clase 22 – GM - 34
Salida a un archivo Ejemplo: /* Escribe en C++ es el 1*/
el
archivo:
fprintf(pArch, 1”);
“Lenguaje
Lenguaje
C++
es
el
/* Escribe en dos líneas en el archivo: Lenguaje C++ es el Mejor!*/ fprintf(pArch, “Lenguaje C++\n”); fprintf(pArch, “es el Mejor!”); Programación – Prof. Gonzalo Müller – Clase 22 – GM - 35
Ejercicio
Construir un programa en C++ para guardar su datos personales en un archivo Fase 1: Diseño y Análisis: DES, DTD y UML DES de Módulos y TM. DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa en C++.
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 36
Salida a un archivo 2. Texto + variables, con formato: Escribe el valor de un conjunto de variables en un archivo de texto: fprintf(puntero,Formato,Variable1 , Variable2,…);
Formato: constante texto que establece que tipo de variables están contenidas en las lista. Archivo de Información
Archivo de Datos
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 37
Salida a un archivo El formato esta constituido por al menos una lista de especificadores que indica el tipo.
Un especificador esta formado por un carácter porcentaje y una letra, la cual indica el tipo de variable correspondiente:
%Letra
Letra c d u x,X f,e,E,g,G s
Tipo de dato Carácter Entero con signo Entero sin signo Hexadecimal Real String
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 38
Salida a un archivo Ejemplo: /* Escribe en el archivo: El valor de la variable uwContador */ fprintf(pArch,“%u”, uwContador); /* Escribe en el archivo: El valor de la variable uwContador y dMedia fprintf(pArch,“%u dMedia);
%f”,
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 39
uwContador,
Salida a un archivo fprintf(puntero,“%Letra1 %Letra2”, Correspondencia
Variable1,Variable2);
No es recomendable colocar texto adicional en el formato, ya que afectaría la lectura del archivo Ejemplo fprintf(pArch,“Se encontraron %u datos, cuyo promedio fue %f”,uwContador, dMedia);
Archivo de Información Programación – Prof. Gonzalo Müller – Clase 22 – GM - 40
Salida a un archivo fprintf(puntero,“%Letra1 %Letra2”, Correspondencia
Variable1,Variable2);
No es recomendable colocar texto adicional en el formato, ya que afectaría la lectura del archivo Ejemplo fprintf(pArch,“%u %f”, uwContador, dMedia);
Archivo de Datos Programación – Prof. Gonzalo Müller – Clase 22 – GM - 41
Salida a un archivo fprintf(puntero,“%Letra1 %Letra2”, Correspondencia
Variable1,Variable2);
No es recomendable colocar texto adicional en el formato, ya que afectaría la lectura del archivo Ejemplo
fprintf(pArch,“Se promedio fue fprintf(pArch,“%u
encontraron
%u datos, cuyo %f”,uwContador, dMedia); %f”, uwContador, dMedia);
Archivo de Datos Programación – Prof. Gonzalo Müller – Clase 22 – GM - 42
Ejercicio Construir un programa en C++ para guardar N edades y pesos Fase 1: Diseño y Análisis: DES, DTD y UML DES de Módulos y TM. DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa en C++. Notas Leer
Leer de teclado
Escribir
Escribir en archivo
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 43
Tipos de Archivo Archivo de Información
Archivo de Datos
Guardar información para ser utilizada Guardar datos que son procesados por el directamente por el usuario programa para luego ser mostrados al usuario
Programa
Archivo
texto texto texto texto
registro1
texto texto texto texto
…
texto texto …
registroN
archivo
archivo
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 44
Archivo
Archivo Texto de Datos
Tamaño Definido N registro1 … registroN archivo
Tamaño Indefinido registro1 … registroN archivo Programación – Prof. Gonzalo Müller – Clase 22 – GM - 45
Archivo Texto de Datos También se conocen como archivos secuenciales
Tamaño Definido N registro1 … registroN archivo
Tamaño Indefinido registro1 … registroN archivo Programación – Prof. Gonzalo Müller – Clase 22 – GM - 46
Archivo Texto de Datos
Registro Metadatos
Define como esta constituido cada registro del archivo
Datos
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 47
Archivo Texto de Datos
Creación de archivo de datos de tamaño definido
Escribir en archivo N Mientras (k < N) Escribir en archivo Registro k … …
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 48
Archivo Texto de Datos
Creación de archivo de datos de tamaño indefinido
… Mientras (k < N) Escribir en archivo Registro k … …
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 49
Entrada desde un archivo
Apertura del archivo fopen(archivo, “r”)
Manejo del archivo fscanf(…)
condición
Cierre del archivo fclose(…)
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 50
Entrada desde un archivo
fscanf: Lee uno o más datos desde un archivo de texto y escribe en la variable indicada el resultado. Forma de uso: fscanf(puntero,Formato,&Variable1, &Variable2, ...);
Formato: constante texto que establece que tipos de variables serán leídas. Programación – Prof. Gonzalo Müller – Clase 22 – GM - 51
Entrada desde un archivo
El formato está constituido por los especificadores que indica los tipos de dato a leer: “%Letra1 %Letra2 … %LetraN” Letra Tipo de dato Observación c Carácter No lee espacio en blanco d Entero con Prefijo l para long, h para short, hh para char, ll para long long signo u Entero sin Prefijo l para long, h para short, signo hh para char, ll para long long x Hexadecimal Hexadecimal f,e,E,g,G float Prefijo l o L para double s string Lee hasta ′ ′, \t, \n ó , \r Programación – Prof. Gonzalo Müller – Clase 22 – GM - 52
Entrada desde un archivo Algunos formatos básicos para la lectura serían: Formato %c %hhd %hhu %hd %hu %ld %lu %f %lf %s
Tipo de dato char signed char unsigned char signed short unsigned short signed long unsigned long float double string
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 53
(ISOC9899) (ISOC9899)
Entrada desde un archivo Algunos formatos básicos para la lectura serían: Formato %c %hhd %hhu %hd %hu %ld %lu %f %lf %s
Tipo de dato char signed char unsigned char signed short unsigned short signed long unsigned long float double string
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 54
Problemático (ISOC9899) (ISOC9899)
Entrada desde un archivo Ejemplo:
Lee 1 Valor /*Lee de un archivo: El valor de la variable uwCantidad*/ fscanf(pArch, “%hu”, &uwCantidad);
Archivo 1 dato Programación – Prof. Gonzalo Müller – Clase 22 – GM - 55
Entrada desde un archivo Ejemplo: /*Lee de un archivo: El valor de la variable uwCantidad*/ fscanf(pArch, “%hu”, &uwCantidad); Lee Más de 1 Valor /*Lee de un archivo: El valor de la variable uwCantidad y fPromedio*/ fscanf(pArch,“%hu &fPromedio);
%f”,&uwCantidad,
Archivo 2 datos Programación – Prof. Gonzalo Müller – Clase 22 – GM - 56
Entrada desde un archivo fscanf lee del archivo el valor o valores indicados en el formato hasta encontrar un separador: espacio en blanco ` ´, tabulación `\t´, tabulación vertical `\v´, retorno de carro `\r´, nueva línea `\n´ o nueva forma `\f´ XXX XX X XXX XX XX XX XX XXXX … XXXX XX X archivo Programación – Prof. Gonzalo Müller – Clase 22 – GM - 57
Entrada desde un archivo fscanf lee del archivo el valor o valores indicados en el formato hasta encontrar un separador: espacio en blanco ` ´, tabulación `\t´, tabulación vertical `\v´, retorno de carro `\r´, nueva línea `\n´ o nueva forma `\f´ pArch XXX XX X XXX FILE* pArch
fopen
XX XX XX XX XXXX
pArch=fopen(…, “r”)
… XXXX XX X archivo Programación – Prof. Gonzalo Müller – Clase 22 – GM - 58
Entrada desde un archivo fscanf lee del archivo el valor o valores indicados en el formato hasta encontrar un separador: espacio en blanco ` ´, tabulación `\t´, tabulación vertical `\v´, retorno de carro `\r´, nueva línea `\n´ o nueva forma `\f´ pArch
k=1
XXX XX X XXX fscanf(“%hu”,&d[k])
fscanf
XX XX XX XX XXXX …
d[1]=XXX
XXXX XX X archivo Programación – Prof. Gonzalo Müller – Clase 22 – GM - 59
Entrada desde un archivo fscanf lee del archivo el valor o valores indicados en el formato hasta encontrar un separador: espacio en blanco ` ´, tabulación `\t´, tabulación vertical `\v´, retorno de carro `\r´, nueva línea `\n´ o nueva forma `\f´ pArch
k=2
XXX XX X XXX fscanf(“%hu”,&d[k])
fscanf
XX XX XX XX XXXX …
d[2]=XX
XXXX XX X archivo Programación – Prof. Gonzalo Müller – Clase 22 – GM - 60
Entrada desde un archivo fscanf lee del archivo el valor o valores indicados en el formato hasta encontrar un separador: espacio en blanco ` ´, tabulación `\t´, tabulación vertical `\v´, retorno de carro `\r´, nueva línea `\n´ o nueva forma `\f´ …
…
XXX XX X XXX fscanf(“%hu”,&d[k])
fscanf
XX XX XX XX XXXX …
…
XXXX XX X archivo Programación – Prof. Gonzalo Müller – Clase 22 – GM - 61
Entrada desde un archivo fscanf lee del archivo el valor o valores indicados en el formato hasta encontrar un separador: espacio en blanco ` ´, tabulación `\t´, tabulación vertical `\v´, retorno de carro `\r´, nueva línea `\n´ o nueva forma `\f´ k=4 pArch
XXX XX X XXX fscanf(“%hu”,&d[k])
fscanf
XX XX XX XX XXXX …
d[4]=XXX
XXXX XX X archivo Programación – Prof. Gonzalo Müller – Clase 22 – GM - 62
Entrada desde un archivo Ejemplo: fscanf(pArch, “%hu”, &uwCantidad); printf(“%u”, uwCantidad); fscanf(pArch, “%hu”, &uwCantidad); printf(“%u”, uwCantidad); fscanf(pArch, “%hu”, &uwCantidad); printf(“%u”, uwCantidad); Varios separadores contiguos son leídos como 1 solo por fscanf Archivo 3 datos Programación – Prof. Gonzalo Müller – Clase 22 – GM - 63
Entrada desde Archivo de Tamaño Definido
Apertura del archivo fopen(archivo, “r”)
Manejo del archivo fscanf(…)
k < N
Cierre del archivo fclose(…)
Archivo de Datos de Tamaño Definido Programación – Prof. Gonzalo Müller – Clase 22 – GM - 64
Entrada desde Archivo de Tamaño Definido Usualmente se hará uso de un bucle para explorar un archivo Leer cantidad N Mientras (k < N) Leer Registro k del archivo … … No siempre es necesario utilizar el feof, por ejemplo: si se conoce de antemano la cantidad de datos a leer Programación – Prof. Gonzalo Müller – Clase 22 – GM - 65
Lectura del archivo
Entrada desde Archivo de Tamaño Definido Ejemplo: pArch = fopen(“test.txt”, “r”); fscanf(pArch,“test.txt”,&N); while(k < N) { fscanf(pArch,“#… #… #…”,&…,&…,…); … } Programación – Prof. Gonzalo Müller – Clase 22 – GM - 66
Ejercicio Conjunto de Tamaño Definido Construir un programa modular en C++ con acoplamiento de datos para leer un archivo que contiene un conjunto, de tamaño Definido, de personas y los presente en pantalla. Cada persona posee: nombre (string), edad (entero), genero (carácter). Personas Leer
Leer de archivo
Escribir
Escribir en pantalla
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 67
Entrada desde Archivo de Tamaño Indefinido
Apertura del archivo fopen(archivo, “r”)
Manejo del archivo fscanf(…)
!feof(…)
Cierre del archivo fclose(…)
Archivo de Datos de Tamaño Indefinido Programación – Prof. Gonzalo Müller – Clase 22 – GM - 68
Entrada desde Archivo de Tamaño Indefinido
Al leer un archivo es posible determinar cuando se ha alcanzado el final del mismo y detener el proceso. feof: indica si se ha alcanzado el final del archivo. Forma de uso: feof(puntero) retorna true en caso de que el puntero se encuentre al final del archivo Programación – Prof. Gonzalo Müller – Clase 22 – GM - 69
Entrada desde Archivo de Tamaño Indefinido fscanf lee del archivo el valor o valores indicados en el formato hasta encontrar un separador: espacio en blanco ` ´, tabulación `\t´, tabulación vertical `\v´, retorno de carro `\r´, nueva línea `\n´ o nueva forma `\f´ pArch
XXX XX X XXX feof(pArch)
fscanf
XX XX XX XX XXXX … XXXX XX X archivo Programación – Prof. Gonzalo Müller – Clase 22 – GM - 70
Entrada desde Archivo de Tamaño Indefinido Usualmente se hará uso de un bucle para explorar un archivo … Mientras (!Final de archivo) Leer Registro k del archivo … … No siempre es necesario utilizar el feof, por ejemplo: si se conoce de antemano la cantidad de datos a leer Programación – Prof. Gonzalo Müller – Clase 22 – GM - 71
Lectura del archivo
Entrada desde Archivo de Tamaño Indefinido Ejemplo: pArch = fopen(“test.txt”, “r”); while(!feof(pArch)) { fscanf(pArch,“#… #… #…”,&…,&…,…); … }
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 72
Ejercicio Conjunto de Tamaño Indefinido Construir un programa modular en C++ con acoplamiento de datos para leer un archivo que contiene un conjunto, de tamaño indefinido, de personas y los presente en pantalla. Cada persona posee: nombre (string), edad (entero), genero (carácter). Personas Leer
Leer de archivo
Escribir
No cambia
Escribir en pantalla
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 73
Ejercicio Construir un programa modular en C++ con acoplamiento de datos para: Leer un archivo que contiene un conjunto, de tamaño indefinido, de personas y presente en la salida los mayores de cierta edad. Cada persona posee: nombre (string), edad (entero), genero (carácter). Fase 1: Diseño y Análisis: DES, DTD y UML DES de Módulos y TM. DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa modular en C++. Programación – Prof. Gonzalo Müller – Clase 22 – GM - 74
Ejercicio Construir un programa modular en C++ con acoplamiento de datos para: Leer un archivo que contiene un conjunto, de tamaño indefinido, de personas y presente en la salida los de un nombre específico. Cada persona posee: nombre (string), edad (entero), genero (carácter). Fase 1: Diseño y Análisis: DES, DTD y UML DES de Módulos y TM. DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa modular en C++. Programación – Prof. Gonzalo Müller – Clase 22 – GM - 75
Ejercicio Construir un programa modular en C++ con acoplamiento de datos para: Leer un archivo que contiene un conjunto, de tamaño indefinido, de personas y presente en la salida los de un genero específico. Cada persona posee: nombre (string), edad (entero), genero (carácter). Fase 1: Diseño y Análisis: DES, DTD y UML DES de Módulos y TM. DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa modular en C++. Programación – Prof. Gonzalo Müller – Clase 22 – GM - 76
Ejercicio Construir un programa modular en C++ con acoplamiento de datos para: Leer un archivo que contiene un conjunto, de tamaño indefinido, de personas y presente en la salida ordenados de mayor a menor. Cada persona posee: nombre (string), edad (entero), genero (carácter). Fase 1: Diseño y Análisis: DES, DTD y UML DES de Módulos y TM. DRE ó DF, LV y CF de Bloque Principal. Fase 2: Codificación: programa modular en C++. Programación – Prof. Gonzalo Müller – Clase 22 – GM - 77
Resumen
Puntero Flujo de entrada y salida de datos. Archivo Texto Binario
FILE * modo lectura. modo escritura. Programación – Prof. Gonzalo Müller – Clase 22 – GM - 78
Resumen
Manejo de un archivo 1. Apertura del archivo: fopen (r, w, a) 2. Manipulación del archivo.
Archivo de Información,
Archivo de Datos.
Tamaño Definido.
Tamaño Indefinido.
Escritura: fprintf.
Lectura: fscanf, feof
3. Cierre del archivo: fclose.
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 79
Resumen
Lectura de conjuntos de un archivo: Conjunto de Tamaño Definido N registro1 … registroN archivo
Conjunto de Tamaño Indefinido registro1 … …
feof
registroX archivo Programación – Prof. Gonzalo Müller – Clase 22 – GM - 80
Lectura Extra
Mas sobre punteros
Programación – Prof. Gonzalo Müller – Clase 22 – GM - 81
Puntero
El identificador de un arreglo constituye un puntero al primer elemento. Ejemplo:
En la notación suele usarse el prefijo p para indicar que el tipo definido es un puntero
unsigned char arreglo[4]; unsigned char *pArreglo; pArreglo = arreglo; Totalmente válido printf(“%X”, arreglo); Escribe A3F6 en la pantalla printf(“%X”, pArreglo); Escribe A3F6 en la pantalla
arreglo 1º Elemento
A3F6
Dirección de memoria del 1º Elemento Programación – Prof. Gonzalo Müller – Clase 22 – GM - 82