Fisiere pascal

12
Generalități despre fișiere

description

Tipul de date fisiere

Transcript of Fisiere pascal

Generalități despre fișiere

Noțiuni generale 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”).

Declararea unui fișier. Exemple1) 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 : FisierEleviE : Elev;

Asocierea fișieruluiÎ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’);

Operații asupra unui fișier 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 citirerewrite(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).

Ordinea apelurilor procedurilor prelucrării datelor

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.

Fişiere secvențiale 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).

Crearea unui fișier cu componente de tipul Elev

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); { închide FE } readln;end.

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.

Citirea unui fișier cu componente de tipul Elev

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); { închide FE } readln;end.

Probleme și exerciții: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.

Probleme și exerciții:

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.