Clase Programacion 22

July 26, 2017 | Author: gmullerb | Category: C++, Pointer (Computer Programming), Computer File, Computer Programming, Computer Program
Share Embed Donate


Short Description

Descripción: Clase 22 de Programación, Prof. Gonzalo Müller [email protected], Facultad de Ingeniería, UCV...

Description

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

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF