06.05.2013 Views

CONTENIDO DE LA LECCIÓN 8

CONTENIDO DE LA LECCIÓN 8

CONTENIDO DE LA LECCIÓN 8

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!