Professional Documents
Culture Documents
discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/273380260
CITATIONS READS
0 1,889
3 authors:
Angelino Feliciano
Universidad Autnoma de Guerrero
17 PUBLICATIONS 0 CITATIONS
SEE PROFILE
ISBN: 978-607-00-3901-0
CONTENIDO. Pgina
Indice ii
Introduccin iv
Indice de Figuras vi
ii
Captulo VI.- Correspondencia entre la llave y la direccin fsica. 89
Bibliografa. 155
iii
INTRODUCCION
iv
otro, sin dejar huecos. La grabacin de dichos registros se lleva a cabo
exactamente en el mismo orden en que fueron introducidos por el capturista.
v
Indice de Figuras, Programas y Tablas.
FIGURAS.
vi
Figura No. 2.11 Funciones miembro de la clase fstream. 30
Figura No. 2.12 Elementos a considerar para ubicar un archivo. 31
Figura No. 2.13 Ejemplo de archivo de trabajo o temporal. 33
Figura No. 3.1 Registros grabados en forma secuencial (Uno detrs de otro). 38
Figura No. 3.2 Estructura del registro de datos. 40
Figura No. 3.3 Representacin grfica de una clase. 40
Figura No. 3.4 Encadenar varios archivos de clases para crear una aplicacin. 43
Figura No. 3.5 Alta un registro a un archivo secuencial. 45
Figura No. 3.6 Eliminacin de un registro en un archivo secuencial. 46
Figura No. 3.7 Modificacin de algunos datos de un registro. 48
Figura No. 3.8 Estructura genrica del programa prctico. 50
Figura No. 4.1 rea de datos de un archivo secuencial-indexado. 57
Figura No. 4.2 Estructura del registro del rea de datos. 58
Figura No. 4.3 El rea de datos y el rea de ndice permiten la
Organizacin Secuencial-indexado. 58
Figura No. 4.3 El rea de datos y el rea de ndice permiten la organizacin. 58
Figura No. 4.5 Una rea de datos y dos reas de ndice. 60
Figura No. 4.6 Se incluye el archivo .hpp con sus clases para crear
el ejecutable. 62
Figura No. 5.1 Estructura de un archivo directo. 72
Figura No. 5.2 Archivo directo donde debe transformarse la llave. 73
Figura No. 6.1 Direccionamiento Directo. 90
Figura No. 6.2 Estructura de los ndices. 91
Figura No. 6.3 Estructura de un cilindro. 94
Figura No. 6.4 Ejemplo de direccionamiento por sector. 94
Figura No. 6.5 Formacin de nmero de control de un alumno del Tecnolgico 96
Figura No. 6.6 rea de datos y rea de ndice de un archivo secuencial-
Indexado. 97
Figura No. 6.7 Asociacin cuando existen 2 reas de ndices y un rea
de datos. 98
vii
Figura No. 6.8 Esqueleto de un archivo relativo que considera un rea para
colisiones. 99
Figura No. 6.9 Direccin relativa seleccionando la fecha de nacimiento. 101
Figura No. 6.10 Ubicacin fsica de un registro con la divisin por nmero
primo. 103
Figura No. 6.11 Direcciones fsicas utilizando el cambio de base 10 a base 8. 103
Figura No. 6.12 Clculo de la direccin relativa por medio de multiplicacin. 104
Figura No. 6.13 Uso del cuadrado para obtener la direccin fsica. 105
Figura No. 6.14 Llaves tipo cadenas convertidas a direcciones relativas. 107
Figura No. 7.1 Memoria virtual de una computadora. 110
Figura No. 7.2 Correspondencia entre la direccin fsica y lgica de la memoria. 110
Figura No. 7.3 Pginas de memoria compartidas por uno o ms procesos. 112
Figura No. 7.4. Traduccin de pgina virtual a pgina real. 113
Figura No. 7.5 Eliminacin de la memoria principal de una pgina que no
est en uso y se reemplaza por otra pgina que se requiere. 115
Figura No. 7.6 Segmentos que puede tener la memoria. 117
Figura No. 7.7 Archivo VSAM luego de la carga inicial. 121
Figura No. 7.8 Archivo VSAM luego de una insercin en un intervalo no lleno. 121
Figura No. 7.9 Insercin en intervalo lleno con intervalo vaco en el rea. 122
Figura No. 7.10 Insercin con fisin de intervalo y de rea. 122
Figura No. 8.1 Ejemplo de un registro de una sucursal bancaria. 129
Figura No. 8.2 Organizacin multilista por profesin y categora. 131
Figura No. 8.3 Organizacin de datos de lista invertida (dos ndices). 133
Figura No. 8.4 Organizacin multilista restringida por grupo y categora. 135
Figura No. 8.5 Estructura de un archivo organizado en forma particionada
celular. 136
Figura No. 8.6 Adicin de un registro en las listas ligadas de profesin y
categora. 140
viii
PROGRAMAS.
ix
TABLAS.
x
CAPITULO 1
Dispositivos de
almacenamiento
externo.
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
Pgina : 1
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
Pgina : 2
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
Pgina : 3
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
Pgina : 4
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
Recomendaciones Generales.
Ambiente de uso
1. Nunca tocar la superficie o los bordes de las cintas magnticas.
Pgina : 5
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
La forma como se hacia una lectura o escritura era con los componentes del
tambor, por ejemplo, en el sector 8, pista 3; su tiempo de acceso era tomado en
revoluciones por minuto (se alcanzo hasta 8000 rpm) y el nmero de bits que era
capaz de almacenar se meda segn sus caractersticas fsicas como lo son el
dimetro del tambor, su altura, etc. tcnicamente se us mximo a 1200 bps. [i-1].
Pgina : 6
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
Los discos pticos, adems de ser medios removibles con capacidad para
almacenar masivamente datos en pequeos espacios -por lo menos diez veces ms
que un disco rgido de igual tamao- son portables y seguros en la conservacin de
los datos (que tambin permanecen si se corta la energa elctrica). El hecho de ser
portables deviene del hecho de que son removibles de la unidad. [i-3]
Los discos pticos presentan una capa interna protegida, donde se guardan
los bits mediante distintas tecnologas, siendo que en todas ellas dichos bits se leen
por un rayo lser incidente. Este, al ser reflejado, permite detectar variaciones
microscpicas de propiedades ptico-reflectivas ocurridas como consecuencia de la
grabacin realizada en la escritura. Un sistema ptico con lentes encamina el haz
luminoso, y lo enfoca como un punto en la capa del disco que almacena los datos.
La Figura No. 1.7 muestra el mecanismo de lectura / escritura de un disco compacto.
Pgina : 7
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
DISKETTES
Pgina : 8
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
Las unidades de diskettes son compatibles "hacia atrs"; es decir, que en una
unidad de 3,5" de alta densidad que almacena 1.44 MB, puede usar discos de 720
Kb o de 1,44 MB, pero en una de doble densidad, ms antigua, slo se pueden usar
diskettes de 720 Kb.
Para ver ms claramente las diferencias entre los dos tipos de diskettes y sus
capacidades, se muestra la Tabla No. 1.1.
5,25" DS/HD 1,2 MB Dos caras, alta densidad. Desfasado pero til
3,5" DS/DD 720 Kb Dos caras, doble densidad. Desfasado pero muy comn
Los diskettes tienen fama de ser unos dispositivos muy poco fiables en
cuanto al almacenaje a largo plazo de la informacin; y en efecto, lo son. Les afecta
todo lo imaginable: campos magnticos, calor, fro, humedad, golpes o polvo.
Hace unos das verifiqu unos 20 diskettes de diferentes marcas que fueron
grabados por una computadora 486 los cuales estaban almacenados en una caja.
Casi la mitad no funcionaba, porque no se cuidaron como es debido.
DISCO DURO
Pgina : 9
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
Para poder utilizar el disco duro, tiene que pasar por una etapa de
configuracin, la cual es dada por el formateo del disco duro, en el cual se hacen las
siguientes tares: se le marcan las pistas y sectores al disco, se le define la zona de
directorio, se crean la FAT (File Allocation Table) y el registro de arranque y,
eventualmente, se le graban los archivos del sistema operativo para el arranque del
sistema. Existen dos tipos de formateo: el de bajo nivel y el lgico.
El formateo de bajo nivel es un proceso fsico que divide las pistas circulares
en un nmero especfico de sectores con capacidad para 528 bytes cada uno, de los
cuales 512 son para datos y 16 para control del sistema. El inicio de cada sector se
indica mediante un cdigo magntico de direccin, a continuacin, sigue un cdigo
para encabezamiento del sector (Id), que contiene los nmeros del cilindro, la cabeza
y el sector respectivo. Los datos de informacin se graban en la porcin central de
Pgina : 10
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
Se manejan varios conceptos para identificar sus partes fsicas, los cuales se
describen a continuacin :
Pgina : 11
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
Pgina : 12
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
La Zona de Datos : Es la parte del disco duro en la que se almacena los datos de un
archivo. Esta zona depende en casi su totalidad de las
interrelaciones entre las estructuras de datos que forman el
sistema de archivos del Ms-Dos, y del camino que se lleva
desde la FAT hacia los diferentes sectores de un archivo.
Procesos de grabacin
Proceso de Codificacin
Pgina : 13
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
Existen varias cosas que usted puede realizar para prevenir que la computadora
le devuelve mensajes de error molestos. A continuacin se muestra una lista de
programas diferentes disponibles para asegurarse de que la unidad de disco duro se
mantenga saludable y funcionando a plena capacidad.
Pgina : 14
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
Si experimenta problemas con los archivos, tal vez quiera averiguar si existen
daos en el disco. ScanDisk de Windows Millenium verifica los archivos y las
carpetas para encontrar errores de datos y tambin puede verificar la
superficie fsica del disco. Para ejecutar ScanDisk, haga doble click en el
cono de Mi Pc., en la caja de dilogo que aparece se ubica en el cono de
disco duro y haga clic derecho y baje la barra iluminada hasta la opcin
Propiedades; ah dar clic izquierdo, luego aparece otra caja de dialogo, y ah
te colocas en la pestaa llamada herramientas y dar clic a la opcin de
Utilidad de ScanDisk. Existen varios programas de deteccin y limpieza de
virus que estn disponibles para usted. Simplemente hay que pedirlos del
distribuidor local de software para computadoras.
4.- Respaldos
VENTAJAS.
Pgina : 15
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
DESVENTAJAS.
UNIDADES ZIP.
Las unidades ZIP, por las capacidades de los diskette, por su fiabilidad, y por
su velocidad de transferencia estn a mitad de camino entre las unidades de diskette
y las de disco duro, aunque ms prximas a esta ltima. As, su velocidad de giro
es del orden de 3000 r.p.m, lo cual redunda en una mayor velocidad de transferencia.
Pgina : 16
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
La unidad se vende con conexin IDE para la versin interna o bien puerto
paralelo (el de impresora) para la externa, que, aunque parece menos pensada para
viajes accidentados que el Zip, permite conectarla a cualquier computadora sin
mayores problemas. Adems, acaba de ser presentada una versin USB que hace
la instalacin an ms sencilla. Si la BIOS de la tarjeta madre lo permite (lo cual
slo ocurre con todas las tarjetas madre desde Pentium III) puede configurar la
versin IDE incluso como unidad de arranque, con lo que no necesitar para nada la
unidad de diskette de 3.5 pulgadas.
Su mayor "handicap" reside en haber dejado al Zip como nica opcin durante
demasiado tiempo, pero la compatibilidad con los disquetes de 3,5" y sus 20 Mb
extra parece que estn cambiando esta situacin. Si va a comprar una computadora
nueva, le compensar pedir que le instalen un SuperDisk en vez de la unidad de
diskette de 3,5". La decisin entre Zip y SuperDisk es muy difcil, incluso cuestan
prcticamente lo mismo. La figura No. 1.12 muestra la unidad SuperdDisk y su
disco para almacenar informacin.
Pgina : 17
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
Pros: alta seguridad de los datos, portabilidad, bajo precio de los discos, fcil
manejo
Contras: inversin inicial, poca implantacin.
Pgina : 18
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
nuevos modelos con tecnologa LIMDOW (tambin conocida simplemente como OW,
por OverWrite) en los que se puede alcanzar ms de 1,5 MB/s en escritura.
UNIDAD JAZZ
Por otro lado, el Jazz tiene las mismas caractersticas porttiles que su
hermano zip, pero a diferencia de este, tiene la rapidez y capacidad para cargar
aplicaciones, permitir el desarrollo de multimedia, hacer el resguardo de la
Pgina : 19
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO
computadora en 10 min., guarda hasta 8 hrs. de msica con calidad de CD, 2 hrs. de
pelcula o 150 fotografas de color, etc.
Pgina : 20
CAPITULO 2
Definiciones y
Conceptos
DEFINICIONES Y CONCEPTOS
Pgina : 22
DEFINICIONES Y CONCEPTOS
Al manejar algunos campos como llaves, stos pueden ser de dos tipos :
Llave primaria.
Pgina : 23
DEFINICIONES Y CONCEPTOS
Llave secundaria.
Es, en un archivo multillave (de varios campos llave), cualquier llave
exceptuando la primaria.
La figura No. 2.3 nos muestra el esquema de una base de datos, en la cual se
manejan varios archivos llamados tablas (Empleado, Depto_Ads y Tipos_emp) que
se encuentran vinculados por campos llave (Cve_dep y Tipo_emp) y que entre todos
forman la base de datos.
Pgina : 24
DEFINICIONES Y CONCEPTOS
Corrientes de texto.
Corrientes binarias.
Pgina : 25
DEFINICIONES Y CONCEPTOS
Figura No. 2.4 Separadores entre registros y fin de archivo de una corriente de texto.
Pgina : 26
DEFINICIONES Y CONCEPTOS
Comparando las dos tipos de corrientes (de texto y binarias), el flujo de texto
ya qued obsoleto y los lenguajes de programacin Orientados a Objetos, los
Lenguajes Visuales y los Lenguajes Orientados a eventos utilizan el flujo binario
porque optimiza el uso del espacio y adems no utiliza mucho tiempo en
conversiones Texto-Binario-Texto.
Pgina : 27
DEFINICIONES Y CONCEPTOS
Los tres flujos anteriores son considerados como clases para la creacin de
objetos tipo archivo de datos.
Pgina : 28
DEFINICIONES Y CONCEPTOS
Las acciones que lleva a cabo cada una de las funciones miembro de la clase
ifstream se enumeran a continuacin :
Pgina : 29
DEFINICIONES Y CONCEPTOS
Las acciones que lleva a cabo cada una de las funciones miembro de la clase
ofstream se enumeran a continuacin :
Las acciones que lleva a cabo cada una de las funciones miembro de la clase
fstream se enumeran a continuacin :
Pgina : 31
DEFINICIONES Y CONCEPTOS
Por su estructura
Con tipo.- Son aquellos que presentan un formato basado en una estructura
especifica, la cual puede ser incluso variable. Son los ms utilizados en
los sistemas de informacin.
Sin tipo.- Son archivos que son procesados por bloques de lectura y/o
escritura. No tienen un formato determinado, y su representacin puede ser
o no binaria. El tamao de los bloques es ajustable.
Pgina : 32
DEFINICIONES Y CONCEPTOS
Pgina : 34
DEFINICIONES Y CONCEPTOS
Organizacin de Archivos.
Pgina : 35
DEFINICIONES Y CONCEPTOS
Un archivo puede accesarse por un programa que se ejecuta por lotes (en
modo batch) o por un programa que se ejecuta interactivamente. Y en funcin del
acceso se elige la organizacin de archivos mas apropiada.
Pgina : 36
CAPITULO 3
Archivos
Secuenciales
ARCHIVOS SECUENCIALES
Figura No. 3.1 Registros grabados en forma secuencial (Uno detrs de otro).
Los archivos secuenciales tienen algunas caractersticas que hay que tener
en cuenta :
2. Para leer una zona concreta del archivo hay que avanzar siempre, si la zona
est antes de la zona actual de lectura, ser necesario "rebobinar" o regresar
el puntero de lectura del archivo.
3. Los archivos slo se pueden abrir para lectura o para escritura, nunca de los
dos modos a la vez.
El caso de stdin, que suele ser el teclado. Un programa slo podr abrir
ese archivo como de lectura, y slo podr leer los caracteres a medida que estn
disponibles y en el mismo orden en que fueron tecleados.
Pgina : 38
ARCHIVOS SECUENCIALES
Pgina : 39
ARCHIVOS SECUENCIALES
registro de datos que ser utilizada a lo largo de ste captulo para ejemplificar todas
las operaciones en un archivo organizado en forma secuencial.
Pgina : 40
ARCHIVOS SECUENCIALES
/* ==========================================================
Clase para definir objetos tipo : Registro de Empleado.
===========================================================*/
class empleado {
private:
int clave; // Datos Miembro : clave (llave)
char nombre[30]; // nombre
float sdia; // sueldo diario
int dias; // dias trabajados
public:
empleado(); // FUNCIONES MIEMBRO
Desplegar(int iL);
PedirDatos();
Modifica();
Consultas();
Datos_Constantes();
~empleado() {};
};
empleado::empleado()
{
dias = clave = 0;
strcpy(nombre," \0");
sdia = 0.0;
}
empleado::PedirDatos()
{
clrscr();
gotoxy(10,5); cout<<"ALTAS DE UN REGISTRO A UN ARCHIVO SECUENCIAL.";
Datos_Constantes();
gotoxy(46,10); cin>>clave;
fflush(stdin);
gotoxy(46,12); gets(nombre);
fflush(stdin);
gotoxy(46,14); cin>>sdia;
fflush(stdin);
gotoxy(46,16); cin>>dias;
fflush(stdin);
return 0;
}
Pgina : 41
ARCHIVOS SECUENCIALES
empleado::Modifica()
{
clrscr();
char nomm[30], diass[3],sdiaa[10];
gotoxy(10,5);
cout<<"MODIFICACION A UN REGISTRO A UN ARCHIVO SECUENCIAL.";
Datos_Constantes();
gotoxy(48,12);gets(nomm);
fflush(stdin);
gotoxy(48,14);gets(diass);
fflush(stdin);
gotoxy(48,16);gets(sdiaa);
fflush(stdin);
if (diass[0] != '\x0') dias = atoi(diass);
if (sdiaa[0] != '\x0') sdia = atof(sdiaa);
if (nomm[0] != '\x0')
{ strcpy(nombre," ");
strcpy(nombre,nomm);
}
return 0;
empleado::Consultas()
{
gotoxy(10,5);
cout<<"CONSULTAS DE UN REGISTRO EN UN ARCHIVO SECUENCIAL.";
Datos_Constantes();
gotoxy(46,10); cout<<clave;
gotoxy(46,12); cout<<nombre;
gotoxy(46,14); cout<<sdia;
gotoxy(46,16); cout<<dias;
gotoxy(50,22); cout<<"<Return> para continuar";
getchar();
return 0;
}
empleado::Datos_Constantes()
{
gotoxy(20,10); cout<<"Clave del empleado : " << clave;
gotoxy(20,12); cout<<"Nombre del empleado : " << nombre;
gotoxy(20,14); cout<<"Sueldo diario : " << sdia;
gotoxy(20,16); cout<<"No. de Dias trabajados : " << dias;
return 0;
}
Pgina : 42
ARCHIVOS SECUENCIALES
Una vez que se tiene la clase, se pueden crear instancias u objetos de la clase
empleado. Cada objeto tendr internamente y en forma ordenada los cuatro
campos y las siete funciones miembro definidas en el programa No. 3.1.
Pueden existir varios archivos .hpp en una aplicacin debido a que en cada
archivo de cabecera se desarroll posiblemente otras acciones complementarias del
sistema de informacin. Pueden incluso existir varios .cpp, pero solo uno de ellos
tendr la funcin main () y ser quien defina el orden de ejecucin. La figura No. 3.2
muestra en forma esquemtica la forma de unir varios archivos de cabecera y un
solo .cpp para crear una aplicacin.
Figura No. 3.4 Encadenar varios archivos de clases para crear una aplicacin.
Pgina : 43
ARCHIVOS SECUENCIALES
Un archivo puede accesarse por un programa que se ejecuta por lotes (en
modo batch) o por un programa que se ejecuta interactivamente. Con el modo de
acceso por lotes, las transacciones generalmente pueden ordenarse para mejorar el
acceso al archivo maestro, mientras que con accesos interactivos las transacciones
se procesan a medida que llegan. Con el modo de acceso por lotes el desempeo
es normalmente medido por el nmero de transacciones procesadas en el periodo.
Con el acceso interactivo, el desempeo tambin es medido por el tiempo de
respuesta a las transacciones individuales.
CREACION.
ACTUALIZACION.
1.- Altas de nuevos registros al archivo de datos. Por ejemplo cuando entra a
trabajar un nuevo empleado, tambin se tiene que dar de alta en el archivo
maestro de nmina para que pueda generarse en la prxima quincena su recibo
de pago.
Pgina : 44
ARCHIVOS SECUENCIALES
El procedimiento para realizar una alta de acuerdo a la figura No. 3.5, consiste
en lo siguiente :
1.- Crear un objeto tipo ofstream (El del archivo donde se grabarn los nuevos
registros).
2.- Crear un objeto tipo registro de datos (Que es el objeto que contendr los datos
que se van capturando y que se escribirn en el archivo).
3.- Abrir un archivo que se encuentra en algn medio de almacenamiento y ligarlo al
objeto tipo ofstream. En el caso de la figura no. 3.5 se llama nomina.dat.
4.- Se hace una verificacin para investigar si se abri correctamente el archivo de
datos. Si la apertura fue exitosa continuar en el paso 5; en caso contrario se
enva un mensaje de error y dar por terminado el proceso.
5.- Desplegar en el monitor la pantalla de captura en blanco conteniendo :
encabezados, etiquetas que indiquen todos los datos a capturar y los lugares
donde se aceptaran cada uno de los datos.
6.- Teclear todos los datos solicitados en la pantalla de captura y en cada dato pulsar
<return> para pasar al siguiente campo.
7.- Escribir el registro de datos (como objeto) en el archivo (otro objeto), el cual se
adicionar al final del ltimo registro contenido en el archivo.
8.- Deber existir una pregunta para que el usuario indique si desea capturar otro
registro o no. En caso de indicar que se va a capturar otro registro, se ejecutan
los pasos 5, 6 y 7. En caso contrario se continua con el paso 9.
9.- Cerrar el archivo de datos y terminar el proceso.
En el bloque case 1, del programa No. 3.2 que se muestra en el tema III.4
Ejemplo de una Aplicacin, de ste mismo captulo se codifican los pasos
Pgina : 45
ARCHIVOS SECUENCIALES
1.- Crear un objeto tipo ofstream que en el caso de la figura No. 3.6 sera el archivo
llamado depaso.dat. y en el cual se grabarn en forma temporal todos los
registros a excepcin del que se va a eliminar.
2.- Crear un objeto tipo ifstream que sera el archivo llamado nomina.dat, del cual se
leeran registro por registro desde el primero hasta el final del archivo para
eliminar el registro deseado.
3.- Crear un objeto tipo registro de datos, que servir para leer registro por registro
del archivo tipo ifstream.
Pgina : 46
ARCHIVOS SECUENCIALES
Pgina : 47
ARCHIVOS SECUENCIALES
1.- Crear un objeto tipo ofstream que en el caso de la figura No. 3.6 sera el archivo
llamado depaso.dat. y en el cual se grabarn en forma temporal todos los
registros, incluso el modificado.
2.- Crear un objeto tipo ifstream que sera el archivo llamado nomina.dat, del cual se
leeran registro por registro desde el primero hasta el final del archivo con el fin de
encontrar el que se va a modificar.
3.- Crear un objeto tipo registro de datos, que servir para leer registro por registro
del archivo tipo ifstream.
4.- Abrir un archivo que se encuentra en algn medio de almacenamiento y ligarlo al
objeto tipo ofstream (que para el ejemplo se llama depaso.dat).
5.- Abrir un archivo que se encuentra en algn medio de almacenamiento y ligarlo al
objeto tipo ifstream (que para el ejemplo se llama nomina.dat).
6.- Se hace una verificacin para investigar si se abrieron correctamente los dos
archivos. Si la apertura fue exitosa continuar en el paso 7; en caso contrario
enviar un mensaje de error y dar por terminado el proceso.
7.- En el monitor se pide la clave del empleado (que es la llave de bsqueda) para
buscarla en el archivo de entrada.
8.- Dentro de una estructura de repeticin (en el caso del ejemplo se maneja un
while) leer un registro del archivo de entrada , comparar la clave del registro a
modificar con la del registro ledo y si son diferentes; grabar dicho registro en el
archivo depaso.dat. En el caso que ambas llaves coincidan, quiere decir que es
el registro que debe modificar por lo que se mostrar en el monitor.
Pgina : 48
ARCHIVOS SECUENCIALES
RECUPERACIN.
Los procesadores de consulta, son programas que traducen las preguntas del
usuario en instrucciones que son usadas directamente para accesar al archivo de
datos. Un software procesador de consultas muy comn es el SQL (Structured
Query Languaje).
III.3 Mantenimiento.
Pgina : 49
ARCHIVOS SECUENCIALES
Se defini un registro de datos que contiene 4 campos que son : Clave del
empleado, su nombre, sueldo diario y das trabajados. La anterior estructura es con
fines didcticos y es la que est establecida en la figura No. 3.1. Se consider la
clave del empleado como campo llave para poder realizar todas las operaciones
mencionadas en el prrafo anterior.
Pgina : 50
ARCHIVOS SECUENCIALES
/* ====================================================
PROGRAMA QUE MANIPULA UN ARCHIVO
ORGANIZADO EN FORMA SECUENCIAL.
# include <conio.h>
# include <dos.h>
# include <ctype.h>
# include <stdlib.h>
# include <iostream.h>
# include <fstream.h>
# include <iomanip.h>
# include <string.h>
# include <stdio.h>
# include "C:\NOMINA.HPP"
Pgina : 51
ARCHIVOS SECUENCIALES
main()
{
int lClave;
int iOp, iJ;
float fSueldo_quin, fDeduc, fSueldoNeto, fIssste;
float fIspt, fTotalQuin, fTotalDeduc, fTotalnNeto;
ifstream ifMaestro; // Objeto tipo archivo de lectura.
ofstream ofMaestro; // Objeto tipo archivo de escritura.
empleado EMP; // Objeto tipo registro empleado.
do {
clrscr();
gotoxy(17,5);cout<<"INSTITUTO TECNOLOGICO DE CHILPANCINGO";
gotoxy(17,6);cout<<"PROGRAMA DE EJEMPLO PARA LA CREACION Y";
gotoxy(18,8);cout<<"MANIPULACION DE ARCHIVOS ORGANIZADOS";
gotoxy(24,9);cout<<"EN FORMA SECUENCIAL.";
gotoxy(26,11); cout<<"MENU PRINCIPAL";
gotoxy(25,14); cout<<"1] ALTAS.";
gotoxy(25,15); cout<<"2] BAJAS.";
gotoxy(25,16); cout<<"3] CONSULTAS.";
gotoxy(25,17); cout<<"4] MODIFICACIONES.";
gotoxy(25,18); cout<<"5] REPORTE. ";
gotoxy(25,19); cout<<"6] SALIR.";
gotoxy(25,21); cout<<"Elige una opcion: ";
cin>>iOp;
switch(iOp) {
Pgina : 52
ARCHIVOS SECUENCIALES
Pgina : 53
ARCHIVOS SECUENCIALES
Pgina : 54
ARCHIVOS SECUENCIALES
iLineas++;
}
impresora<<endl<<endl;
impresora<<" totales.......... $ ";
impresora<<setw(11)<<fTotalQuin;
impresora<<setw(12)<<fTotalDeduc;
impresora<<setw(10)<<fTotalnNeto;
entrada.close();
impresora<<"\f";
impresora.close();
}
break;
}
}while(iOp!=6);
return 0;
}
Pgina : 55
CAPITULO 4
Archivos
Secuencial-
Indexados
ARCHIVOS SECUENCIAL-INDEXADO
A partir del rea de datos del ejemplo de la figura no. 4.1, se crea el rea de
ndices en donde se manejar una estructura del registro que contenga
exclusivamente dos campos : El campo llave (clave) y la direccin de inicio
(ubicacin) de cada registro. La estructura del registro del rea de ndices queda tal
como se muestra en la figura No. 4.2.
Pgina : 57
ARCHIVOS SECUENCIAL-INDEXADO
Pgina : 58
ARCHIVOS SECUENCIAL-INDEXADO
A la hora de construir el archivo de ndices hay que tener en cuenta los puntos
que se describen a continuacin :
Cualquier campo del archivo puede servir de base para construir el ndice.
Una combinacin de campos de un registro de datos puede servir de base
para construir in ndice. Por ejemplo, para obtener un listado ordenado
alfabticamente, el archivo ndice estar formado por dos o ms campos a la
vez.
Cualquier ndice puede emplearse tanto para el acceso directo, en funcin del
campo indexado, como para el acceso secuencial, segn la secuencia de
dicho campo.
Un determinado archivo puede tener asociados varios archivos ndices, bien
por un campo llave o por una combinacin de ellos. La figura No. 4.5 nos
muestra el caso de un archivo de datos y dos archivos de ndices.
Cuando se modifica el archivo de datos es necesario actualizar todos los
archivos de ndices asociados al archivo de datos. Es una tarea laboriosa
porque en todo momento debe haber una correspondencia entre el archivo de
datos y sus archivos de ndices.
Pgina : 59
ARCHIVOS SECUENCIAL-INDEXADO
//=========================================================
// DEFINICION DE LA CLASE TIPO : EMPLEADO.
// PARA MANEJO DE ARCHIVOS ORGANIZADOS EN FORMA
// SECUENCIAL-INDEXADOS.
//=========================================================
class empleado{
private:
int clave; // DATOS MIEMBRO
char nom[30];
float sdia;
int dias;
public:
empleado(); // FUNCIONES MIEMBRO
Desplegar(int iL);
PedirDatos();
Modifica();
Consultas();
Pgina : 60
ARCHIVOS SECUENCIAL-INDEXADO
Bajas();
imprime();
Datos_Constantes();
~empleado(){};
};
empleado::empleado()
{
dias = clave = 0;
strcpy(nom," \0");
sdia = 0.0;
}
//=========================================================
// DEFINICION DE LA CLASE TIPO : INDICE.
//=========================================================
class Indice {
private :
int clave; // Campo llave.
unsigned int ubicacion; // Campo Ubicacin.
public :
Indice(); // Funciones miembro
~Indice() {};
};
Indice::Indice()
{
clave = ubicacion = 0;
}
Una vez que se tiene la clase, se pueden crear instancias u objetos de la clase
empleado y de la clase ndice. Los objetos creados con la clase empleado
contendrn los cuatro campos acomodados en el orden definido junto con sus
funciones miembro; por otro lado los objetos creados a partir de la clase ndice
contendrn dos campos y sus funciones miembro respectivas.
Pgina : 61
ARCHIVOS SECUENCIAL-INDEXADO
Figura No. 4.6 Se incluye el archivo .hpp con sus clases para crear el ejecutable.
CREACION.
Pgina : 62
ARCHIVOS SECUENCIAL-INDEXADO
secuencial y generar el rea de ndices para poderle hacer todas las operaciones
que se describen ms delante de ste mismo documento.
//============================================================
// PROGRAMA DE EJEMPLO PARA CREAR EL ARCHIVO DE INDICES
// DE UN ARCHIVO SECUENCIAL INDEXADO
// Autor : Jos Luis Hernndez Hernndez.
//============================================================
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <fstream.h>
#include "indice.hpp"
main()
{
Abrir_Archivos(); // Abre Archivo Secuencial y de Indices.
Leer_Archivo(); // Lee Archivo Secuencial y carga Matriz.
Ordenar_Indices(); // Ordena el Arreglo de Indices.
Grabar_Indices(); // Graba los indices en el archivo.
Cierra_Archivo(); // Cierra los Archivos.
return 0;
}
Abrir_Archivos()
{
ifEmpleado.open("c:\\nomina.dat",ios::in | ios::binary);
if (!ifEmpleado)
{
clrscr();
Pgina : 63
ARCHIVOS SECUENCIAL-INDEXADO
ofIndice.open("c:\indices.dat",ios::out | ios::binary);
if (!ofIndice)
{
clrscr();
cout << "El Archivo de <INDICES> no pudo abrirse"<<endl;
cout << "Pulsar <Return> para Salir"<<endl;
getchar();
exit (-1);
}
return 0;
}
Leer_Archivo()
{
int Ubicacion = 0;
Reg = 0;
ifEmpleado.read((char *) &EMP, sizeof(EMP));
while(!ifEmpleado.eof())
{
IND[Reg].clave = EMP.clave;
IND[Reg].ubicacion = Ubicacion;
ifEmpleado.read((char *) &EMP, sizeof(EMP));
Reg++; // Incrementa # Registro
Ubicacion = Ubicacion + sizeof (EMP); // Incrementa Ubicacin
}
Reg--; // Para Conocer No. de Registros
return 0;
}
Ordenar_Indices()
{
int i,j; // Indices para manipular matriz
int Aux1,Aux2;
for (i=0 ; i < Reg - 1; i++)
{
for (j = 0; j < Reg - 1; j++)
{
if ( (IND[j].clave) > (IND[j+1].clave))
{
Aux1 = IND[j].clave;
Aux2 = IND[j].ubicacion;
IND[j].clave = IND[j+1].clave;
IND[j].ubicacion = IND[j+1].ubicacion;
IND[j+1].clave = Aux1;
Pgina : 64
ARCHIVOS SECUENCIAL-INDEXADO
IND[j+1].ubicacion = Aux2;
}
}
}
return 0;
}
Grabar_Indices()
{
int i;
for(i=0; i<= Reg ; i++)
{
ofIndice.write((char *) &IND, sizeof(IND));
cout << IND[i].clave << " " << IND[i].ubicacion << endl;
}
return 0;
}
Cierra_Archivo()
{
ifEmpleado.close();
ofIndice.close();
return 0;
}
Programa No. 4.2 Programa para la creacin del rea de indices.
ACTUALIZACION.
Pgina : 65
ARCHIVOS SECUENCIAL-INDEXADO
Caber hacer mencin que dicha operacin tiene que hacerse a los archivos
donde se encuentra en rea de datos y tambin al rea de ndice.
Cabe hacer mencin que el rea de datos es abierta como archivo de entrada
/ salida, debido a que se lee un registro de datos, se corrigen algunos campos y se
vuelve a rescribir en el mismo lugar que ocupa fsicamente.
RECUPERACIN.
III.3 Mantenimiento.
Pgina : 66
ARCHIVOS SECUENCIAL-INDEXADO
Se defini un registro de datos que contiene 4 campos que son : Clave del
empleado, su nombre, sueldo diario y das trabajados. La anterior estructura es con
fines didcticos y es la que est establecida en la figura No. 3.1. Se consider la
clave del empleado como campo llave para poder realizar todas las operaciones
mencionadas en el prrafo anterior.
OPERACIN DE ALTAS.
/* ==============================================================
PROGRAMA QUE DA DE ALTAS REGISTROS A UN ARCHIVO INDEXADO
CON LA FILOSOFIA DE LA PROGRAMACION ORIENTADA A OBJETOS.
AUTOR: JOSE LUIS HERNANDEZ HERNANDEZ
===============================================================*/
# include <conio.h>
# include <ctype.h>
# include <stdlib.h>
# include <iostream.h>
# include <fstream.h>
# include <string.h>
# include <stdio.h>
main()
Pgina : 67
ARCHIVOS SECUENCIAL-INDEXADO
{
clrscr();
char Op = 'n';
empleado EMP; // Crea un objeto Tipo Registro Empleado.
Indices Ind; // Objeto tipo indice..
if (!Arch_Datos)
{
cout << "No se abrio el archivo de datos" << endl;
cout << "<RETURN> para terminar ..." << endl;
getchar();
exit (-1);
}
if (!Arch_Indice)
{
cout << "No se abrio el archivo de indices" << endl;
cout << "<RETURN> para terminar ..." << endl;
getchar();
exit (-1);
}
do{
EMP.limpiar();
EMP.PedirDatos();
Ind.ubicacion = Arch_Datos.tellp();
Ind.clave = EMP.clave;
Arch_Datos.write((char *) &EMP, sizeof(EMP));
Arch_Indice.write((char *) &Ind, sizeof(Ind));
gotoxy(24,20);cout<<"DESEA CAPTURAR OTRO REGISTRO : ";
Op = getchar();
}while(toupper(Op)=='S');
Arch_Datos.close();
Arch_Indice.close();
}
Programa No. 4.3 Programa dar de alta un registro en el area de datos y en el area de indice.
Pgina : 68
ARCHIVOS SECUENCIAL-INDEXADO
OPERACIN DE MODIFICACION.
/* ================================================================
PROGRAMA QUE SIRVE PARA REALIZAR MODIFICACIONES A UN
ARCHIVO ORGANIZADO EN FORMA SECUENCIAL-INDEXADA.
SE UTILIZA LA FILOSOFIA DE LA PROGRAMACION ORIENTADA A OBJETOS
AUTOR : JOSE LUIS HERNANDEZ HERNANDEZ
===============================================================*/
# include <conio.h>
# include <ctype.h>
# include <stdlib.h>
# include <iostream.h>
# include <fstream.h>
# include <string.h>
# include <stdio.h>
# include "INDICE.HPP" // Se incluye el archivo donde se
// encuentra la clase (del registro
// de datos).
main()
{
int Clave; // Clave para pedir por teclado.
empleado EMP; // Crea un objeto Tipo Registro Empleado
Indices IND; // Crea un objeto Tipo Indice.
fstream Archivo_Datos;
fstream Archivo_Indice;
Pgina : 69
ARCHIVOS SECUENCIAL-INDEXADO
{
Archivo_Datos.seekg(IND.ubicacion);
Archivo_Datos.read((char *) &EMP, sizeof(EMP));
EMP.Desplegar_Registro();
EMP.PedirDatos();
Archivo_Datos.seekg(IND.ubicacion);
Archivo_Datos.write((char *) &EMP, sizeof(EMP));
Archivo_Indice.close();
Archivo_Indice.close();
return 0;
}
Archivo_Indice.read((char *) &IND, sizeof(IND));
}
gotoxy(40,22);
cout << "NO SE ENCONTRO EL REGISTRO BUSCADO ......." << endl;
Archivo_Indice.close();
Archivo_Indice.close();
return 0;
}
Programa No. 4.4 Modificaciones a un registro en el area de datos sin modificar el area de
indice.
Pgina : 70
CAPITULO 5
Archivos Directos
ARCHIVOS DIRECTOS
Pgina : 72
ARCHIVOS DIRECTOS
Cuando un archivo directo se establece debe definirse una relacin que ser
utilizada para obtener una direccin fsica a travs de un valor del campo llave. Esta
relacin es llamada funcin de mapeo (tambin conocida como transformacin KTA
-Key To Address-). Se utiliza la siguiente funcin de transformacin :
Pgina : 73
ARCHIVOS DIRECTOS
Este mtodo puede producir sinnimos, es decir que el valor octal sea el
mismo. As por ejemplo las claves : COSA, SACO, CASO y ASCO.
Producen el mismo valor por lo que se debe considerar una rea de
desborde para stos casos.
Pgina : 74
ARCHIVOS DIRECTOS
Por ejemplo, el campo llave con el valor 97234 para un archivo de 1,200
posiciones fsicas se transformar en la direccin lgica siguiente :
Se toman los primeros cuatro dgitos para formar un valor y los ltimos cuatro
dgitos para formar el otro valor; ambos se suman y se obtiene la direccin
lgica donde se almacenar el registro.
1720
+ 7359
-------------
9 0 7 9 Que es la direccin lgica del registro.
Pgina : 75
ARCHIVOS DIRECTOS
/* ============================================================
CLASE EMPLEADO, QUE SERA UTILIZADA PARA LA
CREACION DE REGISTROS PARA SER UTILIZADOS
EN UN ARCHIVO ORGANIZADO EN FORMA DIRECTA.
AUTOR : JOSE LUIS HERNANDEZ HERNANDEZ
==============================================================*/
class empleado{
private :
int clave; // DATOS MIEMBRO
char nom[30];
float sdia;
int dias;
public :
empleado(); // FUNCIONES MIEMBRO
Pedir_Datos();
int Pedir_Clave();
Modifica();
Consultas();
Datos_Constantes();
~empleado() { };
};
empleado::empleado()
{
dias = clave = 0;
strcpy(nom," \0");
sdia = 0.0;
}
Pgina : 76
ARCHIVOS DIRECTOS
int empleado::Pedir_Clave()
{
int Cve;
clrscr();
empleado::Pedir_Datos()
{ clrscr();
gotoxy(10,5); cout<<"ALTAS DE UN REGISTRO A UN ARCHIVO DIRECTO.";
Datos_Constantes();
gotoxy(46,10); cout << clave;
fflush(stdin);
gotoxy(46,12); gets(nom);
fflush(stdin);
gotoxy(46,14); cin>>sdia;
fflush(stdin);
gotoxy(46,16); cin>>dias;
fflush(stdin);
return 0;
}
empleado::Modifica()
{ clrscr();
char nomm[30], diass[3],sdiaa[10];
gotoxy(10,5);
cout<<"MODIFICACION A UN REGISTRO DE UN ARCHIVO DIRECTO.";
Datos_Constantes();
gotoxy(46,10); cout<< clave;
gotoxy(46,12); cout<< nom;
gotoxy(46,14); cout<< sdia;
gotoxy(46,16); cout<< dias;
gotoxy(48,12); gets(nomm);
fflush(stdin);
gotoxy(48,14); gets(sdiaa);
fflush(stdin);
gotoxy(48,16); gets(diass);
fflush(stdin);
if (diass[0] != '\x0') dias = atoi(diass);
if (sdiaa[0] != '\x0') sdia = atof(sdiaa);
if (nomm[0] != '\x0')
{ strcpy(nom," ");
strcpy(nom,nomm);
}
return 0;
}
Pgina : 77
ARCHIVOS DIRECTOS
empleado::Consultas()
{
gotoxy(10,5);
cout<<"CONSULTAS DE UN REGISTRO EN UN ARCHIVO DIRECTO.";
Datos_Constantes();
gotoxy(46,10); cout<< clave;
gotoxy(46,12); cout<< nom;
gotoxy(46,14); cout<< sdia;
gotoxy(46,16); cout<< dias;
gotoxy(50,22); cout<<"<Return> para continuar";
getchar();
return 0;
}
empleado::Datos_Constantes()
{
gotoxy(20,10); cout<<"Clave del empleado : ";
gotoxy(20,12); cout<<"Nombre del empleado : ";
gotoxy(20,14); cout<<"Sueldo diario : ";
gotoxy(20,16); cout<<"No. de Dias trabajados : ";
return 0;
}
Programa no. 5.1 Codificacin de la clase empleado para usarla en Archivos Directos.
Los archivos organizados en forma directa son los ideales para utilizarlos en
sistemas de informacin que tienen accesos interactivos o en tiempo real. Lo
anterior es debido a que no importa la cantidad de registros que tenga el archivo de
datos. Las altas, bajas, modificaciones o consultas sern rapidsimas porque el
acceso lo hace en forma directa sin pasar por ningn registro previo.
Pgina : 78
ARCHIVOS DIRECTOS
ACTUALIZACION.
2.- Altas.- Para insertar elementos en archivos directos se utilizan tcnicas como
son las tcnicas de clculo de direcciones, en stas tcnicas tienen lugar las
llamadas "coalisiones" que no son mas que la repeticin de una localidad al
momento de almacenar un dato. Las colisiones no pueden ser eliminadas, lo
mas que se puede hacer es tratar de minimizarlas y para ello existen distintos
mtodos que se describieron anteriormente.
Pgina : 79
ARCHIVOS DIRECTOS
RECUPERACIN.
Pgina : 80
ARCHIVOS DIRECTOS
IV.3 Mantenimiento.
Se defini un registro de datos que contiene 4 campos que son : Clave del
empleado, su nombre, sueldo diario y das trabajados. La anterior estructura es con
fines didcticos y es la que est establecida desde la figura No. 3.1 de ste
documento.
Pgina : 81
ARCHIVOS DIRECTOS
//============================================================
// PROGRAMA DE EJEMPLO PARA CREAR EL ESQUELETO DE UN
// ARCHIVO DIRECTO.
//
// Autor : Jos Luis Hernndez Hernndez.
//============================================================
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <fstream.h>
#include <dos.h>
#include "emplea.hpp"
main()
{
Abrir_Archivo(); // Abre Archivo Secuencial y de Indices.
Grabar_Registro(); // Graba Registros en blanco.
Cierra_Archivo(); // Cierra el Archivo.
return 0;
}
Abrir_Archivo()
{
ofDirecto.open("c:\\directo.dat",ios::out | ios::binary);
if (!ofDirecto)
{
clrscr();
cout << "El Archivo <DIRECTO> no pudo abrirse"<<endl;
cout << "Pulsar <Return> para Salir"<<endl;
getchar();
exit (-1);
}
return 0;
}
Pgina : 82
ARCHIVOS DIRECTOS
Grabar_Registro()
{
int i, Reg;
clrscr();
gotoxy(10,8);
cout << "CREACION DE UN ARCHIVO DIRECTO";
gotoxy(10,12);
cout << "CANTIDAD DE REGISTROS QUE TENDRA EL ARCHIVO DIRECTO : ";
cin >> Reg;
for(i=0; i<= Reg ; i++)
{
ofDirecto.write((char *) &EMP, sizeof(EMP));
gotoxy(20,18); cout << "Registro Creado : " << i;
delay(100);
}
return 0;
}
Cierra_Archivo()
{
ofDirecto.close();
gotoxy(30,22);
cout << "ARCHIVO DIRECTO CREADO EXITOSAMENTE.";
return 0;
}
//============================================================
// PROGRAMA DE EJEMPLO PARA DAR ALTAS DE REGISTROS
// A UN ARCHIVO DIRECTO.
// Autor : Jos Luis Hernndez Hernndez.
//============================================================
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <fstream.h>
#include <dos.h>
#include "emplea.hpp"
Pgina : 83
ARCHIVOS DIRECTOS
main()
{
Abrir_Archivo(); // Abre Archivo Directo.
Alta_Registro(); // Da de alta un registro en forma Directa.
Cierra_Archivo(); // Cierra el Archivo.
return 0;
}
Abrir_Archivo()
{
ofDirecto.open("c:\\directo.dat",ios::in | ios::out |ios::ate | ios::binary);
if (!ofDirecto)
{
clrscr();
cout << "El Archivo <DIRECTO> no pudo abrirse"<<endl;
cout << "Pulsar <Return> para Salir"<<endl;
getchar();
exit (-1);
}
return 0;
}
Alta_Registro()
{
int Cve, ubicacion;
Cve = EMP.Pedir_Clave();
EMP.clave = Cve;
int Ubi = Cve * sizeof(EMP); // Hace el clculo para encontrar
ubicacion = Ubi - sizeof(EMP); // la ubicacin lgica en el archivo.
EMP.Pedir_Datos();
ofDirecto.seekp(ubicacion, ios::beg);
ofDirecto.write((char *) &EMP, sizeof(EMP));
return 0;
}
Cierra_Archivo()
{
ofDirecto.close();
gotoxy(30,22); cout << "REGISTRO GRABADO EXITOSAMENTE.";
return 0;
}
Pgina : 84
ARCHIVOS DIRECTOS
//============================================================
// PROGRAMA DE EJEMPLO PARA DAR BAJAS DE REGISTROS
// A UN ARCHIVO DIRECTO.
// Autor : Jos Luis Hernndez Hernndez.
//============================================================
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <fstream.h>
#include <dos.h>
#include "emplea.hpp"
main()
{
Abrir_Archivo(); // Abre Archivo Directo.
Eliminar_Registro(); // Eliminar un registro en forma Directa.
Cierra_Archivo(); // Cierra el Archivo.
return 0;
}
Abrir_Archivo()
{
ofDirecto.open("c:\\directo.dat",ios::in | ios::out |ios::ate | ios::binary);
if (!ofDirecto)
{
clrscr();
cout << "El Archivo <DIRECTO> no pudo abrirse"<<endl;
cout << "Pulsar <Return> para Salir"<<endl;
getchar();
exit (-1);
}
return 0;
}
Pgina : 85
ARCHIVOS DIRECTOS
Eliminar_Registro()
{
int Cve, ubicacion;
Cve = EMP.Pedir_Clave();
int Ubi = Cve * sizeof(EMP);
ubicacion = Ubi - sizeof(EMP);
ofDirecto.seekp(ubicacion, ios::beg);
ofDirecto.write((char *) &EMP, sizeof(EMP));
return 0;
}
Cierra_Archivo()
{
ofDirecto.close();
gotoxy(30,22); cout << "REGISTRO ELIMINADO EXITOSAMENTE.";
return 0;
}
//=================================================================
// PROGRAMA DE EJEMPLO PARA HACER MODIFICACIONES A REGISTROS
// A UN ARCHIVO DIRECTO.
// Autor : Jos Luis Hernndez Hernndez.
//=================================================================
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <fstream.h>
#include <dos.h>
#include "emplea.hpp"
Pgina : 86
ARCHIVOS DIRECTOS
main()
{
Abrir_Archivo(); // Abre Archivo Directo.
Modificar_Registro(); // Modificar un registro en forma Directa.
Cierra_Archivo(); // Cierra el Archivo.
return 0;
}
Abrir_Archivo()
{
ofDirecto.open("c:\\directo.dat",ios::in | ios::out |ios::ate | ios::binary);
if (!ofDirecto)
{
clrscr();
cout << "El Archivo <DIRECTO> no pudo abrirse"<<endl;
cout << "Pulsar <Return> para Salir"<<endl;
getchar();
exit (-1);
}
return 0;
}
Modificar_Registro()
{
int Cve, ubicacion;
Cve = EMP.Pedir_Clave();
int Ubi = Cve * sizeof(EMP);
ubicacion = Ubi - sizeof(EMP);
ofDirecto.seekp(ubicacion, ios::beg); // Coloca el puntero en la ubicacin lgica
ofDirecto.read((char *) &EMP, sizeof(EMP)); // Lee el registro.
EMP.Modifica(); // Cambia los campos.
ofDirecto.seekp(ubicacion, ios::beg); // Regresa el Puntero.
ofDirecto.write((char *) &EMP, sizeof(EMP)); // Reescribe en registro.
return 0;
}
Cierra_Archivo()
{
ofDirecto.close();
gotoxy(30,22);
cout << "REGISTRO MODIFICADO EXITOSAMENTE.";
return 0;
}
Pgina : 87
CAPITULO 6
Correspondencia
entre la llave y la
direccin fsica
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
DIRECCIONAMIENTO DIRECTO.
Pgina : 89
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
Pgina : 90
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
DIRECCIONAMIENTO INDIRECTO.
Pgina : 91
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
Mtodo de rbol B+
Pgina : 92
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
VI.2.1 Directa.
Con ste otro mtodo, cada pista del paquete est dividida en
sectores, como se ilustra en la figura No. 6.4. Cada sector es un
rea de almacenamiento para un nmero fijo de registros. Una
direccin del registro es simplemente su nmero de sector. Dado
un nmero de sector, el controlador del disco puede determinar
Pgina : 93
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
Pgina : 94
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
Pgina : 95
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
Figura No. 6.5 Formacin del Nmero de control de un alumno del Tecnolgico.
Pgina : 96
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
VI.2.2 Asociacin.
Pgina : 97
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
Figura 6.7 Asociacin cuando existen 2 reas de ndices y una rea de datos.
Pgina : 98
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
De acuerdo a la figura No. 6.7, el rea de datos est asociado con una rea de
ndice por la clave de la persona y con otra rea de ndice por el nombre de la
persona. Con cualquiera de los dos datos (clave y nombre) es posible accesar al
registro respectivo que se encuentra en el rea de datos.
La forma del esqueleto que se crea puede apreciarse en la figura No. 6.8 y
que considera un rea del 10% para posibles colisiones.
Figura No. 6.8 Esqueleto de un archivo relativo que considera una rea para colisiones.
Pgina : 99
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
En algunas ocasiones puede crearse una rutina personal para crear los
nmero aleatorios; aunque el resultado sern nmeros pseudoaleatorios.
TRUNCAMIENTO.
Una vez que se obtuvo un resultado, se toma la cantidad de dgitos que tendr
la direccin relativa objetiva empezando de derecha a izquierda y los dgitos de
mayor valor son truncados para de esa forma obtener la direccin relativa.
68 654 321
A continuacin se toman los tres valores obtenidos y se colocan uno abajo del
otro, ajustandolos de izquierda a derecha y sumandose de la forma siguiente :
68
+ 654
321
1655
Pgina : 100
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
SELECCIN.
ANLISIS DE FRECUENCIAS.
Finalmente, se toman las columnas con mayor variacin y tantas como dgitos
se requieren. Se aplica un factor de ajuste para reducir el porcentaje de colisiones.
Pgina : 101
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
Este mtodo consiste en dividir una llave dada entre un numero primo
seleccionado con anterioridad, y finalmente utilizar el resultado de la operacin como
una direccin relativa.
Pgina : 102
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
La figura No. 6.10 nos muestra como obtener la ubicacin fsica utilizando la
tcnica de divisin por nmero primo, considerando el valor 5003 como nmero
primo.
Figura No. 6.10 Ubicacin fisica de un registro con la divisin por nmero primo.
CAMBIO DE BASE.
Por ejemplo supongase que se desea generar las direcciones fsicas entre 0 y
99 y se considera que se cambiar la base 10 a base 8, tal como se muestra en la
figura No. 6.11.
Pgina : 103
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
MULTIPLICACIN.
CUADRADO.
La tcnica por medio del cuadrado consiste en tomar la llave del registro y
elevarla al cuadrado, despus se extraen algunos dgitos especificados de la mitad
del resultado para constituir la direccin relativa.
Pgina : 104
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
La figura No. 6.13 ilustra el uso de la tcnica del cuadrado para llaves que
tienen 9 digitos y que se extraen 4 digitos del centro para tomarlo como ubicacin
fsica del registro.
Figura No. 6.13 Uso del cuadrado para obtener la direccin fsica.
Para elegir alguna de las ocho formas, se deben de considerar dos puntos que
son muy importantes :
Pgina : 105
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
BYTES J O S E L U I S
74 + 79 + 83 + 69 + 32 + 76 + 85 + 73 + 83 = 654
Pgina : 106
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIN FSICA
Pgina : 107
CAPITULO 7
Otros mtodos de
organizacin de
archivos y
busquedas de
economas.
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
Pgina : 109
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
Pgina : 110
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
Pgina : 111
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
estn en memoria RAM y cuales en disco, sus direcciones reales, etc; crece y
provoca mucha `sobrecarga' (overhead). Por otro lado, si las pginas son muy
grandes, el overhead disminuye pero entonces puede ocurrir que se desperdicie
memoria en procesos pequeos.
Pgina : 112
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
Como se observa en la figura 7.4, una direccin virtual `v' = (b,d) est formada
por un nmero de pgina virtual `b' y un desplazamiento `d'. Por ejemplo, si el
sistema ofrece un espacio de direcciones virtuales de 64 kbytes, con pginas de 4
kbytes y la memoria RAM slo es de 32 kbytes, entonces se tienen 16 pginas
virtuales y 8 reales. La tabla de direcciones virtuales contiene 16 entradas, una por
cada pgina virtual. En cada entrada, o registro de la tabla de direcciones virtuales
se almacenan varios datos: si la pgina est en disco o en memoria, quin es el
dueo de la pgina, si la pgina ha sido modificada o es de lectura nada mas, etc.
Pero el dato que nos interesa ahora es el nmero de pgina real que le corresponde
a la pgina virtual. Obviamente, de las 16 virtuales, slo ocho tendrn un valor de
control que dice que la pgina est cargada en memoria RAM, as como la direccin
real de la pgina, denotada en la figura 7.4 como b' . Por ejemplo, supngase que
para la pgina virtual nmero 14 la tabla dice que, efectivamente est cargada y es la
pgina real 2 (direccin de memoria 8192). Una vez encontrada la pgina real, se le
suma el desplazamiento, que es la direccin que se desea dentro de la pgina
buscada ( b' + d ).
Pgina : 113
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
Pgina : 114
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
Al ocurrir el fallo de pgina, el sistema operativo debe elegir una pgina para
retirarla de la memoria y usar el espacio para la pgina que se necesita para
desbloquear el sistema y que el hardware pueda seguir trabajando. Si la pgina por
eliminar de la memoria fue modificada, se debe volver a escribir al disco para
mantener la informacin actualizada; de lo contrario, si la pgina no fue modificada
no es necesario rescribir la informacin a disco y la pgina que se carga simplemente
se escribe sobre la pgina que se va a borrar de la memoria. La figura 7.5 muestra
grficamente un intercambio de pginas entre la memoria principal y el disco
(memoria secundaria).
Figura No. 7.5 Eliminacin de la memoria principal una pgina que no est en uso y se
reemplaza por otra pgina que se requiere.
Pgina : 115
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
Pgina : 116
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
Pgina : 117
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
Cada uno de los descriptores del segmento contiene la longitud del segmento
(de 0 a 16 pginas), bits de proteccin que indican si el segmento se puede leer o
escribir y un apuntador a la tabla de pginas. Cuando el Sistema Operativo da inicio
a un proceso carga el nmero de proceso de 4 bits y los 6 bits de alto orden (posic.
Ms significativas) de la direccin virtual de 22 bits y los combina en un nmero de
10 bits que se usa como ndice en la tabla de segmentos y para localizar el descriptor
del segmento relevante. Luego verifica los bits de proteccin en el descriptor. Si el
acceso est permitido la MMU verifica el nmero de pgina que se extrajo de la
direccin virtual respecto al campo de longitud del segmento para ver si el segmento
es suficientemente grande. Si lo es el nmero de pgina se utiliza como ndice en
la tabla de pginas, cuya direccin se proporciona en el descriptor del segmento.
Una vez que se halla el nmero del frame, ste se combina con el desplazamiento
para acceder a la memoria fsica.
Pgina : 118
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
Problemas de la segmentacin
Ventajas:
Sistemas de Archivos
Pgina : 119
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
Pgina : 120
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
CASOS DE INSERCIN :
Figura No. 7.8 Archivo VSAM luego de una insercin en un intervalo no lleno.
Pgina : 121
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
Como el intervalo est lleno y la insercin debe hacerse all, se dice que dicho
intervalo desbord por lo cual debe ser dividido en dos intervalos semi-llenos. Esta
fisin puede presentar dos casos suplementarios, ellos son:
Este caso se muestra en la Figura No. 7.9, con la insercin del registro con
clave 29. Siguiendo los mismos pasos que en el primer caso, el intervalo
donde este registro debe ser insertado es el mismo intervalo anterior.
Al no haber un intervalo libre en el rea, el intervalo que desborde tendr que ser
dividido y dicha fisin har que el rea desborde a su vez, tenindose que fisionar
el rea tambin. La fisin de un rea se realiza de igual manera que la de los
intervalos. La insercin de los registros de claves 27 y 28 consecutivamente
hacen que el rea 1 desborde, crendose una nueva rea que es la nmero 2 y
se puede apreciar en la figura No. 7.10.
Pgina : 122
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
Ventajas:
Desventajas:
Pgina : 123
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
2.- La segunda es la de los mtodos de uso ms general, por los que se les puede
incluir en paquetes de software de uso general, en el hardware o en
microprogramas. Muchas firmas especializadas ofrecen
comercialmente paquetes de software para reducir el tamao de los
archivos.
Pgina : 124
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
Pgina : 125
OTROS MTODOS DE ORGANIZACIN DE ARCHIVOS Y BUSQUEDAS DE ECONOMAS
Pgina : 126
CAPITULO 8
Acceso Multi-
llaves
ACCESO MULTI-LLAVES
En los ltimos aos ha existido mucho inters en los sistemas de archivos que
guardan mltiples tipos de datos tales como multimedia, imgenes, sonido y vdeo.
En dichas aplicaciones es muy conveniente implementar un sistema de archivos que
pueda manejar mltiples llaves de acceso.
La organizacin multilista.
La inversin.
Pgina : 128
ACCESO MULTI-LLAVES
lenguaje pueden establecer una interfase directa con este manejo de archivos, o
pueden generar llamadas a estas rutinas de manejo.
Pgina : 129
ACCESO MULTI-LLAVES
Pgina : 130
ACCESO MULTI-LLAVES
Pgina : 131
ACCESO MULTI-LLAVES
Desde el punto de vista comn, el uso del trmino inversin implica que los
valores de los datos indexados han sido sacados del registro de datos y residen
solamente en el correspondiente ndice de inversin.
En los archivos de listas mltiples con listas de longitud controlada, sta puede
ir desde un eslabn por lista hasta una longitud suficiente para incluir todos los tems.
En el primer caso hablamos de una lista invertida, en sta hay una entrada de ndice
de cada clave, para cada registro.
De esta manera, se requiere un nico acceso a los datos para cada registro
que es la respuesta a una consulta. Suponiendo que es posible examinar
rpidamente los ndices secundarios, la organizacin de lista invertida da la
respuesta ms rpida a las consultas en tiempo real, porque no hay lista que seguir.
En cambio, los ndices pueden resultar tan extensos (habr que almacenarlos en
dispositivos secundarios) que su propia organizacin llega a constituir un problema.
Pgina : 132
ACCESO MULTI-LLAVES
Pgina : 133
ACCESO MULTI-LLAVES
Por cada campo llave, puede haber una o varias listas ligadas dependiendo la
restriccin que se le haya impuesto a cada una de las listas ligadas de los ndices.
Pgina : 134
ACCESO MULTI-LLAVES
Pgina : 135
ACCESO MULTI-LLAVES
Pgina : 136
ACCESO MULTI-LLAVES
1. Los ndices para ver qu zonas del hardware contienen el atributo Negro y el
atributo mueca. Si observamos la Figura No. 8.5 nos damos cuenta
que la zona 4 no contiene el atributo mueca, y las zonas 1,3,5 no tienen
el atributo negro. Por lo tanto, solo hay que explorar la zona 2, pero slo
tiene dos registros con el atributo negro.
2. Por lo tanto solo se examinar los registros que contienen el atributo negro para
ver si hay muecas negras.
Otra versin de las multilistas celulares o particionada celular, son las listas
invertidas celulares en paralelo en las cuales las posiciones de las celdas podrn
seleccionarse de forma que dos o ms de ellas puedan explorarse en paralelo, con el
fin de reducir los tiempos de respuesta del sistema.
Pgina : 137
ACCESO MULTI-LLAVES
Las celdas a que se refieren los ndices son cilindros, varios de los cuales
pueden ser explorados en paralelo. Cada cilindro posee un ndice propio para
acelerar la bsqueda dentro de ese cilindro y para que no sea necesario leer todas
las pistas de ste.
Pgina : 138
ACCESO MULTI-LLAVES
Pgina : 139
ACCESO MULTI-LLAVES
Figura No. 8.6 Adicin de un registro en las listas ligadas de profesin y categora.
Pgina : 140
ACCESO MULTI-LLAVES
Pgina : 141
CAPITULO 9
Evaluacin
General de
Sistemas de
Archivos
EVALUACIN GENERAL DEL SISTEMA DE ARCHIVOS
Pgina : 143
EVALUACIN GENERAL DEL SISTEMA DE ARCHIVOS
Cumplir con las necesidades de gestin de datos y con los requisitos del
usuario, que incluye el almacenamiento de datos y la capacidad de ejecutar
las operaciones cotidianas.
Garantizar, en la medida de lo posible, que los datos en el archivo sean
vlidos.
Optimizar el rendimiento, ambos desde el punto de vista del sistema en
trminos de productividad global, y como punto de vista del usuario en
tiempos de respuesta.
Para proveer soporte de E/S para una variedad de tipos de dispositivos de
almacenamiento.
Para minimizar o eliminar la posibilidad de perdida o destruccin de datos.
Para proveer un conjunto estndar de rutinas de E/S.
Para proveer soporte de E/S para mltiples usuarios, en caso de sistemas
multiusuarios.
Pgina : 144
EVALUACIN GENERAL DEL SISTEMA DE ARCHIVOS
Este captulo tiene como fin evaluar en forma general un sistema de archivos;
pero como para ello se requiere contar con un sistema de archivos real y no se
cuenta, lo que se hizo fue tomar datos ficticios. A dichos datos ficticios se les
aplicaron ciertas operaciones aritmticas y ciertas consideraciones; para finalmente
obtener estimaciones del uso de un sistema de archivos tales como : anlisis de los
beneficios del sistema, necesidades de almacenamiento y una comparacin entre
costo-beneficio.
Pgina : 145
EVALUACIN GENERAL DEL SISTEMA DE ARCHIVOS
Hay que tener en mente que generalmente habr que hacer las estimaciones
ms de una vez. Suele hacerse un conjunto de estimaciones en las primeras etapas
de un proyecto, pero pueden requerirse muchas veces, a medida que los usuarios y
la administracin exploran las diferentes posibilidades de combinaciones. Un
ejemplo obvio de esto es el posible sacrificio de funcionalidad a cambio de tiempo y
viceversa (por ejemplo, el administrador del proyecto puede decir al usuario: "Estoy
prcticamente seguro de que podemos entregarle el sistema para el 1 de enero si no
metemos las funciones X, Y y Z"; otro ejemplo es el de la relacin inversa entre
personas y tiempo (por ejemplo, el usuario puede decirle al administrador del
proyecto, "Si tuviera tres programadores ms, podra terminar el proyecto a tiempo".
Podra tomar varias iteraciones que el equipo del proyecto, la administracin y la
comunidad usuaria lleguen a un acuerdo aceptable.
Desafortunadamente es muy difcil hacer una estimacin real del uso del
sistema de archivos y lo que se propone hacer es la aplicacin de programas
sintticos para emular el trabajo real de procesamiento de un sistema de cmputo.
Pgina : 146
EVALUACIN GENERAL DEL SISTEMA DE ARCHIVOS
Beneficios tcticos
Pgina : 147
EVALUACIN GENERAL DEL SISTEMA DE ARCHIVOS
Pgina : 148
EVALUACIN GENERAL DEL SISTEMA DE ARCHIVOS
Debido a que el fin es hacer la estimacin del uso del sistema de archivos
en un sistema de informacin, se tiene que investigar los datos que se van a
almacenar en los archivos, por lo que se hace necesario hacer las preguntas
siguientes :
Pgina : 149
EVALUACIN GENERAL DEL SISTEMA DE ARCHIVOS
Tabla No. 9.1 Concentrado para conocer la cantidad de espacio de almacenamiento secundario
requerido.
Cabe hacer mencin que los nombres de los archivos y los datos que se
manejan en la Tabla No. 9.1, son ficticios y nicamente se utilizan para
ejemplificar y obtener las necesidades de almacenamiento de un sistema de
informacin.
Una vez que se conoce la cantidad de bytes que ocuparn los archivos de
datos, se hace un clculo del 10 % adicional para los ndices de los archivos
Indexados y multillave, obtenindose los datos que se muestran en la tabla No. 9.2.
Una vez que se obtienen los datos, se hace una estimacin de un 50 % para
contener los programas de la aplicacin, se consideran 900 megabytes para el
Sistema Operativo y dos megabytes para un software antivirus que ser
actualizado mensualmente o antes si es necesario, obtenindose el total que se
muestra en la Tabla No. 9.3.
Pgina : 150
EVALUACIN GENERAL DEL SISTEMA DE ARCHIVOS
De los datos plasmados en las Tablas No. 9.1 al 9.4 se deduce que el disco
duro como medio de almacenamiento requerido para ste pequeo caso de estudio,
debe considerarse de al menos 3 Gigabytes al iniciar operaciones y al ao debe
tener una capacidad para almacenar 8 gigabytes y de esa forma se hace el clculo
para los aos posteriores.
Una buena prctica es adquirir un disco duro con una capacidad suficiente
para que funcione correctamente en al menos 3 aos y posteriormente se ver la
posibilidad de crecimiento o escalamiento de la computadora segn sea el caso.
Pgina : 151
EVALUACIN GENERAL DEL SISTEMA DE ARCHIVOS
ANLISIS DE COSTOS
Pgina : 152
EVALUACIN GENERAL DEL SISTEMA DE ARCHIVOS
Costos operacionales
Pgina : 153
EVALUACIN GENERAL DEL SISTEMA DE ARCHIVOS
computadora principal centralizada que ya est instalada estos costos pueden estar
incluidos en el costo global del hardware. Sin embargo, si se est desarrollando un
sistema completamente nuevo que tendr su propio local de operaciones, ste
podra ser un gasto importante.
As, probablemente tendr que demostrar los costos y beneficios que del
sistema a lo largo de cierto periodo de tiempo. Existen cuatro mtodos comunes
para hacer comparar los costos contra los beneficios. Dichos mtodos se enumeran
a continuacin :
Flujo de efectivo.
Rendimientos de inversiones (en ingles, ROI).
Tasa interna de rendimiento (IRR).
Valor neto actual (VNA).
.
Aplicando los cuatro mtodos comunes, se podr hacer la comparacin de los
costos con los beneficios y en ese momento se podr evaluar si el sistema de
archivos vino a resolver un problema a bajo costo o si su utilizacin sali mas cara
que como vena operando.
Pgina : 154
BIBLIOGRAFIA
Pgina : 155
[t11] Fundamentos de Programacin.
Luis Joyanes Aguilar, Luis Rodrguez Bahena y Matilde Fernndez Azuela.
Mc. Graw Hill.
[i-1] http://www.lafacu.com/apuntes/informatica/organizacion_de_computadoras/default.htm
[i-2] http://www.itlp.edu.mx/publica/tutoriales/admonarch/index.htm
[i-3] http://www.info-ab.uclm.es/labelec/solar/Discos/33cdrom.htm
[i-4] http://www.domotica.net/ir'www.monografias.com/trabajos/perifericos/perifericos.shtml
[i-5] http://www.inf.udec.cl/~sistcomp/c5.html
[i-6] http://www.lafacu.com/apuntes/informatica/Los_archivos_II/default.htm
[i-7] http://www.uap.edu.pe/Fac/02/trabajos/02119/archivos.htm
[i-8] http://www.intel.com
Pgina : 156
GLOSARIO DE TERMINOS.
Bloque.- Es una coleccin de registros contiguos registrados como una sola unidad;
algunas veces es llamado registro fsico.
Colisin.- Situacin que ocurre cuando dos valores de llaves diferentes se mapean a
la misma direccin fsica.
Pgina : 157
Direccionamiento por Cilindro.- Es una tcnica para el direccionamiento de los
registros de datos sobre un disco duro, donde una direccin de registro es
su nmero de cilindro, numero de superficie y nmero de registro.
Indice de inversin.- Es un ndice que contiene todos los valores que la llave
primaria o secundaria tiene en el archivo de datos y apuntadores a todos
los registros de datos que tienen los valores correspondientes.
Ms.- milisegundos.
Pista.- Es un rea sobre la superficie de un disco duro, puede ser leda sin el
reposicionamiento de la cabeza de lectura/escritura.
Sector.- Es la parte de una pista sobre el disco duro que puede ser accesada por las
cabezas de lectura/escritura durante el desplazamiento rotacional
predeterminado del dispositivo.
Pgina : 158