Anda di halaman 1dari 39

UNMSM

Facultad de Ingeniera de Sistemas e Informtica


ESTRUCTURA DE DATOS
G. A. Salinas A.
2008-2
ARCHIVOS en C/C++
Archivos Directos
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 3
Archivos en C/C++
1. Introduccin
2. Primitivas de Acceso
3. Operaciones
4. Implementaciones (Filedirectos )
5. Archivo de ndices
6. Esquema de Interaccin
7. Bibliografa
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 4
1. Introduccin
Conocer el concepto, funcionamiento y aplicaciones
Implementar archivos en lenguaje C
Resolucin de problemas con archivos
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 5
1. Introduccin
- Tiempo de acceso bastante pequeo
- El tiempo acceso a cualquiera de los elementos es CONSTANTE
Almacenamiento MEMORIA PRINCIPAL (RAM)
No siempre es posible almacenar en la RAM debido a:
Los datos son almacenados en la memoria RAM
- Los datos a manipular esta limitada por el tamao de la memoria
- La existencia de los datos esta supeditada a que el computador este encendido
y el programa est funcionamiento
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 6
1. Introduccin
El manejo de grandes cantidades de datos
La SALIDA de los datos de un programa pueda ser tratada como ENTRADA de
otro programa
Estas limitaciones dificultan:
Para dar solucin a estas limitaciones se necesitan dispositivos de
Almacenamiento Secundario que permitan ALMACENAR y
RECUPERAR posteriormente los datos, esto es, un ARCHIVO.
Almacenamiento en MEMORIA SECUNDARIA
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 7
Definicin
Dir Log Cdigo Nombre Nota
0 100 Abel 15
1 105 Eva 14
2 107 Tatiana 15
Campos
Registros
ARCHIVOS
Es una coleccin de registros relacionados entre s organizados
para un propsito especfico
Los datos estn organizados de tal modo que puedan ser recuperados
fcilmente, actualizados o borrados y almacenados de nuevamente con
los cambios realizados
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 8
Definicin
- El almacenamiento PERMANENTE (persistente) de los datos
- Divisin o fraccionamiento de grandes volmenes de informacin en unidades mas
pequeas para que pueden ser tratadas en memoria principal RAM.
Campos
Registros
ARCHIVOS
La nocin de un ARCHIVO esta relacionado con:
Es una ED compuesta por REGISTROS y estos a su vez estn
divididos en campos.(en almacenamiento secundario)
Dir Log Cdigo Nombre Nota
0 100 Abel 15
1 105 Eva 14
2 107 Tatiana 15
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 9
Definicin
ARCHIVOS
Residen en dispositivos de ALMACENAMIENTO secundario como:
Disquetes
HD
Zip Disk
Cinta Magntica
CDs
DVDs
SD
Flash Memory
MAGNETICOS OPTICOS ELECTRONICOS
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 10
Clasificacin
De Texto
Binario
Maestros
Transacciones
Seguridad
Reportes
Histricos Secuenciales
Aleatorios
Por su CONTENIDO: Por su USO:
Por el TIPO DE ACCESO
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 11
Por su CONTENIDO
Estructura de datos permanente formada por una SECUENCIA de
caracteres ASCII.
Estructura de datos permanente, define su estructura interna
caracterizada por tener un tipo de dato asociado
Lenguaje de mquina (instrucciones, prog. Objeto, ejecutables)
Nmeros en binario
ARCHIVOS DE TEXTO
ARCHIVOS BINARIOS
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 12
Por su USO
Son copias de RESPALDO o de seguridad de otros archivos
ARCHIVO MAESTRO
ARCHIVO DE TRANSACCIONES
Perduran durante todo el ciclo de vida del sistema e.g. El archivo de
ALUMNOS en un sistema de Matrcula.
Se utilizan para actualizar otros archivos, pueden ser eliminados al
termino del proceso o conservados como respaldo e.g. El archivo de
registro notas de Estructura de Datos.
ARCHIVO DE SEGURIDAD
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 13
Por tipo USO
Son las salidas o resultados del sistema cuya informacin deben ser
interpretados por personas e.g. Las boletas de Notas al finalizar un determinado
ciclo de un sub sistema de calificacin del sistema Matrcula. La boletas de Pago en un
sistema de Remuneraciones.
ARCHIVOS HISTORICOS
Registran acontecimientos a travs del tiempo e.g. El archivo de notas del
curso de Estructura de Datos de ciclos anteriores
ARCHIVOS DE REPORTE
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 14
Por tipo de ACCESO
Es una secuencia finita de elementos con ciertas caractersticas:
Cada elemento ocupa un espacio fsico contiguo .
Para accesar a un dato primero hay recorrer los datos anteriores a l.
No se puede realizar inserciones ni eliminaciones
ARCHIVOS SECUENCIALES (CORTEZ 2002: 16)
Es una secuencia finita de elementos, en este caso se utiliza un
apuntador interno para apuntar directamente al registro deseado del
archivo
No es necesario recorrer los registros anterior al registro deseado como en los
archivos secuenciales.
ARCHIVOS ALEATORIOS (acceso directo, relativos)
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 15
2. Primitivas de Acceso
Para el manejo de archivos directos siguen siendo validos las primitivas de
filas secuenciales: ABRIR, PONER, TOMAR, MARCAR y ULTIMO.
ARCHIVOS DIRECTOS (CORTEZ 2002: 17)
Seudo cdigo : F // Sea F una fila secuencial
En lenguaje C : FILE *F;
En lenguaje C++ : fstream F;
Declaracin:
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 16
2. Primitivas de Acceso
Sea V una variable de algn TIPO de DATO, e.g. CARCTER,
ENTERO, REAL,o de tipo REGISTRO como:
REGISTRO ALUMNO
ENTERO Cod
CARCTER Nom[40]
REAL Nota
FIN_REGISTRO
struct ALUMNO{
int Cod;
char Nom[40];
float Nota;
};
ALUMNO V ALUMNO V;
Definicin de la ESTRUCTURA:
Declaracin de variable de tipo ESTRUCTURA:
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 17
2. Primitivas de Acceso
Identificador externo del FILE, se
puede dar la ruta del file
Modo que se va tratar el FILE
ABRIR(F) // F = fopen (NombreArchivo, modo);
// F.open(NombreArchivo, ios::out);
MODO SIGNIFICADO
r Abre para LECTURA
w Abre para EXCRITURA
a Abre para AADIR
r+ Abre para Lectura Escritura
w+ Crea para Escritura Lectura
r+ Abre para Escritura Lectura
Por defecto: Modo TEXTO
Se utiliza como ultimo carcter en
la cadena modo para :
- Modo texto la letra t
- Modo binario la letra b
Depende del compilador utilizado
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 18
2. Primitivas de Acceso
ARCHIVOS DIRECTOS
Cdigo Nombre Nota
100 Abel 15
105 Eva 14
107 Tatiana 15
REGISTRO ALUMNO
ENTERO Cod
CARCTER Nom[40]
REAL Nota
FIN_REGISTRO
NUMERO DE BYTES
4
40
8
TOTAL 52
Fsica Lgica
0 0
52 1
104 2
Direccin
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 19
2. Primitivas de Acceso
Hace posible el acceso a los elementos del archivo, el cabezal de lectura
se sita antes del primer elemento.Supone conectar el FILE externo con el
programa
V
1
V
2
V
3
...
V
i
...
V
N

