Está en la página 1de 2

Algoritmos y Estructuras de Datos

Al terminar de trabajar con el archivo, siempre debemos cerrarlo, lo que logramos con close
en el programa anterior deberamos poner la sentencia close(unarchi)

Existe una funcin que nos devuelve el tamao del archivo en cantidad de registros, es filesize.
Si para este archivo (supongamos que lo referenciamos como zarch),

.
registro registro registro registro registro registro registro
a .

tenemos en el programa filesize(zarch), nos devolver el entero 7. Podramos tener, por


ejemplo una sentencia n:= filesize(zarch) (estamos suponiendo que n es de tipo integer)

En Pascal los registros tienen asignados nmeros enteros consecutivos a partir de 0.

.
registro 0 registro 1 registro 2 registro 3 registro 4 registro 5 registro 6
a .
vvv sealador o puntero
(en este caso apuntando al registro 4)

Podemos pensar que los archivos tienen un sealador o puntero que siempre est apuntando
al prximo registro a ser procesado.

La funcin filepos devuelve el nmero del registro apuntado, para el dibujo anterior,
filepos(zarch) devolver el entero 4.

La instruccin seek posiciona el puntero en el registro a ser procesado. Por ejemplo


seek(zarch,5) har que el puntero apunte al registro 5.

En vez de poner un nmero entero, podemos poner una variable de tipo integer. Por ejemplo
seek(zarch,k) (donde suponemos que es k una variable entera que tiene un cierto valor).

Veamos ahora dos instrucciones que se usan para leer informacin de un archivo o grabar
informacin en un archivo. Son, respectivamente read y write.
.x(ejemplificamos para archivo de registros)

read(variableTipoArchivo,variableTipoRegistro) lee el registro apuntado y lo asigna


a la variable variableTipoRegistro, y pasa a apuntar al registro siguiente.

write(variTipoArchivo,variTipoRegistro) graba el registro contenido en la variable


variTipoRegistro en la posicin apuntada y pasa a apuntar al registro siguiente.

notemos que leemos o grabamos registros completos

Reiteramos: despus del read y/o del write el puntero pasa a apuntar al registro siguiente.

54
Algoritmos y Estructuras de Datos
write('Ingrese un real'); readln(x); write(x)
end.

nos pedir cinco veces que ingresemos por teclado un real y lo grabar en la pantalla.

Supongamos que ingresamos los reales 1.75 -2.0 1.0 3.1 y -1.11

La pantalla se mostrar mas o menos as:

Ingrese un real 1.75


1.7500000000E+00
Ingrese un real -2.0
-2.0000000000E+00
Ingrese un real 0.0
1.0000000000E+00
Ingrese un real 3.1
3.1000000000E+00
Ingrese un real -1.11
-1.1100000000E+00

Hemos puesto en verde claro los carteles y en verde oscuro lo que ingresamos por teclado y
lo que est en negro representa lo que muestra el programa por pantalla.

Cuando el programa termina y comenzamos cualquier otro trabajo, la pantalla se borra y los datos
que haba en ella se pierden.

Supongamos que no queremos perder los datos leidos. Vamos a guardarlos en un archivo al que
llamaremos archifac.dat al que lo pondremos en una carpeta cualquiera, por ejemplo c:\com99.
Para hacer referencia al archivo en el programa lo llamaremos prueba.

Simplemente cambiamos las write esas

program archifac1(input,output);
var prueba: file of real; x: real;
begin assign(prueba, 'c:\com99\archifac.dat');
rewrite(prueba);
write('Ingrese un real'); readln(x); write(prueba,x);
write('Ingrese un real'); readln(x); write(prueba,x);
write('Ingrese un real'); readln(x); write(prueba,x);
write('Ingrese un real'); readln(x); write(prueba,x);
write('Ingrese un real'); readln(x); write(prueba,x); close(prueba)
end.

Ahora, (suponiendo que ingresamos los mismos cinco valores) el archivo c:\com99\ archifac.dat
qued con esos cinco valores ya mencionados grabados, los cuales se conservarn.

1.75 -2.0 1.0 3.1 -1.11

56

También podría gustarte