You are on page 1of 10

saber c++ (registros y archivos secuenciales ) parte 9

INTRODUCCION ARCHIVOS C++

saber c++ (registros y archivos secuenciales ) parte 9

Si bien es cierto que ya se pueden manejar gran cantidad de datos del mismo y
diferente tipo al mismo tiempo el problema es que al terminar de ejecutarse el
programa los datos se pierden.

De esta situacin nace el concepto de archivos que son medios que facilita el
lenguaje para almacenar los datos en forma permanente, normalmente en los
dispositivos de almacenamiento standar.

En general es necesario entender algunos conceptos elementales de sistemas


de archivos tradicionales.

Como nota a tomar en cuenta los datos que se van almacenando en un archivo
de disco, se almacenan en renglones consecutivos y cada renglon en disco, se
conoce como registro del archivo, favor de no confundir el concepto de registro
de archivo y registro o estructura como variable ya analizada, son dos cosas
totalmente diferentes aunque desafortunadamente se llamen igual.

Primero: Operaciones con archivos

ESCRIBIR O GRABAR: Es la operacion mas elemental con un archivo, consiste


en tomar un o unos datos en variables de cualquier tipo (escalar, mezcla de
datos, arreglos, estructuras) y almacenarlas en un archivo de datos en disco.
LEER: Operacin consistente en sacar los datos del archivo en disco y
mandarlos o cargar la variable respectiva

Segundo: Organizacin de archivos

En general existen dos tipos de archivos:

Archivos Secuenciales.- En este caso los datos se almacenan en forma


consecutiva y no es posible leer (recuerdan que significa esta operacin)
ningun registro (recuerdan la nota de arriba) directmente, es decir para leer el
registro n se debera recorrer o accesar los n-1 registros anteriores.

Archivos Directos o Random.- Para este caso si se puede acceder o leer un


renglon n cualquiera.

Tercero: Tipo de archivos

En general existen tantos tipos de archivos como tipos de datos existen, es


decir:

El paquete standar de input/output de C, hace disponible 4 metodos o


maneras diferentes de leer y escribir los datos a disco.

Tres de ellas corresponden exactamente a lo aprendido de leer y escribir datos


desde el teclado hacia la pantalla.

1.- Datos a ser grabados o leidos como un caracter a la vez, se utilizaran


funciones analogas a getchar y putchar.
2.- Datos que pueden ser leidos o grabados como una string se usaran
funciones analogas a gets y puts.

3.- Datos que se capturen o desplieguen con formatos parecidos a los usados
por scanf y printf se usaran funciones similares, es decir seran problemas que
involucran mezclas de strings, caracteres, floats, etc.

4.- Tambien se podran leer y escribir datos de tipo arreglo y registros utilizando
instrucciones apropiadas, en resumen:

caracter

string

Formateado

Registros y arreglos

Leer

getc()

fgets()

fscanf()

fread()
Escribir

putc()

fputs()

fprintf()

fwrite()

ATENCION: Ya que se decide utilizar algun archivo especifico de


datos(caracteres, strings, formateados, registros o arreglos) solo utilizar las
funciones de escritura y lectura de ese tipo de archivo, por ningun motivo
mezcle funciones de lectura y escritura de otro tipo de archivos.

Cuarto: Almacenamiento en archivos

Modo Texto: en este caso los datos son almacenados usando Ascii y por tanto
son plenamente visibles usando cualquier editor.

Modo Binario: en este caso los datos son almacenados en notacin


hexadecimal y por tanto se ocupa un editor binario para reconocerlos, sin
embargo un archivo binario es mas compacto que un archivo texto.

PARA PROPOSITO DE ESTE CURSO, ENTONCES NOS CONCENTRAMOS EN


ARCHIVOS DISCO DE REGISTROS O ESTRUCTURAS, SECUENCIALES, DIRECTOS Y
BINARIOS, DE C++ PERO NO OLVIDAR QUE EXISTEN LOS OTROS TIPOS QUE
MAS ADELANTE ESTARAN INCLUIDOS EN ESTE LIBRO.
Existen muchas operaciones asociadas a archivos en c++, las mas elementales
son:

