instituto técnico “jesús obrero” 4to año programación profesor: … · 2012. 4. 29. ·...

19
Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: Luis Vallenilla

Upload: others

Post on 16-Oct-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Instituto Técnico “Jesús Obrero”

4to año – Programación

Profesor: Luis Vallenilla

Page 2: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Definición

Prof. Luis Vallenilla

Estructura de datos dinámica y homogénea,

compuesta por una colección de registros del

mismo tipo y almacenada en dispositivos de

almacenamiento secundarios (diskettes, disco

duros, pendrivers, entre otros). Solo almacenan

datos, no los procesan.

Representación Gráfica

Page 3: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Ciclo de trabajo de un Archivo

Prof. Luis Vallenilla

Page 4: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Elementos de un archivo

Prof. Luis Vallenilla

Luis16599375

María16588777

Registro

Registro

0

1

Posición

Punterodel

Archivo

Cliente (alias por el que se maneja el archivo en el programa “dirección lógica”)

C:\Mis documentos\clientes.dat Dirección física del archivo

Page 5: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Pasos para declarar un archivo

Prof. Luis Vallenilla

1.- Declarar el modelo del registro que contendrá el

archivo. Esto se realiza luego de los includes, mediante

la instrucción struct

Ejemplo:

struct cliente

{

long cedula;

char nombre[50];

char direccion [100];

char correo [20];

char telefono [20];

char fechan[20];

bool eliminado;

};

Page 6: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Pasos para declarar un archivo

Prof. Luis Vallenilla

2.- Declarar como global una variable tipo FILE, la cual

será la que maneje el alias del nombre del archivo en el

programa

Sintaxis: FILE *alias;

Ejemplo

FILE * clientes;

Page 7: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Operaciones básicas con archivos

Prof. Luis Vallenilla

1. Creación o Apertura

2. Agregar

3. Consultar

4. Actualizar

(eliminar/modificar)

5. Cerrar

Todas las funciones para el manejo de archivos se encuentran

dentro de la librería stdio.h

Page 8: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Funciones para manejar un archivo

Prof. Luis Vallenilla

Función fopen: permite realizar la apertura del archivo así

como establecer la conexión entre la dirección física del

mismo y su alias o dirección lógica.

Sintaxis: variablearchivo = fopen (“direccionfísica”, “modo de apertura”);

Modo de apertura1.- rb2.- wb

3.- rb+

4.- ab

Operación1.- Abre el archivo sólo para lectura. Debe existir2.- Abre el archivo modo escritura. Si el archivo existe lo borra .Si no existe lo crea3.- Abre el archivo en modo lectura/escritura. Debe existir el archivo4.-Abre el archivo en modo agregar. Si el archivo existe agrega los datos al final. Si no existe lo crea

Page 9: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Funciones para manejar un archivo

Prof. Luis Vallenilla

Ejemplos de apertura de una archivo

clientes = fopen (“c:\Mis documentos\Clientes.dat”,”rb”);

clientes = fopen (“c:\Mis documentos\Clientes.dat”,”wb”);

clientes = fopen (“c:\Mis documentos\Clientes.dat”,”rb+”);

clientes = fopen (“c:\Mis documentos\Clientes.dat”,”ab”);

Page 10: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Funciones para manejar un archivo

Prof. Luis Vallenilla

Para realizar el proceso de apertura de un archivo se debe

realizar una validación para determinar si el archivo

existe o no. Si el archivo no existe la función fopen

devolverá un valor NULL.

Page 11: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Funciones para manejar un archivo

Prof. Luis Vallenilla

Proceso de apertura de un archivo con validación (se

ejecuta una sola vez):

void aperturaarchivo()

{

clientes = fopen ("clientes1.dat","rb");

if (clientes == NULL)

clientes = fopen ("clientes1.dat","wb");

fclose(clientes);

}

Nota: El archivo se crea en la misma carpeta donde se almacena el programa

fuente

Page 12: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Funciones para manejar un archivo

Prof. Luis Vallenilla

Función fclose: permite realizar el cierre de un archivo,

pasando como parámetro su alias.

Sintaxis: fclose(alias);

Ejemplo: fclose(clientes);

Page 13: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Funciones para manejar un archivo

Prof. Luis Vallenilla