F
8
Direccin Lgica
Primer
Elemento
ABRIR(F) // F = fopen (NombreArchivo, modo);
// F.open(NombreArchivo, ios::out);
0
1
2
...
i-1
...
N-1
0
52
104
...
52*(i-1)
...
52*(N-1)
Elemento de i
de la fila F
Direccin Fisica
Direccin fsica del
elemento i de F
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 20
2. Primitivas de Acceso
V
1
V
2
V
3
...
V
i
...
V
N

F
8
Direccin Lgica
Primer
Elemento
DIRECCION LOGICA. El direccionamiento consiste en la Posicin
que ocupa el registro en el archivo
0
1
2
...
i-1
...
N-1
0
52
104
...
52*(i-1)
...
52*(N-1)
Elemento de i
de la fila F
Direccin Fisica (Bytes)
Direccin fsica del
elemento i de F
DIRECCION FISICA. El direccionamiento consiste en el ESPACIO
ocupado (bytes) por el registro en el FILE
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 21
2. Primitivas de Acceso
V
1
V
2
V
3
...
V
i
...
V
N

F
8
Direccin Lgica
Primer
Elemento
Los ARCHIVOS en C usan direcciones fsicas
0
1
2
...
i-1
...
N-1
0
52
104
...
52*(i-1)
...
52*(N-1)
Elemento de i
de la fila F
Direccin Fsica(bytes)
Direccin fsica del
elemento i de F
CALCULO DE DIRECCION FISICA. Para posicionar el apuntador
en un registro especifico es necesario calcular la direccin fsica del
espacio ocupado por los REGISTROS ANTERIORES A L .
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 22
2. Primitivas de Acceso
V
1
V
2
V
3
...
V
i
...
V
N

