Documente Academic
Documente Profesional
Documente Cultură
Fiier este numit (adic care are numele) colectivitatea de date, nscrise pe disc.
Implicit dispozitivul de introducere a informaiei (dispozitivul de citire) n Turbo-Prolog este tastatura, iar
dispozitivul de ieire (dispozitivul de nscriere) - monitorul. Pentru a avea acces ctre datele fiierului, este
necesar ca acesta s fie deschis. Fiierul poate fi deschis pentru citirea, nscrierea, adugarea sau modificarea
datelor din fiier. Fiierul deschis pentru oricare aciune, n afar de citire, trebuie s fie nchis la sfritul
operaiei, altfel modificrile nu se vor salva.
Dup ce fiierul s-a deschis, Turbo-Prolog leag numele fiierului logic cu numele fiierului fizic. Numele
fiierului fizic este numele fiierului n sistemul de operare. Numele logic este utilizat de Turbo-Prolog pentru
readresarea canalelor intrare/ieire.
Numele fiierului logic se descrie n seciunea domeniilor n urmtorul mod:
La descrierea domeniilor fiier tipul domeniului file se amplaseaz n partea stng de egalitate, iar numele
logic al fiierului n dreapta. Numele simbolic al fiierului trebuie s se nceap cu o liter minuscul :
file=datafile
n descrierea fiierului pot fi indicate cteva nume logice, dar descrierea trebuie s fie una singur. De exemplu:
file=datafile1; datafile2; datafile3.
Concomitent pot fi deschise mai multe fiiere i canale de intrare/ieire pot fi readresate ntre fiierile deschise
(readresarea ocup mai puin timp dect deschiderea i nchiderea fiierilor).
Lucrul cu datele, ce se pstreaz n fiiere, se numete prelucrarea fiierelor. Ctre operaiile tipice aplicate
asupra fiierilor se refer:
crearea fiierului
nscrierea n fiier
citirea din fiier
modificarea fiierului deja existent
adugarea datelor noi n fiier.
La mod general crearea/nscrierea n fiier pote fi reprezentat prin urmtoarele consecutiviti de aciuni:
openwrite(f, exemplu.txt),
writedevice(f),
<predicatul de nscriere n fiier>,
closefile(f).
Adugarea n fiier :
openappend(f, exemplu.txt),
writedevice(f),
<predicatul pentru nchiderea fiierului >,
closefile(f).
Pentru stoparea inscrierii introducem predicatul verificare(string). Parametru este un ir. Citirea de la tastatur i
nscrierea n fiier se execut pn la introducerea irului "end" .
Ultimul predicat start execut rolul de scop n program. Nu are parametri.
Amplasai cursorul n fereastra de redactare i introducei textul programului. salvai fiierul atribuindu-i
numele FISIER1.PRO.
domains
file=f /* f numele intern al fiierului */
scrie
verificare(string)
start
create_f(string)
nume(string)
clauses
nume(X) if write("introduceti numele de fisier : "), /* extragerea mesajului la ecran*/
create_f(X) if write("cu nume " ,X, " exista fisier"), /* extragerea mesajului la ecran */
nl,start. /* apelul regulilei start */
Exemplu 2. Elaborai un program, care citete datele din fiier i le afi la ecran. Numele fiierului s se
introduc de la tastatur. Executai verificarea de existen a fiierului.
Definim predicatele i domeniile predicatelor:
Predicatul nume(string), ca i n exemplul precedent, servete pentru citirea numelui fiierului de la tastatur.
Predicatul open_f(string) va executa verificarea de existen a fiierului cu numele indicat. Dac existfile(X) are
valoarea adevr s deschid fiierul pentru citire, n caz contrar s afie mesajul de eroare i s ne propun
introducerea unui nume nou pentru fiier.
Predicatul citire - fr parametri, execut citirea datelor din fiier i afiarea lor la ecran.
Predicatul start execut rolul de scop n program. Nu are parametri.
Intrai n fereastra de redactare i introducei textul programului. Salvai fiierul atribuindu-i numele
FISIER2.PRO.
domains
file=f
predicates
citire
start
open_f(string)
nume(string)
clauses
nume(X) if write("introduceti numele de fisier : "),readln(X).
citire. /* aceast continuare este necesar, ca predicatul s nu euieze, cnd se va ajunge la sfritul fiierului
*/
Exemplu 3. Elaborai un program, care citete datele din fiier din poziia indicat i le afi la ecran. Numele
fiierului i numrul poziiei se vor citi de la tastatur. Executai verificarea de existen a fiierului.
Intrai n fereastra de redactare i copiai textul programului din exemplul 2. Executai modificrile conform
textului prezentat mai jos. Salvai fiierul atribuindu-i numele FISIER3.PRO.
domains existfile(X),openread(f,X),readdevice(f),
file=f filepos(f,P,0), /* modific poziia de citire */
predicates citire,closefile(f).
citire. open_f(X) if write("cu nume " ,X, " nu exista asa
start fisier"),nl,start.
open_f(string) citire if nl, not(eof(f)), readln(L),write(L),citire.
nume(string) citire.
clauses start if nume(X),open_f(X).
nume(X) if write("introduceti numele de fisier :
"),readln(X).
open_f(X) if nl,write("introduceti pozitia:
"),readint(P),