Documente Academic
Documente Profesional
Documente Cultură
14
PROGRAME TURBO PASCAL
Prin fişier se înţelege o structură de date alcătuită dintr-o secvenţă de componente, fiecare
componentă din secvenţa având acelaşi tip.
Spre deosebire de tipul tablou (array), numărul componentelor unui fişier nu este fix. Datele
dintr-un fişier sunt păstrate pe un suport magnetic şi sunt accesibile prin subprograme de citire
sau scriere. La un moment dat este accesibilă direct numai o singură componentă a fişierului, iar
celelalte devin accesibile progresând secvenţial în fişier.
Programul ce urmează exemplifică modul de creare a unui fişier cu tip, fiecare înregistrare
(componentă) din fişier fiind de tip articol (record). O componentă de tip articol a fişierului
cuprinde un număr de şase câmpuri de tipuri diferite, în care se vor reţine pentru fiecare unitate
amenajistică (subparcelă) numărul unităţii amenajistice, suprafaţa, volumul, vârsta, urgenţa de
regenerare şi specia.
Variabila de tip fişier se asociază fişierului C:\TP\descr.dat prin procedura Assign, după care
fişierul este deschis pentru scriere prin procedura Rewrite. Programul exemplifică un caz
particular de scriere a numai cinci componente în fişier, dar se poate modifica pentru a crea
fişiere cu număr variabil, nefixat anticipat, de componente.
Pentru deschiderea fişierului existent pe disc şi adăugarea în continuare de înregistrări în fişier
se foloseşte procedura Reset. Fiecare componentă a fişierului are asociat un număr, începând cu
0 (zero) pentru prima înregistrare. Poziţionarea pe o componentă anume se face prin procedura
Seek precizând ca argumente numele fişierului şi numărul componentei. La finalul programului
fişierul trebuie închis prin procedura Close.
Pentru executia programului s-au folosit datele din tabelul 3.8.
Date de descriere parcelară
Tabelul 3.8
Nr. Ua Supr.(ha) Volum Vârsta Urgenta Specia
(m3)
1 1A 10.2 2785 90 2 fag
2 1B 9.2 1626 45 3 fag
3 2 6.9 1757 55 3 molid
4 3A 14.5 5690 90 1 molid
5 3B 5.5 919 65 3 fag
Program descriere_parcelara_fisier:
type
date=record
ua: string[4];
supr: real;
vol: integer;
varsta: integer;
urgenta:integer;
specia: string[20];
end;
type
fis= file of date;
var
d:date;
fisam:fis;
a:string[4];
z:string[20];
x:real;
i,y,u,v:integer;
begin
assign(fisam,'C:\TP\descr.dat');
rewrite(fisam);
for i:=0 to 4 do
begin
assign(fisam,'C:\TP\descr.dat');
reset(fisam);
seek(fisam,i);
with d do
begin
writeln('Unitatea amenajistica nr. ',i+1);
write('ua='); readln(a); ua:=a;
write('suprafata='); readln(x); supr:=x;
write('vol='); readln(y); vol:=y;
write('varsta='); readln(v); varsta:=v;
write('urgenta='); readln(u); urgenta:=u;
write('specia='); readln(z); specia:=z;
write(fisam,d);
end;
close(fisam);
end;
end.
Program utilizare_fisier_descriere_parcelara;
type
date=record
ua:string[4];
supr:real;
vol,varsta,urgenta:integer;
specia:string[20];
end;
var
fisam:file of date;
i,j:integer;
d:date;
begin
assign(fisam,'C:\TP\descr.dat');
reset(fisam);
i:=0;
writeln('arboretul u.a. suprafata varsta compozitia');
writeln('************************************');
while not eof(fisam) do
begin
i:=i+1;
read(fisam,d);
with d do
begin
writeln(i:4,' ',ua,' ',supr:4:1,' ',varsta,' ',specia);
readln;
end;
end;
close(fisam);
writeln('************************************');
end.