Sei sulla pagina 1di 20

Apuntes del Prof. Hugo A. Cuello CLASE 8: Archivos.

Archivos

Archivos
La necesidad de poder recuperar los datos en momentos posteriores a su creacin, ya sea, por haberse cortado el suministro de la corriente elctrica o en distintas corridas del programa o en distintos programas, por un lado, y por otro ante la imposibilidad de poder contar con todos los datos simultneamente en la memoria interna debido a su limitacin de espacio, son dos motivos que hacen de la necesidad de contar con este tipo de estructuras de datos. El archivo es la nica estructura de datos externa, es decir, ubicadas en un dispositivo externo, al cul se los denomina memoria auxiliar, o memoria secundaria o memoria externa. La desventaja principal de este tipo de estructura es el tiempo necesario para recuperar un dato, ya que estos tiempos se miden en milisegundos, esto es 10-3 segundos en comparacin con el tiempo empleado para acceder a una posicin en la memoria interna cuya unidad de medida es el nanosegundo, esto es 10-9 segundos por lo tanto al momento de re!uerir un dato desde un archivo debemos tomar mu" en cuenta esta #ltima situaci$n tratando de minimi%ar estos tiempos. Las componentes de un archivo se denominan registros, y en la mayor!a de las situaciones, estas componentes sern de tipo registro. "o obstante, en ciertas situaciones podrn ser de un tipo simple de datos como integer, word, char, boolean, longint o punteros, como as! tambin de otro tipo estructurado de datos que se vern ms adelante. #n archivo es por lo tanto, una colecci$n de registros que responden a una misma naturale$a, p.e. Artculos, Clientes, Proveedores, Empleados, Cuentas Contables, etc.. % continuacin se presenta una clasi&icacin de archivos de acuerdo a su &uncin de uso'

