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; writeln('Dați datele elevului ', i); type Elev=record { citește cîmpurile variabilei E de la Nume : string; tastatură } Prenume : string; write('Numele: '); readln(E.Nume); NotaMedie : real write('Prenumele: '); readln(E.Prenume); end; write('Note medie: '); readln(E.NotaMedie); FisierElevi=file of Elev; write(FE, E); { scrie E în FE } var FE : FisierElevi; end; E : Elev; str : string; close(FE); { închide FE } i, n : integer; readln; end. 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 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; numele din str } type Elev=record reset(FE); { deschide FE Nume : string; pentru citire } Prenume : string; NotaMedie : real while not eof(FE) do end; begin FisierElevi=file of Elev; read(FE, E); { citește E din FE } writeln(E.Nume, ' ', E.Prenume, var FE : FisierElevi; E.NotaMedie : 5:2); E : Elev; { afișează E la ecran } str : string; end; begin close(FE); { închide FE } write('Daюi numele fișierului de readln; citit: '); end. readln(str); assign(FE, str); { asociază FE cu 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.