Fisiere pascal
-
Upload
colegiul-de-industrie-usoara -
Category
Education
-
view
1.551 -
download
5
description
Transcript of Fisiere pascal
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.