Documente Academic
Documente Profesional
Documente Cultură
PROCEDURI PASCAL
unde
-nume este un indentificator Pascal, unde si este numele procedurii;
-(l1:t1;;ln: tn) reprezinta listele parametrilor formali si a tipurilor acestora,
daca
2)
FUNCTII PASCAL
O functie Turbo Pascal are o structura sintactica asemanatoare cu a unui
proceduri Turbo Pascal. Sintaxa functiei este urmatoarea:
FUNCTION nume ([VAR] l1:t1;[var] l2:t2;;
[var] ln:tn):tip nume;
[sectiunea declaratii locale]
BEGIN
{..}
{NUME :=. ;} sectiunea instructiuni
{..}
END:
unde:
tip nume este valorii pe care o ia nume sip e care o va returna programului
apelat. El poate fi : intreg, real, CHAR, BOOLEAN, pointer, STRING. O functie
calculeaza o valoare ce se asociaza numelui functiei nume, prin urmare este necesara
THEN
ELSE
min :=y
END.
Apelul functiei se face prin numele sau, urmat in paranteza de lista
parametrilor actuali, nume ce apare in cadrul unei expresii. In apelul functiei
parametrii actuali nume ce apare in cadrul unei expresii de acelasi tip cu parametrul
formal corespunzator. Ca si la apelul procedurilor parametri actuali trebuie sa se
corespunda cu parametrii formali in numar, ordine si tip.
Aplicatia 1. Se citesc in programul principal n parechi de numere reale (a,b)si
se cere sa se calculeze si sa se afiseze pentru fiecare pereche citita tripletul
(a,bmin(a,b)) pentur calculul lui min (a,b) folosind o functie.
BEGIN
write(dati n:);readln(n);
FOR i :=1 TO n DO
BEGIN
write(dati a si b:) readln(a,b)
z :=min (a,): {apel functie}
write (a:6:2, b:6:2,min=,z :6:2).
END
END.
In program era posibila ca in loc de
z :=min(a,b);
write(a:6:2, b:6:2,min=,z :6:2).
sa scriem doar
write(a: 6:2, b:6:2,min=,min=(a,b):6:2).
APLICATIA 2. Sa se scrie un program Pascal care sa citeasca doi vectori reali
a,b de dimensiuni n si care sa calculeze produsul scalar al celor doi vectori, precum si
a lungimii fiecarui vector, folosind in aceste scopuri o singura functie. Se va afisa
valoarea produsului scalar precum si valorile lungimilor celor doi vectori .
Rezolvare . Pentru calculul produsului scalar a doi vectori a= (ai), b=(bi) si a
lungimii unui vector x=(xi) se folosesc formulele
n
a1, b2
p=<a,b>= i 1
lx =
x 2
i 1
BEGIN
FOR i:=1 TO n DO
BEGIN
write(a[,i,]=); readln(a[i])
END;
writeln
FOR i:=1 TO n DO
BEGIN
write(b[,i,]=); readln(b[i])
END;
writeln;
p:=produs(a,b); writeln(produs scalar=,p:10:3);
la:=produs(a,a); la:=sqrt(la)
writeln(lungimea vectorului a =,la :10 :3) ;
lb := produs(b,b) ;lb :=sqrt(lb) ;
writeln(lungimea vectorului b=,lb :10 :3)
END
Pentru obtinerea produsului s-a folosit in functie variabila locala s. In functie
nu este corecta folosirea formei, de exemplu,
produs:= 0
FOR i:= 1 TO n DO produs:= produs+ x[i]*y[i];
Deoarece numele functiei produs figurand si in dreapta semnalul:= ar aprecia
un apel recursive al functiei, tehnicace este permisa in Turbo Pascal, dar intr-o forma
ce va fi precizata ulterior.
Parametrii formali din antet nu pot fi datio astfel
FUNCTION produs(x,y:ARRAY[1.n] OF REAL): REAL;
Deoarece acestea se dau in forma li:ti unde li sunt parametric formali, iar ti
sunt identificatori de tip ce apar in sectiunea TYPE sau sunt predefiniti.
Aplicatia 3. Sa se citeasca in programul principal perechi de caractere (c1,c2)
si sa se precizeze daca cele doua caractere sunt identice sqau distincte, folosind in
acest scop o functie. In progamul se va afisa perweche citita
cuvantulidenticsaudiferit,dupa caz, impreuna cu perechea de caracter.
Rezolvare. Functia o vom denumi egalitate. Ea este o functie de tip
BOOLEAN avand parametrii(agumentele fictive) de tip CHAR.
Programul este urmatorul:
PROGRAM test;
VAR c1,c2,symbol:CHAR;
FUNCTION egalitate(c,d:CHAR):BOOLEAN
BEGIN
egalitate;=c=d
END:
BEGIN
REPEAT
write(dati caracterele c1,c2:)
readln (c1,c2);
IF egalitate(c1,c2)
THEN writeln(c1, ,c2 , identice)
ELSE writeln(c1, ,c2, diferite);
writeln;
writeln (alte caractere? (Da/Nu);
readln(simbol)
UNTIL simbol<>D
END.
START
CITIRE A
NORMA
TIPAR A
MAXIM
A=A/
A
TIPAR A
STOP
A=max Vi
j=1
1im
a11... a1n
. .
.
. .
ai1... ain (a11 ..a1n)v1
. .
. .
. .
am1...amn
.
(ai1ain)vi
.
(am1amn) vm
Programul este urmatorul :
PROGRAM norme ;
CONST m=10 ; n= 15 ;
TYPE matrice= ARRAY[1..m, 1..n] OF REAL ;
VAR a : matrice ; I, j : INTEGER;nn :REAL;
PROCEDURE citrice; (VAR a : matrice);
BEGIN
FOR I := 1 TO m DO
FOR j := 1 TO n DO read (a[I, j])
END;
PRODUCERE tipar(a : matrice);
BEGIN
writeln;
FOR I := 1TO m DO
BEGIN
FOR j := 1 TO n DO write(a[I,j],
writeln
END
END;
FUNCTION norma(a: matrice) :REAL;
10
);
11
END.
Functia cu numele maxim care apare in functia norma are un caracter
local, ea ne putind fi apelata decit din norma. Apelul ei s-a facut prin
norma := maxim(v).
si tipul
unde :
tip_rezultat este un tip: intreg,real, BOOLEAN,CHAR, STRING sau
pointer, li:ti cu i =1,2, n sunt declatori de tip ai parametrilor.
Avand declarate tipurile FUNCTION sauPROCEDURE, variabilele de
tip FUNCTION sau PROCEDURE se declara in VAR, de EXEMPLU
VAR f1,f2:nume_functie; sub1, sub2: nume-procedura;
12
In lista parametrilor formali ai unei proceduri sau functii pot figura si nume
de functii sau proceduri. Daca un parametru formal este un nume de functie sau
procedura, atunci parametrul actul corespunzator actual corespunzator, in apel,
trebuie sa fie de asemenea un nume de functie sau procedura.
In implementarea Turbo Pascal, trebuie procedat astfel :
1) Se declara tipul FUNCTION sau PROCEDURE, ca la paragraful procent
prin TYPE
nume_functie=FUNCTION(par,,par:tip) : tip_functie;
nume_procedura=PROCEDURE(par,par,..:tip:);
2) Inainte de compilare directiva $F din optiuni se pune pe ON adica se
activeaza{$F+}, dupa care se trece la compilarea programului.
Exemplu :
TYPE fun= FUNCTION(x : REAL) :REAL ;
END,
parametrul formal-constanta f de tip fun , deoarece s-a definit fun anterior. Lucrurile
sint asemanatoare formali de tip ARRY sau alte tipuri structurate sau nu. Cert este ca
13
50
s1= i
s2= i * 2 s3=
i 1
i 3
104
i 1
i 525
suma= f (i )
i m
S :=0
FOR i :=m TO n DO s := s+f(i);
suma:a=s
END;
iar tipul ff trebuie declarat anterior ca functie reala de argument intreg, astfel
TYPE ff = FUNCTION(X : INTEGER) : REAL.
14
15
BEGIN
s:= 0;
FOR i:= m TO n DO s:= s+f(i);
suma:= s
END;
BEGIN
ss:=suma (25,104,f3);
write( s3=,ss)
END.
In instructiunea ss :=suma(25,104,f3),f3 este un parametru actual, nume de
functie si aceasta functi este declarata in sectiunea declaratii a programului, in mod
complet.
In momentul apelului suma prin ss :=suma (25,104,f3), m vafi inlocuit cu 25,
n cu 104, iar f3 cu expresia i/(i+1) si se va calcula s3. Pentru calculul lui s1 avem
nevoie de functia f1, subprogramul suma ramanind neschimbat. Programul este
urmatorul .
{$F+}
PROGRAM sume ;
TYPE ff= FUNCTION (x :INTEGER) : REAL ;
VAR ss :REAL;
FUNCTION f1 (k:INTEGER) : REAL;
BEGIN
F1 :=k
END
FIUNCTION suma (m,n :INTEGER; f: ff) REAL;
VAR I :INTEGER ; s :REAL;
16
BEGIN
s:= 0;
FOR i:= m TO n DO s:= s+f(i);
suma:= s
END;
BEGIN
ss:=suma (1,100,f1);
write( s1=,ss)
END.
Se observa ca, pentru o suma particulara, trebuie modificat numai
subprogramul functie ce precizeaza functia particulara f1,f2 sau f3 si functia din
apelul respectiv.
PROCEDURI SI FUNCTII
PROGRAM prog ;
PROCEDURE p;
PROCEDURE pl;
BEGIN
END;
BEGIN
pl;
END.
PROCEDURE q ;
PROCEDURE pl ;
17
BEGIN
END,
BEGIN
ql;
END;
BEGIN
p;q
END.
Procedura pl este deschisa in procedura q, este deci locala pentru q si nu
poate fi apelata decat din p. la fel procedura ql fiind declarata in q are, la fel, caracter
local pentru q si nu poate fi apelata decat din q. Sa urmarim unrmatoarea aplicatie.
APLICATIE. Se citeste o matrice A reala, de tip m x n si se cere sa se
calculeze si sa se afiseze urmatoarele norme ale matricei A definite astfel
n
A1=max aij,
1im j=1
m
A2=max aij,
1in j=1
Rezolvare. In prima definbitie a normei se va calcula mai intii un vector v = (v1), i
n
18
=1,2,..,m, unde vi =
va
j=1
19
END;
BEGIN
FOR i:= 1 TO m DO
BEGIN
s := 0;
FOR j := 1 TO n DO s:=s+abs (a[i,j];v[i]:=s
END;
norma1:=(v)
END;
FUNCTION norma 2(a: matrice): REAL;
TYPE vector=ARRAY [1.m] OF REAL
VAR s :REAL; w : vector;
FUNCTION vector2 (w : vector): REAL;
VAR max :REAL;
BEGIN
max := w[1];
FOR j := 1 TO n DO
IF max <w[j] THEN max :=w[j];
vector2:=max
END;
BEGIN
FOR j:=1 TO n DO
BEGIN
s :=0
FOR i :=1 TO n DO s:=s+abs (a[i,j])
w[j]:= s
END;
20
norma2:=vector2(w)
END
BEGIN
writeln;
writeln( dati matrice de ,mlinii si ,n, coloane);
writeln;
FOR i :=1 TO n DO
BEGIN
FOR j := 1TO n DO read (a[I,j]);
readln
END
n1 := norma 1(a); n2 :=norma 2(a);
writeln; ( norma1=,n1 :10 :2) ;
writeln ;( norma2=,n2 :10 :2)
END.
Daca matricea si atunci A ar fi de ordinal n atunci declaratiile de tip
TYPE vector =ARRAY [1..m] OF REAL din FUNCTION norma1() ;
TYPE vector =ARRAY [1..n] OF REAL din FUNCTION norma1() ;
ar coincide si atunci FUNTION vector1 si FUNCTION vector 2 coincid si sub o
denumire comuna, de exemplu FUNCTION maxim s-ar putea scoate si declara la
nivel s
PROGRAM normat ;
CONST n = 10 ;
TYPE matrice = ARRY[1.. m , 1..n] OF REAL :
vector = ARRY[1..n]
OF REAL :
21
22
END;
norma2:= maxim(w)
END
BEGIN
writeln;
writeln( dati matrice de ,nlinii si ,n, col);
writeln;
FOR i := 1TO n DO
BEGIN
FOR j := 1TO n DO read (a[i,j]);
readln
END
n1 := norma 1(a);
n2 :=norma 2(a);
writeln ( norma1 =,n1:10:3);
write( norma2 =,n2:10:3)
END
23
Exemplu :
PORGRAM recursiv ;
PROCEDURE p ;
BEGIN
END;
PROCEDURE q;
BEGIN
q;
END;
BEGIN
p;
q;
END.
In acest exemplu procedura q are in corpul sau un autoapel. Ea este recursive.
Scrierea ei trebuie realizata intr-un anume fel care va fi prezentat in aceasta sectiune.
Exista clase intregi de probleme care se rezolva mult mai elegant prin tehnica
24
an=
2 a n-1,
n 1;
0, k 0
s
(
k
1
)
k
*
2
,
k
s(k)=
Cazul particular fiind s(0) =0
4. Produsul p=1x2.j se poate scrie recursiv astfel
1, i 1
jp( j 1), j 1
p(j)=
25
urmatoarea.
Aplicatie. Sa se calculeze suma patratelor primelor n numere naturale.
Vom prezenta mai multe variante de rezolvare.
1. Intr-o formula simpla, aceasta suma se poate calcula folosind formula
s=12+22++n2=
n(n 1)(2n 1)
6
26
0, k 0
s(k 1) k * 2, k 1,2,...., n
s(k)=
BEGIN
readln(n) ;
total :=s(n) ; {apelul functiei}
write(suma=,total)
END.
Apelul recursive este redat aici prin instructiunea
s :=s(k-1)+k*k
27
BEGIN
readln(n);
ss(n,sum);{apelul prodedurii ss}
write(suma=,sum)
END.
Sa urmarim cum se delureaza operatiile pentru n=4.
In corpul programului exista instructiunea de apel ss(n,sum); adica pentru n=4
acela este
ss(4,sum).
28
BEGIN
ss(0,s);
s:=s+1*1
END.
29
30
Program
principal
Ss(k,s)
Ss(k,s)
Ss(k,s)
Ss(k,s)
Ss(k,s)
Ss(3,s)
Ss(1,s)
Ss(2,s)
Ss(0,s)
Ss(4,s)
S:=0
S:=s+4*4
S:=s+3*3
S:=s+2*2
S:=s+1*1
Program
principal
Observatii:
1. Ori de cate ori se foloseste o structura cu proceduri cu proceduri/functii recursive
trebuie asigurata iesirea din recursivitate. Din acest motiv apelul recursive al unei
proceduri/functii p trebuie plasat in una din urmatoarele structuri de control
IF.THEN. p;
WHILEDO.p;
REPEAT..p..UNTIL..
2. Datorita numeroasalor apeluri, functiile si procedurile recursive consuma mult
timp,din acest motiv,de multe ori, recursia se inlocuieste cu itentia, mult mai
rapida. Forma recursiva are insa mai multe avantaje claritatii si elegantei.
31
Prezentam in continuare o functie recursiva care consuma foarte mult timp datorita
apelurilor incrucisate. Acesta este functia Akerman-prezenta frecvent in teoria
complexitatii algoritmilor.
n 1, m 0
A( m 1), A( m, n 1))
in rest
32
33
Exemplu :
PROGRAM stergere ;
VAR s :STRING[12] ;
BEGIN
s:=1234567890ab;
Delete(s,2,6);writeln(s);{s=1890ab }
Delete(s,0,4);writeln(s);{s=0ab }
writeln
END.
2. Rpocedura Insert are ca scop inserarea unui cuvint(sursa )intr-un sir dat. Sintaxa
sa este
PROCEDURE insert (sursa : STRING ; VAR s :STRING ; index : INTEGER) si
este apelata prin
insert(sursa, s, index)
unde :
sursa este cuvintul ce trebuie inserat;
s este sirul in care este inserat cuvintul ;
index este pozitia din sirul s incepind cu care se insereaza cuvintul.
In urma inserarii sirul rezultat nu trebuie sa depaseaca 255 se pierd. Daca
index este mai mare decit lungimea s, sursa va fi alaturat lui s.
Exemplu :
PROGRAM inserare ;
VAR s,x : STRING[20] ;
BEGIN
s :AUTOMOBIL;
x := CLUBUL;
34
-12.59}
END.
35
-12.59.
4. Procedura Val are rol invers procedurii Str, adica transforma continutul unei
expresii de tip STRING intr-un numar. Procedura are sintaxa
PROCEDURE val (s : STRING; VAR x: tip_ numeric; VAR cod :
INTEGER);
unde
s este expresia de tip STRING;
v este variabila reala sau intreaga in care se depune rezultatul transformarii;
cod contine, in urma pelului procedurii, in codul de eroare care este de erori,
cod
=0 . Propcedura ignora blancurile conducatoare din sir.
Instructiunea de appel are sintaxa
val(s,v,cod)
unde s,v ,cod au semificatiile de mai sus.
Exemple :
PROGRAM conversie ;
VAR sir STRING ; v, cod :INTEGER ;
BEGIN
sir :=12579;
val(sir,v,cod);{ v=12579-numar intreg}
write(v=,v,,cod)
END.
5. Functia Concat concateneaza intr-un singur sir o suita de siruri. Sintaxa sa
este
FUNCTION concat(s1 [,s2..] : STRING):STRING
36
37
Daca n este mai mare decat lungimea sirului atunci nu se extrage nici un
cuvant. Daca n este mai mar decat numarul de caractere ramase dupa index atunci
numai aceste caractere vor fi returnate.
Exemplu :
PROGRAM extragere ;
CONST sir=,UNIVERSITATEA DIN TIMISOARA
VAR cuvant :STRING[13] ;
BEGIN
cuvant :=copy(sir,1,13) ;{cuvant=UNIVERSITATE}
writeln(cuvant) ;
cuvant :=copy(sir,15,3) ;{cuvant=DIN}
writeln(cuvant)
END.
2) Functia Lenght furnizeaza lungimea actuala a unui sir de caractere. Ea are
sintaxa
FUNCTION length(s:STRING):INTEGER;
unde s este o variabila de tip STRING.
Exemplu :
PROGRAM lung;
CONST sir=BARBAROASA;
VAR lu:INREGER;
BEGIN
lu:=length(sir); write(lungimea=,lu)
END.
3) Functia Pos furnizeaz pozitia unui cuvant intr-un sir. Sintaxa functiei este
FUNCTION pos(cuvant,s:STRING):BYTE
unde
38
39
car:=Y;fillchar(vctor,10,car);
FOR i:=1 TO 10 DO write(car)
END.
Dupa executia programului fiecare octet in vector va fi incarcat cuY si se va afisa
YYYYYYYYY.
TIPUL FILE
NOTIUNE DE FISIER
Dupa cum este cunoscuta una din componentele de baza ale unui sistem de
calcul este memoria centrala sau operativa(RAM) cu rolul de a stoca programul,
informatiile prelucrate de aceasta, rezultatele intermediare si finale. Ea este foarte
rapida dar de capacitate nu prea mare. La Calculatoarele Personale aceasta este de
obicei de 640 kocteti. La locatiile memoriei RAM, programul era acces direct fie
pntru inregistrarea, fie pentru etragerea informatilor. Acest tip de memorie este
volatila asu nepermamenta, adica
sau sutelor de
40
al fisierului nu e cunoscut
inregistrate in fisier una dupa alta. Spunem ca fisierul este o organizat secvential. In
Turbo Pascal exista mai multe tipuri de fisiere care pot fi definite. In toate tipurile de
fisiere Turbo Pascal la fiecare componenta a fisierului se poate ajunge numai daca sau parcurs toate componentele acestuia care o preced. In acest caz spunem ca
accesul la componenta este secvential. Pentru anumite tipuri de fisier este permis si
accesul direct la o componenta.
Exemple de fisiere.
1. Informatiile despre studentii unui an de studiu inregistrate pe un disc
magnetic, fiecare componenta a fisierului retinand informatiile despre un
student.
2. Informatiile despre persoanele unei intreprinderi si adresele lor aparut pe
un ecran TV etc, fiecare articol continand informatiile despre o persoana
di adresa sa
Proprietati.
41
1. Suportul fizic al fisierului este extern : imprimanta, disc sau banda magnetica,
ecran TV,claviatura( dispozitive periferice). Oricarui dispozitiv periferic ii este
asociata o structura de fisier, adica o organizarelogica a infornatiilor ce
corespunde unei animute tehnici de aranjare a acestor date.
2. Deoarece, in general, numarul componentelor unui
fisier nu se cunoaste
Marca EOF
articol
A) fisier nevid
B) fisier vid
42
Memorie
centrala
citire
scriere
fisier
43
Prin urmare, un fisier nu poate fi simultan deschis si pentru scriere si pentru citire. La
deschiderea fisieruluipointerul de fisier se plaseaza totdeauna pe prima componenta a
fisierului(daca fisierul nu e vid) sau pe marca EOF(daca fisierul e vid). La fiecare
executia a unei operatii asupra fisierului pointerul de fisier e marit automat cu 1. La
fiecare operatie de citire, laun moment dat, acest pointer va ajunge pe marca EOF,
pentru fisierul f consultat. Acest moment este pus in evidenta de o functie booleana
eof(f) care intoarce rezultatul TRUE si FALSE daca nu s-a atins marca EOF.
Inchiderea unui fisier se face automat la iesirea din blocul in care s-a folosit
fisierul(program principal sau subprogram) sau prin apelul unei proceduri speciale de
inchidere numita CLOSE.
Orice fisier este precedat de anumite informatii scrise de sistem prin care se
identifica numele sau, dupa care urmeaza informatia utila(componentele) urmate de
marca EOF.
6.Fisierele Turbo Pascal sunt gestionate prin anumite procedeuri si functii
dintre care prezentam pe urmatoarele, unde f va desemna o variabila fisier.
a) Reset(f) deschide fisierul pentru citire (consultare). Executia procedurii are
ca efect pozitionarea pointeruli d fisier pe prima componenta a fisierului si
copierea acesteia in zona tampon a acesuia. Valoara lui eof(f) va fi FALSE
daca fisierul nu e vid, in caz contrar valoarea sa va fi TRUE.
Inaite de reset(f).
44
pointer
EOF
Dupa reset(f)
pointer
f
transfer
buffer
pointer
EOF
45
46
FISIERE CU TIP
Fisierul cu tip este o structura de date in care fiecare componenta (articol) are acelasi
tip numit tipul de baza al componentelor. Declaraera sa se face in sectiune TYPE
si are urmatoarea sintaxa.
TYPE
tip_baza=
nume= FILE OF tip baza
unde tip- baza poate fi orice tip, exceptind tipul fisier.
Exemplu :
TYPE
int=1..100;
fisint =FILE OF int;
complex= RECORD x,y : REAL END;
fiscomplex=FILE OF complex;
mul= SET OF mul;
txt = FILE OF CHAR.
In acest exemplu s-au definit tipurile: fisint-care este un tip fisier de intregi
intre 1si100, fiscomplex-un tip fisier de numere complexe definite ca RECORD,
fismul- un tip fisier de multimi si txt-ca fisier de caractere.
Definirea unei variabile f de tip fisier se face in sectiune VAR cu sintaxa
47
CREAREA FISIERULUI
Scrierea informatiei intr-un fisier cu tip se face prin apelul procedurii write, cu
sintaxa:
write(f,v)
unde f este variabila ce desemneaza fisierul, deschis pentru scriere, iar v este o
variabila de tipul de baza al componentelor.
Daca inainte de executia lui write(f,v) situatia in fisier era
48
49
b) rewrite(f) ;
WHILE creare_fisier DO
REPEAT
BEGIN
{creare componenta}
{creare componenta}
write( f, componenta)
write( f, componenta)
END;
Intr-un caz concret, {cerare componenta}, se va inlocui cu un grup de
instructiuni prin care se determina componenta(varibila) care trebui scrisa in fisier.
Creare_fisier este conditia care trebuie sa fie adevarata tot timpul cit se creaza
fisierul si falsa cind crearea fisierului s-a terminat.
50
readln(x);
write(f,x);
writeln(mai sunt date de intrare DA/NU?)
reardln(simbol)
UNTIL simbol<>D
.
END.
Se pot imagina si alte modalitati de a termina crearea unui fisier, de exemplu
de a da pentru un camp o valoare pe care stim sigur ca nu o poate lua niciodata.
Daca numarul de componente al fisierului este cunoscut atunci scrierea acestor
componente in fisierul s-ar putea face printr-o instructiune FOR, de exemplu,
rewrite(f)
FOR i :=1 TO 100 DO
51
BEGIN
k:=i*i
write(f,k)
END;
prin care se scriu patratele numerelor de la 1 la100 in fisierul f.
52
VAR f:FILE
sau
rewrite(f, recsize)
astfel
VAR f :FILE ;
recsize :WORD ;
BEGIN
recsize:=;
..
reset(f,recsize);
..
rewrite(f,recsize)
END.
unde recsize este o variabila sau constanta de tip WORD.
De exemplu, putem atribui lui recsize valoarea 256 prin
recsize:=256
caz in care blocurile vor fi interpretate ca avand o lungime de 256 octeti.
53
unde :
f- este variabila fisier ;
Buf- este o variabila de tip arbitrar ;
Count-este o variabila sau constanta de tip WORD cu rolul de a preciza
numarul
54
55
octeti(prin
6.20
4.80
56
FISIERE TEXT
Schimbul de informatii om-calculator realizat prin intermediul perifericelor
(tastatura, ecran, imprimanta) se face sub forma de sir de caractere. De exemplu,
pentru a transmite constanta 324 programului,utilizatorul transmite de fapt
delatastatura sirul de caractere3,2,4.
Deoarece terminalele au un anumit mod de constructie si functionare acest fapt
duce la subdivizarea informatiilor memorate pe ele sub forma de linii (linii de
tastatura, linii de ecran, linii de imprimare).
Pentru definirea fisierelor particulare constitue din caractere si subdivizate in
linii limbajul TurboPascal dispune de un tip de fisier predefinit numit TEXT si care
este folosit ca si cand ar fi fost declarat prin.
TYPE TEXT= FILE OF CHAR
Adica este un fisier cu articole de tip CHAR cu particularitatea ca este
subdivizat in linii. Declarate de mai sus nu trebuie sa apara in program.
Declararea unei variabile f ca fiind de tip TEXT se face in sectiunea VAR
astfel :
VAR f:TEXT
57
58