F
8
Direccin Lgica
Primer
Elemento
Requiere definir: long int DirFisica, DirLogica;
0
1
2
...
i-1
...
N-1
0
52
104
...
52*(i-1)
...
52*(N-1)
Elemento de i
de la fila F
Direccin Fsica(bytes)
Direccin fsica del
elemento i de F
CALCULO DE DIRECCION FISICA.
DirFisica = DirLogica*TamaoRegistro en Bytes;
DirFisica = DirLogica*sizeof(REGISTRO);
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 23
2. Primitivas de Acceso
Permite poner el siguiente elemento. Esto es, AVANZA una posicin y
PONE o escribe el valor de V en direccin fsica.
PONER(F, V) // fwrite(&V, sizeof(TDV), 1, F);
// F.write(&V, sizeof(TDV));
fwrite(&V, sizeof(ALUMNO), 1, F);
Variable que desea
grabar
Archivo donde se desea
grabar
Cantidad de registros que
se desea grabar
LA funcion sizeof determina
el tamao en bytes del
registro ALUMNO
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 24
2. Primitivas de Acceso
Permite poner el siguiente elemento. Esto es, AVANZA una posicin y
TOMA o lee el valor y lo almacena en V.
TOMAR(F, V) // fread(&V, sizeof(TDV), 1, F);
// F.read(&V, sizeof(TDV));
fread(&V, sizeof(ALUMNO), 1, F);
Variable que desea leer o
tomar
Archivo de donde se
desea leer
Cantidad de registros que
se desea leer
LA funcion sizeof determina
el tamao en bytes del
registro ALUMNO
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 25
2. Primitivas de Acceso
Permite MARCAR el siguiente elemento. Esto es, AVANZA una posicin
y pone o escribe la marca de fin fila de en dicha posicin
V
1
V
2
V
3

F
8
Cabezal de
Lectura
Ultimo
elemento de la
fila
Marca de Fin
de fila
MARCAR(F, V) // fclose(F); // F.close( );
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 26
2. Primitivas de Acceso
Recordemos, cuando se abre un archivo en modo lectura o escritura, el
APUNTADOR se posiciona al INICIO del archivo y si se abre para
ANADIR el apuntador se posiciona al FINAL.
Cada vez que se realiza una
operacin de LECTURA o
ESCRITURA de cualquier tipo
de datos, el APUNTADOR del
archivo se mueve al FINAL de
dicho registro o dato, del tal
forma que se posiciona en el
SIGUIENTE REGISTRO.
La funcin fseek( ) permite reposicionar el apuntador
Es IMPORTANTE
asegurarse que el
apuntador se encuentre
en la posicin deseada
antes de realizar
cualquier operacin
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 27
2. Primitivas de Acceso
La funcin fseek( ) permite reposicionar el apuntador a una
direccin determinada.
Modo Nombre Operacin
0 SEEK_SET Cuenta desde el inicio del Archivo
1 SEEK_CUR Cuenta desde posicin actual del apuntador del archivo
2 SEEK_END Cuenta desde el final del archivo
fseek(FILE, DirFisica, PuntoReferencia);
fseek(F, DirFisica, SEEK_SET);
Punto de Referencia
Direccin fsica del registro
donde se desea posicionar
La variable de tipo FILE
donde se desea actuar
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 28
2. Primitivas de Acceso
La funcin ftell( ) permite conocer la posicin actual del apuntador
long int DirFisica;
DirFisica = ftell(FILE);
DirFisica = ftell(F);
Variable de tipo long int
Variable de Tipo FILE
Variable DirFisica
expresada en bytes
Esta funcin se utiliza para conocer la posicin actual del apuntador de un
archivo abierto. La posicin, DirFisica, se expresa en bytes contados desde
el inicio del FILE.
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 29
2. Primitivas de Acceso
La funcin rewind( ) permite posicionar el apuntador al inicio.
rebobinar (F)
rewind(FILE);
rewind(F);
Rebobinar
Variable de Tipo FILE
Pone el apuntador al
inicio del archivo
Esta funcin se utiliza para colocar el apuntador al inicio del archivo,
evitando el uso de la funcin fseek( ).
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 30
2. Primitivas de Acceso
La funcin rename( ) permite cambiar el nombre de un archivo.
renombrar (ALUMNO, NEOALUMNO)
rename(ALUMNO, NeoALUMNO);
Nuevo nombre del archivo,
puede incluir la ruta
Nombre anterior del archivo,
puede incluir la ruta
Esta funcin se utiliza para cambiar el nombre de un archivo indicando su
ruta. Es funcin se aplica cuando los archivos estn cerrados.
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 31
2. Primitivas de Acceso
La funcin remove( ) permite eliminar un archivo.
remover (ALUMNO)
remove(ALUMNO);
Nuevo nombre del archivo,
puede incluir la ruta
Nombre anterior del archivo,
puede incluir la ruta
Esta funcin se utiliza para eliminar un archivo indicando su nombre
indicando su ruta. Es funcin se aplica cuando los archivos estn cerrados.
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 32
2. Primitivas de Acceso
Predicado lgico que indica el estado de acceso al archivo. Si ULTIMO(F)
es VERDAD indica que se lleg al final del archivo y FALSO en otro caso.
V
1
V
2
V
3

