UNIDAD 5: PROGRAMACION PASCAL REGISTROS Y ARCHIVOS SECUENCIALES

TEMA 6: GRABACION Y LECTURA DISCO PROGRAMACION PASCAL

Como ya se menciono grabar y lectura de registros o estructuras a renglones o registros de archivos en disco, son los procesos mas comunes y frecuentes que se pueden realizar con un archivo de disco.

GRABACION DE UNA ESTRUCTURA A UN ARCHIVO EN DISCO

prog17.pas

program prog17;
uses crt;
type
alumnos = RECORD
clave:integer;
nombre:string[30];
estatura:real;
end;
var
alumno:alumnos;
archivo: file of alumnos;
ren:integer;
BEGIN
clrscr;
(* creando y abriendo el archivo *)
assign(archivo,'c:\prog\alumnos.dat');
rewrite(archivo);
(* ciclo para capturar y grabar tres registros *)
for ren:= 1 to 3 do
begin
(* capturando registro *)
write('dame clave : ');readln(alumno.clave);
write('dame nombre : ');readln(alumno.nombre);
write('dame estatura : ');readln(alumno.estatura);
(* grabando el registro al archivo *)
write(archivo, alumno);
end;
(* cerrando archivo y avisando *)
close(archivo);
writeln;writeln;
writeln('REGISTROS INSERTADOS');
readln;
END.

corrida:

image248.jpg

La unica instrucion nueva es:

write(archivo,alumno);

Como se observa ocupa 2 parametros que son:

El alias del archivo y el registro.

POR SUPUESTO QUE USTEDES NO DEBEN USAR CICLO FOR SINO UN CICLO WHILE Y ESTARLE PREGUNTANDO AL USUARIO SI QUIERE CAPTURAR Y GRABAR OTRO REGISTRO.

AGREGAR NUEVOS REGISTROS

El siguiente procedimiento nos permitira agregar nuevos registros a un archivo existente, recordar que rewrite borra un archivo si ya existe;

Prog18.pas

program prog18;
uses crt;
type
alumnos = RECORD
clave:integer;
nombre:string[30];
estatura:real;
end;
var
alumno:alumnos;
archivo: file of alumnos;
BEGIN
clrscr;
(* creando y abriendo el archivo *)
assign(archivo,'c:\prog\alumnos.dat');
reset(archivo);
(* moviendo apuntador al final del archivo existente *)
seek(archivo,filesize(archivo));
(* capturando registro *)
write('dame clave : ');readln(alumno.clave);
write('dame nombre : ');readln(alumno.nombre);
write('dame estatura : ');readln(alumno.estatura);
(* grabando el registro al archivo *)
write(archivo, alumno);
(* cerrando archivo y avisando *)
close(archivo);
writeln;writeln;
writeln('NUEVO REGISTRO INSERTADO');
readln;
END.

Corrida:

image249.jpg

Las instrucciones nuevas son:

Reset(archivo), abre el archivo PERO EL ARCHIVO YA DEBE EXISTIR ya sea con el programa de creacion (prog16.pas) o con el de grabacion de registros (prog17.pas), si el archivo no existe, reset manadara un error de IO.

Seek(archivo,filesize(archivo)) esta instruccion mueve el apuntador o puntero al final del archivo en disco.

Otra vez por cada registro estamos grabando 38 bytes de informacion, la string de 30 y 8 bytes por el entero y el real, ademas recordar que al cerrarse el archivo pascal le aumento 1 byte con la marca o simbolo de fin de archivo (EOF), por esta razon si ustedes desde msdos ven el archivo, msdos les avisa que tiene 39 bytes.

Filesize(archivo) es otra funcion de archivos que nos regresa cuantos bytes tiene el archivo en este caso 39.

Seek nos posiciona en el byte 39, que es precisamente la marca de EOF, la sigueinte escritura de archivos de 38 bytes, empezara sobreescribiendo la marca EOF, que es realmente lo que se quiere realizar.

LECTURA DE REGISTROS

Prog19.pas

program prog19;
uses crt;
type
alumnos = RECORD
clave:integer;
nombre:string[30];
estatura:real;
end;
var
alumno:alumnos;
archivo: file of alumnos;
BEGIN
(* creando y abriendo el archivo *)
assign(archivo,'c:\prog\alumnos.dat');
reset(archivo);
(* iniciando ciclo de lectura de registros en archivo *)
while not(EOF(archivo)) do
begin
clrscr;
READ(archivo,alumno);
write('clave : ');writeln(alumno.clave);
write('nombre : ');writeln(alumno.nombre);
write('estatura : ');writeln(alumno.estatura:0:2);
write('<enter> para continuar');readln;
end;
(* cerrando archivo *)
close(archivo);
readln;
END.

corrida:

image250.jpg

Las instrucciones nuevas son:

while not(EOF(archivo)) do

NOT(EOF), se esta indicando al compilador que lea los registros mientras no se encuentre la marca o simbolo de fin de archivos (END OF FILE).

READ(archivo,alumno);

Funcion complementp de write, read lee el archivo y carga el registro.

PROGRAMACION TAREAS PASCAL

1.-crear, cargar y leer un archivo de empleados y otro de productos convirtiendo los programas a procedimientos, dejar el registro global y en principal hacer un menu con case.

Politica de Privacidad