1.Turbo Pascal priveste
hard-ware-ul exterior cu care lucreaza – imprimanta, tastatura, ecran, etc- ca periferice. Desi majoritatea au
caracteristici diferite, programele solicitacai standard de comunicare cu ele. Solutia o reprezinta fisierele.
Pentru a stabili comunicatii, un program deschide un
fisier de la periferic. Dupa aceea , transmite date si, daca este cazul,
receptioneaza informatii. Cand operatia este incheiata,programul inchide
fisierul
Definitie;Un fisier Pascal este o variabila speciala care permite
comunicatii cu orice periferic.
Exista trei tipuri de fisiere Pascal;
-fisiere text
-fisiere cu tip
-fisiere fara tip
Numarul
componentelor fisierului nu este determinat de definitia sa
2.FISIERE TEXT
Acest tip de fisier contine caractere structurate pe
linii ,fiecare linie fiind terminata cu marker-ul de sfarsit de linie ( end-of-line), starea de sfarsit de
linie putand fi determinata cu ajutorul functiei Eoln. Marker-ul de sfarsit de linie este caracterul CTRL+Z.
In
fisierele de tip text pot fi stocate atat valori de tip caracter sau string, cat
si valori intregi sau reale.
a.Declararea unui fisier text:var nume_fisier:text;
b.Accesul pentru fisierele
text este secvential. Pentru a asocia variabila de tip fisier cu un fisier
extern, se foloseste procedura ASSIGN(fisier,nume);nume este o succesiune de caractere care va identifica din punct de
vedere fizic variabila fisier.
Obs. Asocierea ramane valabila pana laun nou apel al ASSIGN.
Apelul se termina cu eroare daca fisierul fizic este deschis in timpul
apelului.
c.Deschiderea unui fisier text
se realizeaza cu una din urmatoarele rutine:
-REWRITE(fisier)àcreeaza si deschide un fisier in vederea scrierii.
Obs.Apelul se termina cu eroare daca nu este loc
suficient pe disc pentru noul fisier.In momentul apelului se initializeaza
indicatorul de fisier cu valoarea 0 si se permit apoi operatii de scriere.
Daca fisierul s-a deschis prin
executia acestei proceduri, operatiile de citire sunt permise numai dupa ce
s-au facut scrieri.
-RESET(fisier)àDeschide un fisier existent in vederea citirii.
Obs.Daca fisierul este deschis in momentul
apelului, acesta se inchide si apoi se redeschide.
-APPEND(fisier)àdeschide un fisier existent
in vederea adaugarii de noi date
-CLOSE(fisier)àinchide fisierul, interzicand operatiile ulterioare de citire/scriere
pana la o noua deschidere.
Obs.
Daca la scrierea componentelor in fisier se omite inchiderea acestuia la
sfarsitul prelucrarii, exista riscul ca ultimele informatii din zona tampon
asociata fisierului sa nu se mai salveze in fisier.
Prelucrarile admise asupra unui
fisier sunt:
-creareaàscrierea componentelor in
fisier
-exploatareaàcitirea si prelucrarea
componentelor
-actualizareaàadaugarea, modificarea,
stergerea unor componente prin operatii de citire/scriere.
Orice
prelucrare incepe cu deschiderea fisierului si se incheie cu inchiderea sa-à REWRITE/RESET respectiv
CLOSE
Indicatorul asociat fisierului text
cuprinde numarul de ordine (incepand de la 0 ) al caracterului curent (
caracterul care urmeaza sa fie prelucrat) din zona tampon ( buffer) asociata
fisierului . Dimensiunea acesteia este, in general, 128 BYTES, dar poate fi
modificata prin procedura SETTEXTBUF(fisier,buffer),
unde buffer reprezinta in general un
tablou de caractere ( buffer:array[1..10240] of char;) .
In unit-ul SYSTEM sunt declarate
variabilele standard INPUT si OUTPUT
de tip text.Aceste variabile sunt asociate implicit dispozitivului
consola.Aceasta asociere se poate schimba prin folosirea procedurii ASSIGN.
Actualizarea unui fisier text
presupune de obicei crearea unui nou fisier.Este posibil sa se adauge sau sa se
stearga componente situate la sfarsitul fisierului(TRUNCATE(fisier)àscrie un marcaj de sfarsit
de fisier , in locul indicat de indicatorul de fisier).
Procedurile
si functiile utilizate mai des sunt:
-READ(fisier,lista_variabile);àpreia din
fisierul specificat (daca lipseste se considera INPUT) o lista de valori care
se stocheaza in ordine, in variabilele din lista_variabile;
Variabilele pot fi de tip char, string,intreg sau subdomeniu
de intregi, sau real.
-READLN(fisier,lista_variabile)àneglijeaza caracterele ramase neasociate din linia
curenta a fisierului fizic asociat variabilei fisier; in rest are acelasi efect
cu READ.
-WRITE(fisier,lista_expresii);àse scriu
valorile expresiilor date in fisierul fizic asociat variabilei fisier; daca
acesta lipseste, se considera implicit OUTPUT
-WRITELN(fisier,lista_expresii)àare acelasi
efect ca si WRITE, cu deosebirea ca scrie un marcaj de sfarsit de linie in
fisierul fizic asociat.
-CLOSE(fisier)àse scrie in fisierul fizic
marcajul de sfarsit de fisier.
-EOF(fisier);bolean;à functia
returneaza TRUE daca s-a intalnit
marcajul de sfarsit de fisier sau daca fisierul este vid;altfel, returneaza FALSE.
-SEEKEOLN(fisier):boolean;à daca
indicatorul de fisier este initializat cu numarul de ordine al unui caracter
egal cu ‘ ‘ sau TAB, se creste valoarea indicatorului astfel incat el sa indice
un caracter diferit de spatiu sau TAB; returneaza TRUE cand caracterul cu al carui numar de ordine este initializat
indicatorul, reprezinta un marcaj de sfarsit de linie sau fisier, altfel
returneaza FALSE( deci se face un salt peste caracterele blanc sau TAB, spre
deosebire de EOLN)
-SEEKEOF(fisier):boolean;àreturneaza TRUE cand caracterul indicat de
indicatorul de fisier (sarind peste blanc,TAB sau sfarsit de linie) este
sfarsit de fisier
-ERASE(fisier)àrealizeaza stergerea
fisierului fizic asociat variabilei fisier(acesta
trebuie sa fie inchis in momentul apelului)
-RENAME(fisier,nume_nou);àredenumeste
fisierul fizic asociat variabilei fisier
cu noul nume;acesta trebuie sa fie inchis si sa nu existe un altul avand numele
nume_nou.
Exemplu:
Urmatorul program permite crearea,scrierea,citirea si redenumirea unui fisier
text. Aceste operatii sunt selectate dintr-un meniu utilizator din care se
selecteaza SCRIERE sau CITIRE.Dupa aceea programul solicita introducerea
numelui fisierului cu care se va opera.
Daca s-a selectat operatia de
scriere, programuil verifica daca pe disc exista un fisier cu numele introdus
de utilizator; in cazul in care functia EXISTAFISIER returneaza true, programul
deschide fisierul in modul APPEND, pentru a adauga noi date la sfarsitul
acestuia, altfel se creeaza si se deschide unul nou cu procedura REWRITE>
Daca s-a selectat operatia de
citire, programul asigneaza variabilei F numele introdus,deschide fisierul
pentru citire (RESET) si citeste continutul acestuia.
Fisierul cu care s-a lucrat este
inchis cu ajutorul procedurii CLOSE; daca se doreste schimbarea numelui , se
apeleaza RENAME.
Program
operatii_fisier_text;
Uses
CRT,DOS;
Var
sir,numefis,numenou:string[80];
F:text;Ch;char;
Function
existafisier(numefis:pathstr):boolean;
Var f:file;
Begin
ASSIGN(f,numefis);
RESET(f);CLOSE(f);
existafisier=IORESULT=0
end;
Procedure
citire;
Var
nrlin:word;
Begin
Write(‘introduceti numele
fisierului:’);Readln(numefis);ASSIGN(f,numefis);RESET(f);nrlin:=0;
If ch=’S’ then scriere elseif ch=’C’ then citire else meniu;
End;
BEGIN
REWRITE(OUTPUT);
While not EOF(fisier) do begin
While
not EOLN(fisier) do begin
Read(fisier,c);
Write(c);
end
writeln; readln(fisier)
end;
CLOSE(fisier);
2.ADAUGARE la sfarsitul unui
document existent
ASSIGN(fisier,’document’);
APPEND(fisier);
While not EOF do begin readln(sir);
Writeln(fisier,sir);End;
CLOSE(fisier);
APLICATII cu fisiere text:
1.Sa se creeze un fisier text
pe disc si sa se listeze la imprimanta;
2.Sa se adauge noi linii la
sfarsitul fisierului text creat anterior;
3.Sa se stearga eventualele
linii videsau “albe”( formate numai din
blancuri sau caractere TAB) din fisierul creat la 1.
4.Scrieti un program care
citeste din fisierul INPUT.TXT un numar n
si din fisierul NUMERE.TXT n numere
intregi.Sa se ordoneze crescator cele n
numere si sa se scrie elementele ordonate in fisierul OUTPUT.TXT.
Document Info
Accesari:
296
Apreciat:
Comenteaza documentul:
Nu esti inregistrat Trebuie sa fii utilizator inregistrat pentru a putea comenta