Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
MIGUEL Á. TOLEDO MARTÍNEZ<br />
siguiente registro secuencial en el archivo. El problema que hay aquí es que en el modelo de<br />
entrada/salida formateada en que se utiliza el operador de inserción >, los campos –y por lo tanto los registros- pueden variar en tamaño. Por ejemplo: 7,<br />
14, -117, 2074 y 27383 son int y cada uno se almacena de manera interna en el mismo número<br />
de bytes de datos sin formato, pero cuando estos enteros se envían como texto formateado a la<br />
pantalla o a un archivo en disco, se convierten en campos de diferentes tamaño. Por lo tanto, el<br />
modelo de entrada/salida formateada no se utiliza generalmente para actualizar registros en su<br />
lugar.<br />
Tal actualización se puede hacer, pero es problemática. Por ejemplo, para hacer el cambio<br />
de nombre anterior se podrían copiar los registros que están antes de 300 Juan 0.00 en un archivo<br />
de acceso secuencial hacia un nuevo archivo, luego se escribiría el registro actualizado en el<br />
nuevo archivo y se copiarían los registros que están después de 300 Juan 0.00 hacia el nuevo<br />
archivo. Esto requiere el procesamiento de todos los registros del archivo para actualizar un<br />
registro. Esta técnica puede ser aceptable si se están actualizando muchos registros en un solo<br />
paso por el archivo.<br />
ARCHIVOS <strong>DE</strong> ACCESO ALEATORIO<br />
Hasta ahora hemos visto la manera de crear archivos de acceso secuencial y buscar en<br />
ellos para localizar información particular. Los archivos de acceso secuencial son inadecuados<br />
para las llamadas aplicaciones de acceso instantáneo en donde se debe localizar inmediatamente<br />
un registro de información particular. Algunas aplicaciones populares de acceso instantáneo son<br />
los sistemas de reservación de línea aéreas, los sistemas de bancos, los sistemas de punto de<br />
venta, las máquinas de cajero automático y otros tipos de sistemas de procesamiento de<br />
transacciones que requieren un acceso rápido de datos específicos. El banco en donde uno tiene<br />
su cuenta puede tener cientos, miles o hasta millones de otros clientes, pero cuando se utiliza una<br />
máquina de cajero automático la cuenta se revisa en segundos para ver si hay fondos suficientes.<br />
Este tipo de acceso instantáneo es posible con los archivos de acceso aleatorio. Los registros<br />
individuales de un archivo de acceso aleatorio se pueden acceder directamente (y en forma<br />
rápida) sin buscar por todos los demás registros.<br />
Como hemos dicho, C++ no impone ninguna estructura a un archivo. Por lo tanto, la<br />
aplicación que necesite utilizar archivos de acceso aleatorio literalmente debe crearlos. Se<br />
pueden utilizar una diversidad de técnicas para crear archivos de acceso aleatorio. Tal vez la más<br />
simple es la que requiere que todos los registros de un archivo sean de la misma longitud. El uso<br />
de registros de longitud fija hace que para un programa sea fácil calcular (en función del tamaño<br />
y la clave del registro) la localidad exacta de cualquier registro con relación al inicio del archivo.<br />
Pronto veremos la manera en que esto facilita el acceso inmediato a registros específicos, incluso<br />
en archivos grandes.<br />
La figura 7.8 ilustra la visión de C++ de un archivo de acceso aleatorio que está<br />
compuesto de registros de longitud fija (cada registro es de 100 bytes de largo) Un archivo de<br />
acceso aleatorio es como un tren con muchos carros, algunos vacíos y otros llenos.<br />
FUNDAMENTOS – <strong>LECCIÓN</strong> 7 7-44