Prin fișiere se înțelege o structură de date care constă dintr-o secvență de componente. Fiecare componentă din secvență are același tip, tip de bază. Numărul componentelor din secvență nu este fixat,însă sfârșitul secvenței este indicat de un simbol special,notat EOF (End of File- sfîrșit de fișier). Un tip de date fișier se definește într-o declarație de forma: <Tip fișier>= file of <Tip>; unde <Tip>este tipul de baza. Tipul de baza este un tip arbitrar, exceptând tipul fișier(nu exista ”fișier de fișiere”).
1) type FisierNumere=file of integer; Var FN : FisierNumere; N : integer; 2) type FisierCaractere=file of char; Var FC: FisierCaractere; C : char; 3)type Elev=record Nume : string; Prenume : string; NotaMedie : real; End; FisierElevi=file of Elev; var FE : FisierElevi E : Elev;
Înainte de a fi utilizată,o variabilă fișier trebuie asociată cu un fișier extern. În pascal asocierea se face prin includerea variabilelor de tip fișier ca argument în antetul programului cu ajutorul procedurii assign (f, s) s- expresie de tip șir de caractere care arată calea către fișier. Exemple assign (FN, ‘C:\r.dat’);
Citirea se realizează prin: read(f,v) unde v este o variabilă declarată cu tipul de bază al fișierului f. Scierea unei componente : write(f,e) unde e este o expresie asociată cu tipul de bază al fișierului f. Pentru a putea lucra cu fișierul el trebuie deschis, aceasta se face cu ajutorul procedurilor: reset(f) – pregătește un fișier existent pentru citire rewrite(f) – creează un fișier vid și îl pregătește pentru scriere. După prelucrarea componentelor fișierul trebuie închis cu ajutorul procedurii close(f).
1) assign(f,s) – asocierea fișierului pascal f cu fișierul extern f. 2) reset (f)/rewrite(f) – deschiderea fișierului pentru citire/scriere. 3) read(f,v)/write(f,e) – citirea/scrierea unei componente în fișierul f. 4) close(f) – închiderea fișierului f.
Deschiderea
unui fişier secvenţial pentru înscriere se face cu ajutorul procedurii rewrite(f) Înscrierea componentei cu ajutorul procedurii write(f,e) sau write(f,e1,e2,e3…) unde e este o expresie de tipul componentei fișierului. După înscrierea ultimei componente fișierul trebuie închis cu ajutorul procedurii close(f).
Program P89; type Elev=record Nume : string; Prenume : string; NotaMedie : real end; FisierElevi=file of Elev; var FE : FisierElevi; E : Elev; str : string; i, n : integer; begin write('Dați numele fișierului de creat: '); readln(str); assign(FE, str); { asociază FE cu numele din str } rewrite(FE); { deschide FE pentru scriere } write('Dați numтrul de elevi: '); readln(n); for i:=1 to n do begin
writeln('Dați datele elevului ', i); { citește cîmpurile variabilei E de la tastatură } write('Numele: '); readln(E.Nume); write('Prenumele: '); readln(E.Prenume); write('Note medie: '); readln(E.NotaMedie); write(FE, E); { scrie E în FE } end; close(FE); readln; end.
{ închide FE }
Pentru a citi informația dintr-un fișier secvențial se apelează procedura reset(f). Componenta curentă se citește cu procedura read(f,v)sau read(f,v1,v2,v3…). Sfîrșitul fișierului este semnalată de funcția eof(f) care întoarce true după citirea ultimei componente.
Program P90; type Elev=record Nume : string; Prenume : string; NotaMedie : real end; FisierElevi=file of Elev;
var FE : FisierElevi; E : Elev; str : string; begin write('Daюi numele fișierului de citit: '); readln(str); assign(FE, str); { asociază FE cu
numele din str } reset(FE); { deschide FE pentru citire } while not eof(FE) do begin read(FE, E); { citește E din FE } writeln(E.Nume, ' ', E.Prenume, E.NotaMedie : 5:2); { afișează E la ecran } end; close(FE); readln; end.
{ închide FE }
1. Se consideră următoarele tipuri de date: type Data=record ziua: 1..31; luna: 1..12; anul: integer; end; Persoana=record Numeprenume: String; datanasterii: Data; end; FisierPersoane =file of Persoana; Elaborați un program care citește datele de la tastatură referitoare la n persoane și înscriețile în fișiere. Creați fișierele FILE.PRS, FILE2.PRS , FILE3.PRS care conțin datele referitoare la 2,7 și 10 persoane. 2. Elaborați un program care citește fișierele create în problema 1 și afișează pe ecran: a) Toate persoanele din fișier. b) Persoanele născute în anul a citit de la tastieră. c) Persoanele născute pe data z.l.a.
3. Elaborați un program care afișează pe ecran media aritmetică a numerelor înscrise într-un fișier de tipul file of real. 4. Într-un fișier de tip file of char sunt înscrise caractere arbitrare. Elaborați un program care afișează pe ecran numărul vocalelor din fișier.