Función fwrite: permite agregar registros a un archivo. Un

fwrite se ejecuta luego de que se han leído cada uno de

los campos del registro y se han almacenado en una

variable tipo struct.

Sintaxis: fwrite(&varregistro, sizeof(varregistro),1,alias);

Ejemplo: fwrite(&c,sizeof(c), 1, clientes);

Variable

registro

Tamaño en

bytes del

registro

Cantidad de

registros

Page 14: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Funciones para manejar un archivo

Prof. Luis Vallenilla

Ejemplo operación de Agregar en un Archivo:

void agregar(struct cliente c, int &cc)

{

clrscr();

gotoxy(30,5);

cout <<"Cedula:";

cin >> c.cedula;

titulos();

gotoxy(40,6);

cin >> c.nombre;

gotoxy(40,7);

cin >> c.direccion;

gotoxy(40,8);

cin >> c.correo;

gotoxy(40,9);

cin >> c.telefono;

gotoxy(55,10);

cin >> c.fechan;

c.eliminado = false; // EL REGISTRO EXISTE

clientes = fopen("clientes1.dat",”ab");

fwrite(&c, sizeof(c),1,clientes);

fclose(clientes);

}

void titulos ()

{

gotoxy(20,6);

cout <<"Nombre:";

gotoxy(20,7);

cout <<"Direccion:";

gotoxy(20,8);

cout <<"Correo:";

gotoxy(20,9);

cout <<"Telefono:";

gotoxy(20,10);

cout <<"Fecha de nacimiento dd/mm/aaaa:";

}

Page 15: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Funciones para manejar un archivo

Prof. Luis Vallenilla

Función fread: permite extraer un registros de un archivo.

Un fread almacena en una variable registro en memoria

Ram los datos extraídos.

Sintaxis: fread(&varregistro, sizeof(varregistro),1,alias);

Ejemplo: fread(&c,sizeof(c), 1, clientes);

Nota: Luego de que se ejecuta una instrucción fread el puntero del archivo pasa

automáticamente al registro siguiente

Variable

registro

Tamaño en

bytes del

registro

Cantidad de

registros

Page 16: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Funciones para manejar un archivo

Prof. Luis Vallenilla

Ejemplo operación de Consultar en un Archivo:

void consultar1(struct cliente c, int &cc)

{

clrscr();

clientes = fopen("clientes1.dat","rb");

fread(&c, sizeof(c),1,clientes);

fclose(clientes);

escribir(c);

getch();

}

void escribir (struct cliente c)

{

clrscr();

cout << "Cedula: "<< c.cedula << endl;

cout << "Nombre: "<< c.nombre << endl;

cout << "Direccion: " << c.direccion << endl;

cout << "Correo: " << c.correo << endl;

cout << "Telefono: " << c.telefono << endl;

cout << "Fecha de nacimiento dd/mm/aaaa: " <<

c.fechan << endl;

}

Nota: Observe que mediante este código siempre se consulta el primer registro

del archivo, esto debido a que al abrir el archivo el puntero se ubica en la posición

0. Para ubicar el puntero del archivo en una posición especifica se debe usar la

función fseek

Page 17: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Funciones para manejar un archivo

Prof. Luis Vallenilla

Función fseek: permite ubicar el puntero del archivo en una

posición especifica del mismo.

Sintaxis: fseek(alias, sizeof(varregistro)*posicion,0);

Ejemplo: fseek(clientes, sizeof(c)*1,0); Esta línea estaría

ubicando el puntero del archivo en la posición 1 del

mismo

Modo:

desde el

principio del

archivo

Page 18: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Funciones para manejar un archivo

Prof. Luis Vallenilla

Función feof: permite determinar si el puntero del archivo

ha alcanzado el final del mismo. Si encuentra el final del

archivo devuelve un valor diferente de cero y cero en

caso contrario. Es usado en la consulta masiva y

búsqueda.

Sintaxis: feof(alias);

Ejemplo: feof(clientes);

Page 19: Instituto Técnico “Jesús Obrero” 4to año Programación Profesor: … · 2012. 4. 29. · Estructura de datos dinámica y homogénea, compuesta por una colección de registros

Archivos en Lenguaje C

Programa Completo

Prof. Luis Vallenilla