&atos' o 'aestros' (on archivos permanentes en el tiempo, es decir, no se eliminan luego de un proceso. )ontienen todos los datos necesarios para el desarrollo de las actividades de una organi$acin. *epresentan al mundo real. )on el transcurrir del tiempo deben ser actuali$ados. +ependiendo del momento en que se actuali$, da un grado de con&iabilidad. Ejemplo de archivos maestros pueden ser, los )lientes, ,roveedores, Empleado, %rt!culos, )uentas )ontables, etc. o (ovedades o )ransacciones' (on archivos transitorios, es decir, luego de ser procesados, no tiene sentido mantenerlos, por lo tanto son eliminados. (u cometido es generalmente la actuali$acin de los archivos maestros. La eliminacin se podr reali$ar inmediatamente o bien luego de un per!odo de tiempo, por ejemplo, despus de una segunda actuali$acin al maestro. "o siempre existen estos archivos, esto depende del tipo de proceso que se lleve a cabo. ,or ejemplo si el proceso es interactivo en tiempo real, esto es, en el momento en que se conoce la novedad se actuali$a en el maestro, no existir un archivo de novedades. -ambin se podrn generar registros por cada A"E *.).(. +.,.-.A. Pgina .

Clase 8

Apuntes del Prof. Hugo A. Cuello

Archivos

novedad que se presente en un proceso en tiempo real interactivo para control. En cambio, si el proceso es en batch o por lotes, primero se capturan las novedades durante el transcurso de un tiempo, .un d!a, una semana, un mes. se los ordena bajo un cierto criterio. Hist$ricos' (on archivos cuyo uso generalmente son para &ines estad!sticos, por ejemplo, las ventas reali$adas por mes de un a/o, el seguimiento de ciertos art!culos ms solicitados, procesos de per!odos anteriores, etc.. )ablas' (on archivos de poco volumen, ya sea en cantidad de registros o con respecto a su longitud del mismo. % e&ectos de ganar velocidad durante el proceso, estos tipos de archivos pueden ser volcados a la memoria interna 0*%1. para acelerar el proceso, debido a que acceder a un registro en un archivo la unidad de medida es el milisegundo, esto es, 10-3 seg., en cambio acceder a una ubicacin en la memoria interna, la unidad de medida es el nanosegundo, es decir, 10-9 seg., ra$n por la cual se ve la enorme di&erencia existente entre acceder a una u otra &uente. El volcado del archivo se reali$a en una pasada secuencial, luego al requerir acceder a un dato se accede en la propia memoria interna. (egn los procesos tal ve$ no sea necesario bajar todos los registros como as! tambin bajar todos los campos del mismo. ,or ejemplo un archivo que contenga los cdigos de las provincias y un porcentaje que &ijan las mismas por las ventas reali$adas a esas provincias, un proceso que requiera esos datos, podr!an ser volcados a la memoria principal, recorriendo secuencialmente de inicio a &in sobre este archivo, luego cada ve$ que se requiera averiguar el porcentaje de una provincia se accede a la posicin de memoria interna. 1s adelante se ver la manera de lograr este cometido con una estructura de datos esttica que se estudiar posteriormente. /ndices' (on archivos que contienen 2 3 campos generalmente, un campo denominado clave y un campo denominado referencia o direccin el tercer campo si existe es denominado estado. Estos archivos se encuentran ordenados por el campo clave. (u objetivo es indexar al archivo maestro u otros archivos de datos. Esto permite una b#s!ueda ms e&iciente y establece un orden l$gico de esos datos. ,odrn existir varios archivos de !ndices para un mismo archivo de datos y c4u. de ellos estar ordenado por el campo clave que corresponda. ,ara mayor in&ormacin ver organi$acin indexada. Au0iliares' (on archivos que crea y elimina el programador y que son necesarios para mejorar la e&iciencia de un proceso. ,or ejemplo, un archivo de vendedores desordenado y un proceso que requiera acceder a los registros en &orma reiterada o en distinto orden al que se grabaron los mismos. Est claro que al buscar un vendedor debemos recorrer el archivo secuencialmente y esto por cada vendedor que requiera el proceso, nada e&iciente ser el proceso, por lo cual debemos recurrir a alguna tcnica que permita optimi$ar el proceso. #na de las tcnicas que podr!an emplearse es crear un *.).(. +.,.-.A. Pgina 1

Clase 8

A"E

Apuntes del Prof. Hugo A. Cuello

Archivos

archivo auxiliar de tal manera que ordene esos registros de alguna manera y permita un mayor acceso a los mismos. ,or ejemplo si los vendedores estn identi&icados con un )digo de 5endedor de 6 a 777, se crean anticipadamente esos registros, luego al ir leyendo cada vendedor en el archivo original se lo ubica en la posicin &!sica en el archivo auxiliar en la posicin indicada por el )digo del vendedor le!do. ,osteriormente se reali$a el proceso principal pero esta ve$, al buscar un vendedor se accede en el auxiliar en la posicin indicada por el cdigo del vendedor, al leer el registro su valor indica la posicin en el archivo original del vendedor para acceder a esa ubicacin y leer los datos del mismo. o 2nformes o ,eportes' (on archivos cuyo destino original era la impresora, pero debido a que sta ya estaba ocupada por otro proceso, el sistema operativo lo redireccion hacia otro dispositivo, es decir, un archivo en disco para que posteriormente cuando la impresora sea liberada y la prioridad le sea asignada ese archivo sea volcado a la impresora, una ve$ que la tarea se llev a cabo, el mismo sistema operativo elimina ese archivo. La parte del sistema operativo que reali$a este cometido es el S.P.3.3.L. 8(imultaneous ,eripherical 9peration 9n Line:, es decir, 9peraciones ,eri&ricas simultneas En Linea, el cual redirecciona las salidas de los procesos a archivos en disco debido a que el destino original, la impresora, estaba ocupada y por ser un recurso no compartido debi ser enviado a otro destino, armando una cola de espera. o Seguridad' (on archivos que se reali$aron copias de otros archivos y en caso de prdida de uno de ellos poder recuperarlos con el otro. Esto se conoce como back-up. o Programas: +uentes' (on los archivos escritos en un lenguaje de computadora y de tipo texto. La extensin de estos archivos se corresponde con el lenguaje utili$ado, por ejemplo, .Pas, .C, .Cob, . as, .Prg, etc. Estos archivos son creados utili$ando un editor de texto, por ejemplo el ;ord pero tipo texto, el bloc de notas, no son los ms apropiados, otra &orma es utili$ar el propio editor de texto incorporado en el paquete de so&t<are del lenguaje. %s! por ejemplo el )urbo Pascal de -orland viene un entorno de trabajo denominado 2.&.E. 0 1edio ambiente de +esarrollo =ntegrado. en el cual no solo podremos editar nuestro cdigo &uente, sino adems compilar, ejecutar, depurar, entre otros aspectos. %dems nos &acilita la escritura ya que las palabras reservadas se escriben resaltadas al resto de las otras palabras. 3b4etos' (on archivos resultado del proceso de compilar el cdigo &uente. El compilador es una aplicacin, es decir, un programa ejecutable que toma como parmetro el cdigo &uente y produce como salida un archivo o programa objeto, cuya extensin es .! ", el cual an no puede ser ejecutado debido a que le &altan las librer!as a que hace re&erencia. )ada lenguaje posee su propio compilador. Clase 8 A"E *.).(. +.,.-.A. Pgina 5

Apuntes del Prof. Hugo A. Cuello

Archivos

E4ecutables' (on archivos resultado del enlace con las librer!as para que sean incorporadas al cdigo mquina y pueda correr en &orma autosu&iciente. El link es una aplicacin que toma como parmetro el cdigo objeto y el resultado &inal es un archivo ejecutable .#$#.

o 3tros' &ocumentos' (on archivos creados con un procesador de palabra, por ejemplo el ;ord. 2mgenes grficas' ,resentan di&erentes &ormatos .>=?, .@,>, .A1,, etc. (on creados por so&t<are gra&icadores como el ,aint, )orel, Barvard, ,hoto(hop, etc. Audio' %rchivos de sonido o msica con extensiones como ser .1,3, .;%5, .1=+, etc. 'iscelnea' Librer!as dinmicas .+LL, (istema .(C(, +ispositivos .+*5, etc..

Clasificaci$n de lengua4es:
Los lenguajes de computadoras pueden ser clasi&icados en cuanto al mayor acercamiento hacia la mquina o hacia el usuario en' -a4o nivel' (on lenguajes que se acercan ms a la mquina que al usuario. )ada instruccin se traduce en una nica instruccin de mquina, se dice entonces que la relacin es 6 a 6 el lenguaje de bajo nivel es el assembler y la aplicacin que lo convierte a cdigo mquina se denomina ensamblador. La caracter!stica ms emblemtica es que los programas ejecutables son los ms veloces. La desventaja es que es ms compleja su programacin. La extensin de los archivos de cdigo &uente presentan la extensin .%&'. ,or ejemplo sumar un valor a una variable, se escribir!a' 'edio nivel' (on lenguajes que se encuentran en un punto intermedio entre los de bajo y alto nivel. Lenguaje como ) o ?orth entran dentro de esta categor!a. La &orma en como se escribe el cdigo en algunos casos puede llevarlo a un nivel ms bajo o ms alto, por ejemplo acumular un valor en una variable podr!a escribirse en lenguaje ) de varias maneras di&erentes, pero una de ellas generar un cdigo de mquina ms e&iciente que las otras. El siguiente ejemplo muestra esto ltimo' sum D sum E 6 sumED 6 o EEsum o sumEE en los dos ltimos casos generar un cdigo ms e&iciente. Alto nivel' Los lenguajes de alto nivel se acercan ms al usuario que a la mquina y los programas escritos en cdigo &uente se asemejan al lenguaje natural. Estos programas corren ms lentos que los de bajo nivel. #na sentencia suele ser convertida a varias instrucciones en cdigo mquina. Lenguajes como ,ascal, ), )obol, Aasic, ?ortran, 1odula, %da, ,rolog entre otros son de alto nivel. ,or ejemplo, acumular un valor en una variable ser!a' sum 'D sum E 6 ,ascal inc8sum: ,ascal add 6 to sum )obol sum D sum E 6 ) sum ED 6 ) A"E *.).(. +.,.-.A. Pgina 6

Clase 8

Apuntes del Prof. Hugo A. Cuello sumEE EEsum ) )

Archivos

9tras clasi&icaciones de los lenguajes podr!an reali$arse en cuanto al objetivo en que &ueron concebidos, as! existen lenguajes de propsito general, como ser el A%(=), ,%()%L otros destinados a la gestin y administracin contable como el )9A9L, *,> an otros con &ines cient!&icos como el ?9*-*%" y otros para el desarrollo de so&t de base como el ).

)raductores
Los traductores pueden ser de dos tipos di&erentes' .. 2nt7rpretes 1. Compiladores En el primer caso los lenguajes int7rpretes, la ejecucin se reali$a dentro de un entorno de trabajo del lenguaje, y se ejecuta desde alli, o por medio de una aplicacin, es decir un mdulo de tiempo de ejecucin que toma como parmetro el cdigo &uente, cada sentencia a ejecutar primero debe ser interpretada a su equivalente en cdigo mquina, generalmente una sentencia se divide en varias instrucciones de mquina, luego se ejecuta, esto se repite por cada sentencia que deba ser ejecutada, an en los casos en que una misma sentencia se ejecute ms de una ve$ deben de reali$arse esos pasos no se genera ningn cdigo objeto en disco. Este tipo de lenguajes es oportuno cuando se est desarrollando la aplicacin, en la cual tendremos que ejecutar el programa varias veces para re&inarlo en detalles, hasta que quede el de&initivo, entonces debido a que no hay tiempo de espera para la compilacin total del programa se hace conveniente en esos momentos pero no cuando el programa haya quedado terminado de corregir detalles. El tiempo de e4ecuci$n es ma"or en un programa interpretado !ue si fuera compilado. La ventaja es que entre cada ejecucin del programa en la etapa de depuracin no debemos esperar por el proceso de compilacin, en la que muchas veces se demora bastante tiempo. ,or otro lado un lenguaje compilado primero se compila todo el cdigo &uente, crendose un cdigo mquina y guardado en un archivo con extensin .9A@, luego en un segundo proceso se le incorporan las librer!as produciendo un cdigo ejecutable y guardado en un archivo con extensin .EFE. En este momento podremos correr o ejecutar la aplicacin o programa. El tiempo insumido ser mucho menor a un programa interpretado, debido a que el cdigo &uente &ue traducido a cdigo mquina con anterioridad y solamente el proceso se centra en ejecutarlo. Existen lenguajes que son solamente interpretados y otros que son solamente compilados, pero tambin existen lenguajes que pueden correr con un intrprete y que adems puedan ser compilados, una ve$ que se hayan depurados ciertos errores. ,or ejemplo un programa reali$ado en lenguaje Aasic .ciertas versiones. puede ser solo interpretado o si el programador lo desea compilado. 9tros como la mayor!a de los lenguajes slo compilado, por ejemplo, )9A9L, ), ,%()%L, %L>9L, )L=,,E*, etc.

Etapas de procesos de los archivos en el tiempo


% continuacin se presenta otra clasi&icacin de archivos de acuerdo a distintos procesos que podemos reali$ar' Clase 8 A"E *.).(. +.,.-.A. Pgina 8

Apuntes del Prof. Hugo A. Cuello

Archivos

Creaci$n Actuali%aci$n: o %ltas o Aajas o 1odi&icaciones ,ecuperaci$n: o )onsultas o =n&ormes 'antenimiento: o Estructuracin o 9rgani$acin

'odo de apertura de archivos


Entrada 0=nput. #n archivo abierto como solo de entrada indica que solo se podr leer, hacer un intento de escritura ocasionar en un error. En el diagrama de &lujo el s!mbolo es el bloque del trapecio invertido, base menor hacia abajo. Salida 09utput. #n archivo abierto como solo de salida indica que solo se podr grabar, hacer un intento de lectura ocasionar en un error. En el diagrama de &lujo el s!mbolo es el bloque del trapecio, base mayor hacia abajo. Entrada 9 Salida .=nput49utput. #n archivo abierto en el modo de lectura.escritura indica que se podrn reali$ar ambas operaciones, es decir, leer y4o grabar indistintamente.

'odo de acceso a los registros

Secuencial' (e recorren los registros uno a continuacin del otro, es decir, en &orma adyacente o contigua. ,ara alcan$ar el registro que ocupa la ubicacin n debemos recorrer todos los registros que lo preceden. El tiempo empleado para accesar un registro n depende del lugar en que se encuentre ubicado el puntero al archivo. Al a%ar' El tiempo empleado para accesar un registro no depende del lugar en que se encuentre ubicado el puntero al archivo, debido a que se accede al registro n directamente, vale decir que, el tiempo empleado para acceder a cualquier posicin es el mismo desde el lugar en que se encuentre el puntero al archivo.

,or ejemplo, el control remoto de una -5 v!a satlite o por cable permite 2 tipos de accesos, uno secuencial, y otro al a$ar en el primer caso, si se oprimen las teclas )BE o )B. permite un acceso secuencial a los canales por otro lado, Clase 8 A"E *.).(. +.,.-.A. Pgina :

Apuntes del Prof. Hugo A. Cuello

Archivos

si tipeamos un nmero, .con las teclas numricas., cambiamos directamente a ese canal. G=maginarse, por ejemplo, el tiempo empleado de acceder del canal 6H2 al canal I3J en &orma secuencialK.

3rgani%aciones de archivos
6. Secuencial' La organi$acin secuencial es aquella en la cual los registros solo pueden ser accedidos en &orma secuencial. %dems la apertura del archivo solo se reali$a exclusivamente para entrada o exclusivamente para salida, en el primer caso solo se lo puede leer y en el segundo caso solo se lo puede grabar. -anto la lectura o grabacin se lleva a cabo hacia delante y no se permite retroceder a una posicin previa. Los medios de almacenamiento por naturale$a son las cintas magnticas pero tambin pueden ser los discos. En esta organi$acin los registros suelen ser sometidos a un ordenamiento establecido. %dems los registros podrn estar agrupados, contenidos en un bloque, esta tcnica se conoce como factor de blo(ueo en donde se determina un valor n , siendo este valor n la cantidad de registros contenidos en un bloque, esta tcnica es utili$ada en archivos con acceso secuencial para lograr un menor tiempo de procesamiento cada ve$ que se acceda al dispositivo externo. #n bloque representa un registro f)sico, mientras que los n registros contenidos en l representan n registros lgicos. Este tipo de organi$acin es oportuna cuando los registros deban ser le!dos en el mismo orden en que &ueron grabados y deban ser procesados la mayor!a de ellos. 2. 2nde0ada' La organi$acin indexada presenta bsicamente 2 archivos, uno de datos similar a la organi$acin secuencial, es decir, los registros que se incorporan son agregados al &inal del archivo y normalmente no estarn ordenados &!sicamente. El otro archivo es el de ;ndice y puede contener 2 3 campos, a saber, un campo que contendr la clave y que debe &ormar parte en el archivo de datos, pudiendo ser de cualquier tipo pero el tipo pre&erido es el de cadenas, debido a que en muchas oportunidades se suelen combinar los valores de dos o ms campos por medio de la operacin de concatenacin. El segundo campo representa la referencia o direccin, y que indica en donde se encuentra el valor de esa clave en el archivo de datos. ,or ltimo en caso de existir el tercer campo establece un estado para in&ormar si ese registro debe ser tenido en cuenta en los procesos ya que podr!a habrsele dado de baja, con un valor podr!a indicar que estar activo o caso contrario estar inactivo, on u o&&, verdadero o &also, L 6. En caso en que el registro no debe tomarse en cuenta es debido a que se ha reali$ado una baja lgica, es decir, el registro sigue ocupando un lugar &!sico en el medio externo. Las bajas &!sicas en estos casos se reali$a cuando se vayan acumulando varias bajas lgicas, ya que este proceso requiere de un mayor tiempo de proceso. % continuacin se presentar un ejemplo con valores en el archivo de datos para construir el archivo de !ndices. El siguiente archivo de datos puede representar datos de %lumnos y a e&ectos de resumir, solo se mostrar por cada registro el campo "roLeg. Archivo de datos' %lumnos.+at Clase 8 A"E *.).(. +.,.-.A. Pgina <

Apuntes del Prof. Hugo A. Cuello valores del campo (ro.Leg. 0 c9registro. J3 2M 3H MI 62 H7 N2 36 IN 67 7J H3 J2 I 7H L 6 2 3 J I N M H 7 6L 66 62 63 6J direcciones f;sicas de cada registro.

Archivos

Archivo de ;ndices' %lumnos.=dx ,ara construir la tabla de !ndices se comen$ar leyendo el primer valor del archivo, luego el siguiente y as! sucesivamente, pero si vamos escribiendo en la tabla de ms abajo notaremos que debemos insertar por cualquier lugar de la lista que vayamos armando y en el caso de escribirlo sobre papel es casi una tarea imposible por esta ra$n vamos a implementar otro esquema gr&ico que evitar la situacin indicada anteriormente. En el primer caso tendremos el siguiente problema' Luego de haber copiado el valor J3 y su re&erencia L, al leer el )L5 *E?. siguiente dato vemos que el valor clave 2M es menor al ingresado J3 2M L6 previamente, si queremos mantener un orden ascendente J deber!amos escribir este valor en una l!nea previa, pero sin antes L 3 borrar el valor J3 y su re&erencia para luego escribirlos ms abajo. "otamos luego que al continuar con los prximos valores esta tarea se ver!a ms complicada, ra$n por la cual adoptaremos otro criterio gr&ico. punto de entrada (! )lv"va O 5al"odo5isitado avan$ar por rama i$quierda 2M4 6 nodo ra;% J34 L sino avan$ar por rama derecha MI4 3

I46 3

7H46 2 El gr&ico representa un rbol binario, el nodo ra!$ es el punto de entrada para incorporar un nuevo valor, por lo tanto por cada valor nuevo que ingresa se compara si es menor al valor del nodo actual, si es as! se dirige a la i%!uierda, caso contrario hacia la derecha, en caso de no existir un nodo se crea uno nuevo, siempre como nodo hoja. (i seguimos este criterio, los valores irn ubicndose de la &orma en que quedaron arriba. Esta &orma depende de cmo se vayan conociendo los valores claves, ya que si esos mismos valores claves estuvieran acomodados de una manera di&erente, di&erente ser!a entonces la estructura que adoptar!a el rbol. %hora vamos a volcar estos valores a nuestra tabla original, para ello debemos saber como se procede a recorrer el rbol, la &orma de hacerlo podr!a ser in=orden 2,&., en pre=orden ,2&. o en post=orden 2&,.. 5amos a recorrer in.orden. En un rbol binario tenemos un sub.rbol i$quierdo y un sub.rbol derecho, as! el nodo con valor 2M es el
6

674 364 J246 IN4 H346 7 M J H 6 (odos ho4as son los nodos terminales #n nuevo nodo se inserta siempre como nodo hoja o terminal.

624 J

3H4 2

N24 N

H74 I

7J46 L

=*+ signi&ica' =$quierda, *a!$, +erecha. *=+ signi&ica' *a!$, =$quierda, +erecha. =+* signi&ica' =$quierda, +erecha, ra!$.

Clase 8

A"E

*.).(. +.,.-.A.

Pgina 8

Apuntes del Prof. Hugo A. Cuello

Archivos

nodo ra!$ del sub.rbol i$quierdo, y el nodo con valor MI es el nodo ra!$ del sub.rbol derecho, esta divisin en sub.rboles se puede continuar con los restantes nodos. El recorrido se inicia por el nodo ra!$, en este momento averiguamos si hay algn nodo hacia la i$quierda, si es as! descendemos un nivel, nuevamente hacemos lo mismo hasta llegar a un nivel en que no haya nodos a i$quierda, entonces tomamos este valor en nodo ra!$ del sub.rbol y marcamos al nodo como visitado, en el ejemplo este valor es I. Luego averiguamos si hay nodos a derecha, si es as! descendemos un nivel y volvemos a aplicar el mismo criterio indicado anteriormente. En el ejemplo el siguiente valor a tomar es el 62 que se encuentra un nivel ms arriba, debido a que no hab!a nodos a derecha del nodo con valor I. Luego el recorrido es hacia la derecha del nodo con valor 62, y as! seguiremos avan$ando y retrocediendo. Esta tcnica es conocida como back-tracking. % continuacin se expondr en el archivo de datos indicado anteriormente otro valor para cada registro, por ejemplo, el %pellido de cada alumno, para simpli&icar la escritura lo indicamos de la siguiente manera' valores del campo (ro.Leg. 0 c9registro 1%*-="EP ?E*"Q"+EP >9"P%LEP ,E*EP (#%*EP %L5%*EP L9,EP L 6 2 3 J I N direcciones f;sicas de cada registro valores del campo (ro.Leg. 0 c9registro (9(% -9**E( >%*)R% ?E*"Q"+EP @#Q*EP 5%PS#EP AE"=-EP *=9( M H 7 6L 66 62 63 6J direcciones f;sicas de cada registro punto de entrada nodo ra;% (! )lv"va O 5al"odo5isitado avan$ar por rama i$quierda sino avan$ar por rama derecha 1artine$ 4
L ?ernnde$ 4 6 >on$ale$ 4 2 ,ere$ 4 3

%lvare$ 4 I

(ure$ 4 J

Aenite$ 4 63 ?ernnde$ 4 6L

>arc!a 4 7

Lope$ 4 N

(osa 4 M

-orres 4 H

@ure$ 4 66

*ios 4 6J

5a$que$ 4 62

(odos ho4as son los nodos terminales. #n nuevo nodo se inserta siempre como nodo hoja o terminal.

Clase 8

A"E

*.).(. +.,.-.A.

Pgina >

Apuntes del Prof. Hugo A. Cuello

Archivos

)abla: (roLeg

)abla: Ape(om CL@ Ape(om Qlvare$ Aen!te$ ?ernnde$ ?ernnde$ >arc!a >on$le$ @ure$ Lpe$ 1art!ne$ ,re$ *ios (osa (ure$ -orres 5$que$ ,ef. I 63 6 6L 7 2 66 N L 3 6J M J H 62

CL@ ,ef. (roLeg I 63 62 J 67 7 2M 6 36 M 3H 2 J2 6J J3 L IN H N2 N MI 3 H3 66 H7 I 7J 6L 7H 62

)onocido el valor de una clave, Tqu mtodo de bsqueda aplicarU. (i el mtodo de bsqueda &uera secuencial comen$ar!amos desde el primer valor en la tabla si es el que buscamos detenemos la bsqueda e indicaremos que el valor se encontr, sino puede que sea mayor el valor a buscar en ese caso seguiremos buscando con los prximos valores de la tabla hasta posiblemente encontrarlo o bien detenernos cuando apare$ca un valor mayor al que buscamos o bien termine la tabla, en estos casos se in&ormar que el valor no se encontr en la tabla. (i el valor clave est entonces el siguiente paso ser acceder con la re&erencia indicada en la tabla, al archivo de datos a esa misma posicin, para obtener los datos requeridos. %hora bien, Tser este mtodo el secuencial el ms adecuado cuando la tabla de !ndices se encuentra ordenada por la clave a buscarU. La respuesta es (3. #n mejor mtodo es reali$ar una bsqueda binaria, aquella que parte en &orma sucesiva por la mitad entre los valores *)ni*o y *+,i*o de las direcciones de los registros extremos, es decir, en donde posiblemente se pueda encontrar el valor de la clave. Encontrado el punto medio entre los extremos se compara el valor a buscar con el valor de la posicin de este punto medio, si se encontr se abandona la bsqueda, in&ormando que se encontr el valor, sino puede suceder que sea mayor o menor, en cualquiera de los casos se acorta la tabla por su mitad, es decir, cambia el valor extremo menor por el de medio E 6 o bien cambia el valor extremo mayor por el de medio 0 6, esto se repite hasta encontrar el valor a buscar, si es ste el caso se accede al archivo de datos en la direccin indicada por el campo re&. de la clave encontrada en la tabla de !ndices, o bien si el valor extremo menor se hi$o mayor al valor extremo mayor, se abandona la bsqueda e in&orma que el valor clave no se encontr en la tabla. En el rbol si buscamos el valor 36, debemos pasar por los siguientes nodos' J3, 2M, 3H y 36.

Clase 8

A"E

*.).(. +.,.-.A.

Pgina .?

Apuntes del Prof. Hugo A. Cuello

Archivos

#n rbol unialargado es aquel rbol en que crece solamente por una de sus ramas, i$quierda o derecha para todo nodo. E4ercicios' 6. T)ul ser!a la estructura de un rbol si las claves vienen ordenadas en &orma ascendenteU. 2. =dem anterior pero con las claves ordenadas en &orma descendentes. Las claves en una organi$acin indexada pueden ser pri*arias o secundarias. (i la clave es primaria identi&ica un;vocamente a un registro y su valor no puede repetirse en la tabla. En cambio si la clave es secundaria, puede que se repita o no. Ejemplos de claves primarias y secundarias' Claves Primarias' -ro.eg en el archivo maestro de Empleados, Cod%rt en el archivo maestro de %rt!culos, etc. Claves Secundarias' CodPos en al archivo maestro de Empleados o )lientes o ,roveedores, notamos en este caso que di&erentes empleados o clientes o proveedores pueden tener su domicilio bajo un mismo cdigo postal, por lo tanto esta clave secundaria ser con duplicacin o repeticin. ,ara un mismo archivo podrn presentarse varias claves candidatas a ser clave primaria, la eleccin queda ms justi&icada cuanto ms compacta sea la misma. Las claves tambin pueden ser simples o compuestas. #na clave simple es la que se &orma con el valor de un solo campo mientras que una clave compuesta se &orma con la concatenacin de dos o ms valores de campos. Los valores de las claves deben &ormar parte en el archivo de datos. (i la clave es de tipo cadena es mejor, ya que en los casos de una clave compuesta tal ve$ se requiera concatenar dos valores de campos di&erentes. (i uno de los campos no es de tipo cadena, no hay problema, ya que se lo podr convertir a cadena. 3. ,elativa' La organi$acin relativa se denomina as! porque las posiciones que ocupan los registros dentro del archivo son direcciones relativas y no absolutas. +ebido a que las posiciones de los registros del archivo se comien$an a contar desde el punto de inicio del archivo y no desde el punto de inicio del disco. La organi$acin relativa est considerada como la organi$acin de archivos con mayor velocidad de acceso a los registros generalmente, aunque no siempre ser as!, dependiendo de los distintos casos que se presenten, como se ver ms adelante. Esta organi$acin de archivo junto con la organi$acin secuencial han sido las primeras organi$aciones en los inicios de la in&ormtica, en este caso precisamente, porque se requer!a un acceso a los registros que no &uera necesariamente secuencial. En cambio la organi$acin indexada surgi con posterioridad, hoy ampliamente utili$ada esta ltima en las bases de datos. ,ara poder acceder a un registro n en una organi$acin relativa debemos conocer el valor de una clave debiendo ser de tipo numrico, ya que las direcciones en el archivo son valores numricas. "o existe un archivo de !ndices como en la organi$acin indexada, solo un archivo de datos. Este tipo de organi$acin requiere la habilidad del programador para manejarlo adecuadamente. Esta habilidad estar emparentada con la experiencia lograda con los a/os de trabajo en di&erentes proyectos que haya reali$ado en su vida pro&esional. "o obstante, algunos detalles podrn mostrarse. Clase 8 A"E *.).(. +.,.-.A. Pgina ..

Apuntes del Prof. Hugo A. Cuello

Archivos

Existen dos tipos de direccionamiento en una organi$acin relativa, a saber' &ireccionamiento directo' Es cuando se accede una sola ve$ al archivo a un registro direccionado, siendo ese el registro requerido. &ireccionamiento indirecto' Es cuando se accede ms de una ve$ al archivo para locali$ar o establecer el valor de la clave en una ubicacin en el archivo, debido a que ocurrieron colisiones. % continuacin se darn varios casos de estudio. Caso .' En una entrevista con un cliente, nos in&orma llevar el proceso de un archivo de art!culos, mximo 6LL y la &orma de identi&icar a cada art!culo, se combino en numerarlos de 6 a 6LL. "otamos aqu! una relaci$n . a . entre el cdigo del art!culo y la direccin que le debe corresponder en el archivo. %s! conocida la clave de un art!culo, digamos 23 le corresponde la direccin 23 en el archivo. "otamos entonces que el acceso a dicho registro tanto para leer como para grabar lo logramos con un solo acceso. )uando se presenta esta situacin el direccionamiento se denomina directo. Caso 1' La situacin con el cliente se presenta semejante al caso anterior pero los cdigos de art!culos deben ser entre 6LL6 y 66LL. En este caso no podemos decir que conocida una clave con ese valor nos ubicamos en la direccin correspondiente en el archivo, ya que no existirn direcciones en el archivo con ninguno de esos valores claves. ,ero no todo est perdido an. "otamos enseguida que el intervalo de valores es igual a la cantidad de posibles art!culos que podemos contar como mximo y que solo estn despla$ados 6LLL posiciones, por lo tanto, si restamos ese valor a cualquier clave que cono$camos solucionamos el problema y obtendremos una direccin vlida en el archivo, es decir, una direccin entre 6 y 6LL. ,or ejemplo, si conocemos una clave cuyo valor &uera 6L23, le restamos 6LLL, nos queda la direccin 23, siendo vlida esta direccin para acceder en el archivo. ,or lo tanto aplicando un clculo a la clave hemos obtenido una direccin vlida en el archivo. La relacin 6 a 6 sigue existiendo para este caso, solo debemos reali$ar un clculo para obtener una direccin vlida en el archivo. El tipo de direccionamiento tambin es directo, ya que solo se requiere de un acceso para locali$ar un art!culo. Caso 5' La situacin con el cliente se presenta semejante a los casos anteriores salvo que los cdigos de art!culos deben estar comprendidos entre 3J2M y M7NI. En este caso vemos que al igual del caso 2 con el valor de una clave no podemos ubicarnos en una direccin vlida en el archivo, pero adems notamos que el intervalo de valores de las claves es mucho mayor a la cantidad de art!culos mximos que podemos tener. ,or lo tanto esto trae aparejado un nuevo problema, el de las colisiones o sin$nimos. Esto se produce cuando dos o ms valores claves distintas generan una misma direccin en el archivo. %hora bien, Tcmo lograr obtener a partir de un valor clave una direccin vlida en el archivoU. La tcnica empleada se conoce como &uncin de *apeo. #na &uncin de mapeo ampliamente utili$ada es la del m7todo del resto, que consiste en tomar el valor clave k por un lado y el tama/o del archivo TA por otro, o bien por un nmero primo ms cercano al tama/o del archivo se reali$a la divisin en donde V es el dividendo y -% o el nmero primo el divisor el cociente entero es la direccin natural dn para acceder al archivo de datos. (i las Clase 8 A"E *.).(. +.,.-.A. Pgina .1

Apuntes del Prof. Hugo A. Cuello

Archivos

direcciones en el archivo comen$aran desde uno en adelante, en estos casos se le suma 6 al resto. "otamos que valores de claves distintas digamos ki kj pueden ocasionar una misma direccin natural dn, producindose entonces una colisin o sinnimo. Este problema es solucionable existiendo distintos mtodos para resolverlo. #no de ellos ser!a buscar en los registros adyacentes un lugar libre y una ve$ locali$ado ubicar los datos all!, en caso de estar dando un alta. (i llegamos al &inal del archivo, debemos siguir buscando desde el inicio del mismo. (i lo que deseamos en buscar el valor de una clave primero accedemos a su direccin natural si es el dato que hay all! lo encontramos y listo, sino seguiremos buscando con el mtodo empleado para solucionar colisiones, por ejemplo buscar en los registros adyacentes, as! seguiremos hasta encontrarlo o bien detenernos en un punto en donde se asegura que ese valor clave no se encuentra en el archivo. #na solucin a esto ltimo ser!a agregar un campo adicional al registro que indique un estado del registro con un valor de V indicando que el registro est vacante, nunca &ue utili$ado por alguna clave, O indicando que el registro est ocupado, S indicando que el registro &ue suprimido, es decir, se reali$ una baja lgica. %l dar de alta si su direccin natural estuviera ocupada, la clave nueva se ubicar en el primer registro que est como vacante o suprimido y se marca el estado con 9 de ocupado, siempre y cuando esa clave no estuviera en el archivo, sino ser!a alta existente. %l dar de baja una clave, si no es la de su direccin natural se seguir buscando hasta que apare$ca en el archivo, en ese caso se marca el estado con ( de suprimido, siendo una baja lgica, o bien seguir buscando hasta que se encuentre un registro como vacante o se haya completado la vuelta, en estos casos ser!a una baja inexistente. En este ltimo caso el direcionamiento se denomina indirecto, debido a que encontrar una clave podr necesitar reali$ar ms de un acceso. Caso 6' La situacin con el cliente se presenta semejante a los casos anteriores salvo que los cdigos de art!culos ahora son valores de tipo cadena de I. En este caso vemos que con el valor de una clave no podemos ubicarnos en una direccin vlida en el archivo, ya que la clave no es numrica, y como &uera dicho anteriormente, es de esperar que la clave sea numrica, ya que las direcciones en el archivo son posiciones numricas, por lo que es estas situaciones, debemos convertirla en numrica una &orma ser!a tomar el cad WiX tomar su cdigo ascii y multiplicarlo por un mmero primo di&erente, para cada cad WiX, y acumular los resultados parciales. +e esta manera ahora contamos con un nmero bastante grande, por lo que es de esperar, que este valor numrico no se corresponda con ninguna direccin vlida en el archivo pero adems notamos que el intervalo de valores de las claves es mucho mayor a la cantidad de art!culos mximos que podemos tener. ,or lo tanto esto trae aparejado el mismo problema, que en el caso 3, el de las colisiones o sin$nimos, por lo que aplicamos la misma tcnica vista en el caso 3, para solucionar el problema de las colisiones o sinnimos, por lo que a partir de este instante, se soluciona como &uera indicado en el caso 3. -ambin en este caso el direccionamiento se denomina indirecto, debido a que encontrar una clave podr necesitar reali$ar ms de un acceso. ,ara utili$ar archivos con organi$acin relativa se requiere amplia experiencia, debido a que es la organi$acin de archivos ms compleja de todas Clase 8 A"E *.).(. +.,.-.A. Pgina .5

Apuntes del Prof. Hugo A. Cuello

Archivos

porque requiere una exigencia por parte del programador en el dise/o del archivo, las &unciones de mapeo y la resolucin de las colisiones.

Archivos en Pascal
El lenguaje ,ascal clasi&ica a los archivos en'

-exto Ainarios con tipo Ainarios sin tipo

Los archivos de te0to son exclusivamente de organi%aci$n secuencial, debido a esto la nica &orma de accesar los registros es en &orma secuencial y pueden ser abiertos de solo lectura o solo escritura, en ambos casos siempre se avan$a hacia delante, no existiendo posibilidad de poder retroceder a una componente anterior. La nica manera es cerrar el archivo y volver a abrirlo nuevamente. #n archivo de tipo texto se lo de&ine por medio del identi&icador te,t. Este es un archivo cuyas componentes esta estructurado en l!neas, cada una de las cuales pueden tener di&erentes longitudes. )ada l!nea est &inali$ada con una marca de &in de l!nea y la &uncin de ,ascal eoln/-.0 retorna un estado de verdadero si se ley dicha marca. El &in de archivo est establecido por otra marca y la &uncin de ,ascal eof/-.0 retorna un estado de verdadero si se ley dicha marca. Los archivos de texto son ms lentos que los archivos binarios ya que cada ve$ que se lea o grabe una componente los datos debern ser convertidos de texto a binario o inversamente. ,or ejemplo si tenemos un valor de tipo integer en la memoria interna al grabar en un archivo de texto se deber convertir a caracteres 2 y 3 en cambio se se leyeran esos caracteres desde un archivo binario para volcarlo a la memoria interna deber ser convertido al &ormato binario. Este proceso lo reali$a automticamente el proceso. #n archivo de texto se lo puede crear por medio de un programa ,ascal o bien con un editor de texto. (i se tiene un archivo de texto se puede crear un archivo binario, simplemente leyendo del archivo de texto y grabar en el archivo binario. Las lecturas de los datos desde un archivo de texto se reali$a sobre variables del tipo de dato a leer y en &orma separada. La variable de&inida en la unidad ,rinter del ,ascal lst es una variable de archivo de tipo te,t, es decir de tipo archivo de texto. Los archivos binarios estn estructurados en componentes denominadas registros. (i bien la &orma ms comn es que las componentes de un archivo sean de tipo registro, hay otros casos, en que cuando cada componente sea un solo valor, hacerlas del mismo tipo de ese nico valor, as! por ejemplo, una componente podr!a ser de tipo integer, char, boolean, real, string, si cada componente &uera un solo valor en concordancia con algunos de los tipos indicados. (e los denominan archivos binarios ya que re&lejan la imagen de lo que hay en la memoria interna, es decir, no su&ren ningn proceso de convertibilidad. ,or ejemplo el valor entero 23 est representado en el archivo de la misma manera como se lo representa en la *%1, a saber como una serie de ceros y unos, que en este caso ser!a as! Clase 8 A"E *.).(. +.,.-.A. Pgina .6

Apuntes del Prof. Hugo A. Cuello

Archivos

LLLLLLLL LLL6L666 con 6N d!gitos binarios, luego si editamos el archivo en un editor de archivos lo veremos con los caracteres cuyos cdigos %()== concuerdan con el ascii L y el ascii 23, vale decir, YZ[, las comillas es para limitar lo que se grab. #n archivo de tipo binario se lo de&ine por medio de las palabras reservadas file of seguido de un identi&icador de tipo, es decir, file of tipo. #n archivo binario solamente puede ser creado por medio de un programa en ,ascal. (i se tiene un archivo binario se lo puede crear como archivo de texto, simplemente leyendo desde el archivo binario y grabando en un archivo de texto. Los datos a leer en un archivo binario se reali$an en &orma completa por cada componente. % continuacin se establece un tipo registro y un tipo archivo binario t"pe *eg?ec D record aa ' longint mm, dd ' byte end (tr2L D stringW2LX *eg%lu D record "roLeg ' longint %pe"om, +omic, Local ' str2L Est)iv ' char -rabaja ' boolean ?ec"ac ' *eg?ec )uota ' real end %rc%lu D file of *eg%lu var %lumnos ' %rc%lu *%lumno ' *eg%lu La variable %lumnos representa el nombre lgico NL del archivo.

Procedimientos " +unciones para archivos


En todos los casos indicados ms abajo, las siguientes simbolog!as indican' NL' "ombre lgico de archivo, es una variable de tipo archivo te,t, file of o file. NF' "ombre &!sico de archivo, es una expresin de tipo cadena que contiene unidad de disco, ruta y nombre del archivo con el &ormato H.3, segn reglas del +.9.(.. (i se omiten la unidad de disco y la ruta, se toma el valor por de&ecto, esto es, la unidad y el directorio actualmente activo. Clase 8 A"E *.).(. +.,.-.A. Pgina .8

Apuntes del Prof. Hugo A. Cuello

Archivos

NR' "ombre de registro, es una variable de tipo registro que se corresponde con el tipo de cada componente del archivo asociado. En los casos en que las componentes del archivo sean de algn tipo simple de datos, NR podr ser una variable del tipo de dato simple correspondiente con cada componente del archivo. assignANL, NFB' %signa o asocia el nombre &!sico con el nombre lgico, este ltimo es el que se usar posteriormente cada ve$ que se re&iera al archivo. El nombre &!sico podr contener adems del nombre y extensin, la unidad de disco y la ruta en donde se encuentra o destinar el archivo, si no se lo indica se tomar la unidad y directorio activo. La impresora es un archivo de texto, por lo tanto se le puede asignar al nombre lgico un nombre &!sico siendo ese nombre &!sico L,-6 o L,-2 o L,-3. Ej.' assign8%lumnos,\%lumnos.+at\: assign8=mpresora,\L,-6\: en donde =mpresora es una variable de tipo te,t. resetANLB: %bre un archivo y ubica al puntero del archivo al comien$o del mismo. El archivo deber existir, caso contrario generar un error en tiempo de ejecucin y se detendr la ejecucin del programa, si no se ha atrapado dicho error por medio de la directiva al compilador ]^=E_. #na ve$ abierto el archivo se podr leer o grabar si el archivo es binario esto es, file of o file y si la variable de sistema file*ode estuviera con el valor dos slo se podr leer, si estuviera con el valor cero o slo se podr grabar si estuviera con el valor uno en cambio, si el archivo es de tipo te,t solo se podr leer. Ej.' reset8%lumnos: reCriteANLB' %bre un archivo nuevo y si existe lo destruye y lo crea vac!o, en ambos casos ubica al puntero al archivo coincidiendo con eo&8-.:, es decir, con la marca de &in de archivo. El tama/o del archivo en este momento es cero. La variable de sistema filemode no se tomar en cuenta, ya que el modo de apertura para re<rite es siempre lectura y grabacin. #n archivo abierto con re<rite primero se deben grabar algunos registros, luego posicionarnos sobre un registro previamente grabado, para luego poder leerlo, esto indica entonces que no hace &alta tener que cerrar el archivo y abrirlo con reset para poder leerlo en el mismo proceso, solo basta hacer lo indicado anteriormente. ,ara un archivo de texto re<rite lo crea solo para grabar. Ej.' re<rite8%lumnos: En archivo de texto existe una tercer posibilidad para abrir un archivo para agregar ms l!neas al mismo. La sentencia que abre un archivo sin destruirlo y que permite agregar ms componentes al &inal del archivo es appendA(LB. La impresora que es un archivo de salida se puede abrir con re<rite8"L:, por ejemplo re<rite8=mpresora: 3peraciones de lectura o grabaci$n readANL, NRB' *eali$a la operacin de lectura. El registro a leer es en donde se encuentra el puntero al archivo Dluego de la lectura el puntero avan%a a la pr$0ima componenteE. %l leer en un archivo binario se lee la componente completa, no hay posibilidad de leer una parte. La lectura de un registro en un archivo binario se reali$a en &orma directa desde el dispositivo de almacenamiento. Es decir, cada intento de leer

Clase 8

A"E

*.).(. +.,.-.A.

Pgina .:

Apuntes del Prof. Hugo A. Cuello

Archivos

se debe acceder al disco. En cambio en un archivo de texto se lee desde un bu&&er en la memoria interna, si hay algo para leer, sino, se accede al disco. =ntentar leer en una ubicacin &uera del l!mite del archivo ocasionar en un error de lectura, indicado por el compilador pascal con el nmero 6LL. Estamos &uera de los l!mites del archivo cuando el puntero est ms all del tama/o del archivo, o bien cuando el puntero al archivo haya quedado posicionado antes de la direccin cero, hacer un intento de lectura en estos casos provocar el error anteriormente indicado. En un archivo de texto readln luego de leer reali$a un salto a la prxima l!nea. Ej.' read8%lumnos, r%lumno: r%lumno es la variable de tipo compatible con cada componente del tipo de archivo binario, no se podr leer solamente una parte de dicha componente, es decir hacer read8%lumnos, r%lumnos."roLeg: est mal. Crite(NL, NRB' *eali$a la operacin de grabacin. El registro a grabar es en donde se encuentra el puntero al archivo en ese momento Dluego de la grabaci$n el puntero avan%a a la pr$0ima componenteE. %l grabar en un archivo binario se graba la componente completa, no hay posibilidad de grabar una parte. La grabaci]on en un archivo binario se reali$a en &orma directa hacia el dispositivo de almacenamiento. Es decir, por cada intento de grabar se debe acceder al disco. En cambio en un archivo de texto se graba hacia un bu&&er en la memoria interna, si se llena entonces es enviado al dispositivo externo, o sea, al disco. (i el puntero al archivo se encuentra sobre un registro existente, se actuali$ar con la in&ormacin en el momento de reali$ar la grabacin en cambio si el puntero se encuentra coincidiendo con el &in de archivo, se genera un nuevo registro y el tama/o del archivo se expande una componente ms. %hora bien, Tqu suceder si se ubica el puntero al archivo mucho ms all de la marca de &in de archivo, digamos I posiciones ms y se intenta grabarU. (e generan todos esos registros, solamente el registro que se graba tendr valores conocidos, pero los registros intermedios contendrn basura, ya que no sabemos qu valores habr all!, tambin en estos casos se expande el tama/o del archivo. ,or lo tanto ubicar el puntero ms all del tama/o del archivo y grabar luego no generar ningn error en tiempo de ejecucin. ,ero, Tqu suceder si ubicamos el puntero al archivo antes de la primer componente, es decir, antes de la ubicacin ceroU, intentar grabar producir un error en tiempo de ejecucin. Ej.' <rite8%lumnos, r%lumnos: r%lumno es la variable de tipo compatible con cada componente del tipo de archivo binario, no se podr grabar solamente una parte de dicha componente, es decir hacer <rite8%lumnos, r%lumnos."roLeg: est mal. En un archivo de texto <riteln luego de grabar salta al comien$o de la prxima l!nea. La impresora es un archivo de texto al cual podremos enviar in&ormacn, el &ormato es <rite8"L, exp: o <riteln8"L, exp:. En el primer caso imprime el resultado de la expresin y permanece en la misma l!nea, en cambio en el segundo caso luego de imprimir avan$a a la prxima l!nea. E4emplos' <rite8=mpresora, a,cad,\1ensaje' `,titulo,3.2J'H'2: <rite8lst,\)omo ests `,"om: en donde lst es una variable de tipo text de&inida en la unidad ,rinter, al cual debemos indicar en nuestro programa en la seccin uses. <riteln8=mpresora,\El total es' `,tot5en'H'2: *esumiendo' hacer read o Crite cuando el puntero est en una posicin menor a cero est mal y generar un error en tiempo de ejecucin por otro lado si el puntero al

Clase 8

A"E

*.).(. +.,.-.A.

Pgina .<

Apuntes del Prof. Hugo A. Cuello

Archivos

archivo se encuentra ms all del tama/o del archivo, hacer read est mal, pero hacer Crite no es error. closeANLB' )ierra el archivo indicado en su argumento. Esta operacin deber reali$arse cuando ya no debamos operar ms con el archivo. )on los archivos de texto esta accin es muy importante ya que si no cerrramos el archivo perder!amos parte de la in&ormacin debido a que si el bu&&er no se llen, lo que qued all! no ser!a enviado al disco. En cambio si cerramos el archivo, close antes de cerrarlo veri&icar!a si hay algo pendiente de enviar desde el bu&&er, si es as! se &or$ar!a primero a enviar lo que hay all! al disco y luego se cerrar el archivo. En un archivo binario al no trabajar con el bu&&er esta situacin no existe, no obstante, es aconsejable cerrar igualmente el archivo. La impresora como archivo de texto debe ser cerrada, pero no si usamos la variable lst de la unidad printer, ya que la unidad se encarga de cerrarla. Ej.' close8%lumnos: close8=mpresora: eofANLB' Es una &uncin que retorna un valor de verdadero si el puntero est en &in de archivo, lo mismo si se encuentra en una posicin menor a cero caso contrario retorna &also. Esta &uncin es comn emplearla cuando leemos secuencialmente en un archivo, como condicin en la cabecera de un ciclo inde&inido, negando el valor retornado, como por ejemplo Chile not eof/%lu*nos0 do beg;n read8%lumnos, r%lumno: ... end filesi%eANLB' ?uncin que retorna un valor longint que indica el tama/o del archivo en cantidad de registros. ,or ejemplo, <riteln8&ile(i$e8%lumnos: o este otro ejemplo for i'D 6 to &ile(i$e8%lumnos: do begin read8%lumnos, r%lumno: ... end fileposANLB' ?uncin que retorna un valor longint que indica la posicin en que se encuentra el puntero en el archivo indicado por "L. ,or ejemplo <riteln8&ile,os8%lumnos:: seeFANL, dirB' #bica al puntero del archivo indicado por NL, en la direccin indicada por dir. El segundo parmetro puede ser una expresin. (e podr ubicar el puntero dentro o &uera del tama/o del archivo, sin generar ningn error, inclusive antes de la posicin cero. Ej.' seeV8%lumnos, 3: seeV8%lumnos, &ile(i$e8%lumnos:: la ubicacin nueva coincide con eo&. seeV8%lumnos, &ilepos8%lumnos:: seeV8%lumnos, &ile(i$e8%lumnos: 0 6: la ubicacin nueva coincide con el ltimo registro existente en el archivo. truncateANLB' (entencia que trunca o corta el archivo a partir en donde se encuentre el puntero al archivo. %ctuali$a el tama/o del archivo. Clase 8 A"E *.).(. +.,.-.A. Pgina .8

Apuntes del Prof. Hugo A. Cuello

Archivos

(i tomamos un archivo que contiene 6I registros y cambiamos el puntero al archivo a la ubicacin M, seeV8%lumnos, M: y luego hacemos truncate8%lumnos: se eliminarn todos los registros locali$ados desde la ubicacin M hasta la ubicacin 6J inclusives, es decir, ahora el tama/o del archivo se comprimi a M registros, desde la posicin cero hasta la posicin seis. renameA(L (@3(+B' ,ermite renombrar el archivo indicado por "L con otro nuevo nombre &!sico, la actuali$acin se reali$a en el directorio del disco. (e debe cerrar el archivo antes. Ej.' rename8%lumnos, `(tudent.+at\: eraseANLB' Elimina o borra el archivo indicado por "L, del directorio en el disco. (e debe cerrar el archivo antes. Ej.' erase8%lumnos: %rchivo binario con 62 registros con direcciones WL 66X

Clase 8

A"E

*.).(. +.,.-.A.

Pgina .>

Apuntes del Prof. Hugo A. Cuello

Archivos

Leer o >rabar aqu! produce error


eo&

Leer aqu! produce error

7 6L 66

>rabar aqu! est bien

S; el puntero al archivo esta en 2 eof es true

22 eof es false

222 eof es true

(i el puntero al archivo est ubicado en la marca de eo&, reali$ar una operacin de lectura producir un error en tiempo de ejecucin y se aborta el programa, lo mismo ocurrir si est ms all de la marca de eo&, pero grabar esta bin y se expande el tama/o del archivo una componente ms y la marca se reubica despus del registro grabado, coincidiendo con el puntero al archivo. (i el puntero al archivo est ubicado en una direccin ms alejada digamos 6I y se graba un nuevo registro, tambin se graban los registros 62 a 6J pero su contenido ser desconocido. (i el puntero al archivo est ubicado en una direccin menor a L reali$ar una operacin de lectura o escritura producir un error en tiempo de ejecucin y se aborta el programa. La &uncin eo&8&: retornar verdadero si el puntero al archivo se encuentra &uera de los l!mites del archivo, esto es, si est ms all de la marca eo& o si se movi el puntero al archivo a una direccin menor a L.

Clase 8

A"E

*.).(. +.,.-.A.

Pgina 1?

Potrebbero piacerti anche