1.5. GENERALITĂȚI DESPRE FIȘIERE

Prin fişier se înţelege o structură de date care constă dintr-o secvenţă de  componente. Fiecare componentă din secvenţă are acelaşi tip, denumit 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). Fişie­rul care nu conţine nici o componentă se numeşte fişier vid.

Un tip de date fişier se defineşte printro declaraţie  de forma:

<Tip fişier> ::= [packed] file of <Tip>;

unde <Tip> este tipul de bază. Tipul de bază este un tip arbitrar, exceptînd tipul fişier (nu există “fişier de fişiere”).

Exemple:

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;

Variabilele FN, FC, FE ş.a. de tip fişier se numesc fişiere logice, fişiere PASCAL sau, pur şi simplu, fişiere. Spre deosebire de celelalte tipuri de date, valorile căro­ra se păstrează în memoria internă a calculatorului, datele fişierelor PASCAL se păstrează pe suporturile de informaţie ale echipamentelor periferice.

Informaţia pe suporturile în studiu este organizată în formă de fişiere externe în conformitate cu cerinţele sistemului de operare. Prin urma­re, înainte de a fi utilizată, o variabilă fişier trebuie asociată cu un fişier extern. Metodele de asociere sînt specifice implementării limbajului şi sistemului de ope­rare al calculatorului-gazdă.

In limbajul-standard asocierea se realizează prin includerea variabilelor de tip fişier ca argumente în antetul de program.

In Turbo PASCAL asocierea unei variabile de tip fişier f cu un fişier extern se realizează prin apelul de procedură

Assign(f,s);

unde s este o expresie de tip string care specifică calea de acces şi numele fişie­rului extern.

Exemple:

1)      assign (FN, 'A:\REZULTAT\R.DAT');

- fişierul FN se asociază cu fişierul extern R. DAT din directorul REZULTAT de pe discul A.

2)      assign(FC, 'C:\A.CHR')

- fişierul FC se asociază cu fişierul A. CHR din directorul-rădăcină al discului C.

3) write (' Dati un nume de fişier:' };

readln(str);

assign(FE, str);

- fişierul FE se asociază cu un fişier extern numele căruia este citit de la tas­tatură şi depus în variabila de tip string str.

După executarea instrucţiunii assign (f, 8) toate operaţiile referitoare la fi­şierul PASCAL / se vor efectua asupra fişierului extern s.

Cele mai uzuale operaţii asupra unui fişier sînt citirea şi scrierea unei compo­nente.

Citirea unei componente se realizează printr-un apel de forma

Read(f,v);

unde v este o variabilă declarată cu tipul de bază al fişierului f.

Scrierea unei componente se realizează printr-un apel de forma:

Write(f, e);

unde e este o expresie asociată cu tipul de bază al fişierului f .

Exemple:

1) Read(FN, n);

2)write(FC, c);

3)read (FE, E).

După tipul operaţiilor permise asupra componentelor, fişierele se clasifică în:

- fişiere de intrare (este permisă numai citirea);

- fişiere de ieşire (este permisг numai scrierea);

- fişiere de actualizare (sint permise atît scrierea, cit şi citirea).

După modul de acces la componente, fişierele se clasifică în:

- fişiere cu acces secvenţial sau secvenţiale (accesul la componenta i este per­mis după ce s-a citit/scris componenta i — 1);

- fişiere cu acces aleatoriu sau direct (orice componentă se poate referi direct prin numărul ei de ordine i în fişier).

Menţionăm că în limbajul-standard sînt permise numai fişiere secvenţiale de intrare sau ieşire.

Tipul fişierului (de intrare, ieşire sau de actualizare) şi modul de acces (secvenţial sau direct) se stabilesc printr-o operaţie de validare, numită deschidere a fişieru­lui. Pentru aceasta, în limbajul-standard se utilizează următoarele proceduri:

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.

Cînd prelucrarea componentelor se termină, fişierul trebuie închis. La închi­derea unui fişier sistemul de operare înscrie elementul EOF, înregistrează fişie­rul extern nou-creat în directorul respectiv ş.a.m.d.

În limbajul-standard se consideră că fişierele vor fi închise implicit la termi­narea execuţiei programului respectiv. In Turbo PASCAL fişierul  f ce închide prin apelul de procedură close(f).

În concluzie, prezentăm ordinea în care trebuie apelate procedurile destinate prelucrării datelor de tip fişier:

assign (f,s) — asocierea fişierului PASCAL  f cu fişierul extern s;

reset (f) /rewrite (f) — deschiderea fişierului f pentru citire/scriere;

read (f, v) /write (f, e) — citirea/scrierea unei componente a fişierului f;

close ( f) —închiderea fişierului  f .

După închiderea fişierului, variabila f poate fi asociată cu un alt fişier ex­tern.

Întrucît valorile variabilelor de tip fişier se păstrează pe suporturile externe de informaţie, în PASCAL atribuirile de fişiere sînt interzise.


Ultima modificare: luni, 6 iunie 2011, 19:44