1.- Creacin de Archivo.- En este proceso se pretende solamente crear un


archivo nuevo en disco con su nombre tipo y especialidad de almacenamiento
de datos apropiado.

2.- Apertura de Archivos.- En este caso se pretende abrir un archivo ya


existente en disco para procesarlo ya sea para cargar o grabar estructuras en
sus registros o leer algun registro en especial para mandarlo a una variable de
cualquier tipo.

No confundir creacin con apertura, creacin es un proceso que solo se ejecuta


una sola vez en la vida de un archivo, mientras que apertura, seimpre se esta
realizando por los programas especializados en algun proceso.

3.-Cierre de archivos: Es la operacin mas importante en cualquier programa


que maneje archivos, o se cierra el archivo como ultima instruccin del
pograma o se vera el anuncio ABORT,RETRY,FAIL.

Windows 98, /s, scandisk

4.-Altas en archivo.- En este proceso se captura una estructura en memoria con


sus datos pertinentes y despues se graba la estructura al archivo en disco.

5.-Lectura de archivo.- En este proceso se abre el archivo, se manda el registro


de disco a una estructura en memoria para su procesamiento.

6.- Consulta de archivos: En este proceso se pretende desplegar todos los


registros del archivo en disco a la pantalla ya sea consola o mejor an, a una
pagina html
7.-Busqueda en archivos: Una de las operaciones mas comunes consiste en que
el usuario pide toda la informacin de algun renglon en disco porporcionando la
informacin de algun campo generalmente el campo clave de la estructura.

8.- Filtros.- En este proceso el usuario esta interesado en algun conjunto de


renglones con caracteristicas comunes (condicin), por ejemplo todos los
alumnos de sistemas o todos los empleados que ganen mas de $500.00
pesos, o todos los clientes que sean de tijuana, etc

9.-Modificaciones de registros o archivos: Problema muy comun, donde los


datos originales ya grabados se tienen que cambiar o actualizar, por ejemplo el
nombre no era juan es juana, o la calificacin no es 100 es 20, etc.

10.- Bajas de registros: tambien muy comun este proceso,por ejemplo el


alumno ya egreso, el cliente huyo, etc.

ESTRUCTURAS O REGISTROS

En este tema exploramos en C la estructura mas comn de representacin de


datos la llamada estructura.

Variables simples o escalares pueden almacenar un datum de informacin y


arreglos pueden almacenar conjuntos de ellos del mismo tipo y al mismo
tiempo, estos dos mecanismos pueden manejar una gran variedad de
situaciones pero a menudo se necesita trabajar sobre datos de diversos tipos
en este caso ni variables escalares ni arreglos son adecuados.
Para resolver este problema C provee de un tipo de dato especial llamado
estructura.

Los elementos individuales de una variable estructura reciben el nombre de


campos.

Ej:

struct alumno

nombre campo1

direccion campo2

edad campo3

etc

EL FORMATO GENERAL DE UNA ESTRUCTURA ES:

tipo de almacenamiento struct

tipo campo1;

tipo campo2;
}lista de variables;

Es el registro completo quien se declara en cualquiera de los lugares


adecuados para ello.

Son los campos del registro a quienes se les va a asignar, inicializar, capturar,
etc y de esta manera a los campos se les considera como variables normales.

Para indicar a C durante cualquier proceso que la variable a utilizar es un


campo de una estructura se utiliza el siguiente formato.

nomregistro.nombredelcampo

Ejemplo.

prog16.cpp

#include <stdio.h>

#include <conio.h>

#include <string.h>

struct {

int matricula;
char nombre[30];

int edad;}alumno;

void main() {

clrscr();

// captura de campos

printf("dame matricula :";scanf("%d",&alumno.matricula);getchar();

printf("dame nombre :";gets(alumno.nombre);

printf("dame edad :";scanf("%d",&alumno.edad);

// area de operaciones

alumno.edad = alumno.edad * 12;

// area de salida

printf("MATRICULA =%d n",alumno.matricula);

printf("NOMBRE =%s n",alumno.nombre);


printf("MESES =%d n",alumno.edad);

getchar();getchar();