F
8
Cabezal de
Lectura
ULTIMO(F)
Estado:FALSO
ULTIMO(F)
Estado:VERDAD
V
1
V
2
V
3

8
F
ULTIMO(F) // feof(F); // F.eof( );
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 33
3. Operaciones
Las operaciones a realizarse sobre una fila son:
CREAR.(Ingresar registros)
Crea una fila con un nmero determinado de elementos.
RECORRER. (Visualizar o mostrar registros)
Implica recorrer cada elemento de fila una nica vez.
BUSCAR.
Implica la localizacin de un elemento determinado utilizando un
dato clave (un valor o una posicin).
MEZCLA.
Dado dos filas ordenadas, con los elementos de dichas filas obtener
una tercera fila tambin ordenada.
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 34
5. Archivo de ndices
Mantener grandes archivos ordenados es COSTOSO
Para indexar generalmente se suele generar un ARCHIVO
AUXILIAR de INDICES. Existe varios mtodos: Utilizando
arboles binarios, archivos planos, etc. Veamos de Archivos
Planos.
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 35
5. Archivo de ndices
Implementacin de los archivos de ndices
Archivos de ALUMNOS
Archivo de ndices
Imaginemos ahora
que deseamos buscar
a un ALUMNO por
su APELLIDO
struct ALUMNO{
int Cod;
int Estado; //1: Valido, 0:
Invalido/ELIMINADO
char APat[20];
char AMat[20];
char Nom[20];
char Tel[10];
float Nota;
};
struct ALUINDEX{
char APat[20];
long Indice;
};
SOLUCIONES
- Bsqueda secuencial
- Ordenar por apellido
- Archivos de ndices
por apellido
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 36
5. Archivo de ndices
Implementacin de los archivos de ndices
Archivos de ALUMNOS
Archivo de ndices ordenado
[ABAD] [003]
[BARRAZA] [001]
[CALVO] [006]
[CERPA] [002]
[EBBEL] [004]
[FELIPE] [005]
[MORALES] [007]
[ZAVALA] [000]
[ZAVALA] [000]
[BARRAZA] [001]
[CERPA] [002]
[ABAD] [003]
[EBBEL] [004]
[FELIPE] [005]
[CALVO] [006]
[MORALES] [007]
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 37
5. Archivo de ndices
Implementacin de los archivos de ndices
Archivo de ndices ordenado, aqu
podemos buscar mas fcilmente
[ABAD] [003]
[BARRAZA] [001]
[CALVO] [006]
[CERPA] [002]
[EBBEL] [004]
[FELIPE] [005]
[MORALES] [007]
[ZAVALA] [000]
Direccin lgica
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 38
7. Esquema de Interaccin
ALU
Und.
Control
RAM
Disco
Duro
Proceso RECUPERAR (Tomar)
Proceso SALVAR (Poner)
UNMSM-FISI 2008-2 E. Datos. Prof. G. A. Salinas A. 39
8. BIBLIOGRAFIA
CORTEZ VASQUEZ, Augusto P.
2002 ESTRUCTURA DE DATOS Y ALGORITMOS. Universidad Ricardo
Palma, Lima.
SCHILDT, Herbert
1994 TURBO C/C++ 3.1 MANUAL DE REFERENCIA, McGRAW-HILL.
Madrid
www.conclase.com

Anda mungkin juga menyukai