|
MINISTERUL EDUCA?IEI AL REPUBLICII MOLDOVA
UNIVERSITATEA DE STAT DIN MOLDOVA
FACULTATEA MATEMATIC? ?I INFORMATIC?
DARE DE SEAM?
LA DISCIPLINA:INFORMATIC?
LA LUCRAREA DE LABORATOR ?4
TEMA: FUNC?II ?I PROCEDURI ĪN LIMBAJUL DE PROGRAMARE PASCAL.
A EFECTUAT STUDENTUL
GRUPEI G4: LEAHU IGOR.
A VERIFICAT LECTORUL:
RUSU CAROLINA.
CHI?IN?U 2003
ENUN?UL PROBLEMEI:
PROB.1):
Elabora?i o func?ie care returneaz? media aritmetic? a patru numere īntregi.
PROB:2):
Elabora?i o procedur? care afi?eaz? la ecran tabelul de adev?r al func?iei y=not x.
PARTEA TEORETIC?:
FUNC?II:
Conceptul de func?ie corespunde celui uzua matematic ?i extinde pe cel de expresie Pascal.
Īn general textul Pascal al unei declara?ii de func?ii are forma:
Function f(x1;
; xn) : t;
D1;
Begin
f:= e;
...
end; {f}
Primul rānd ilustreaz? antetul func?iei cu:
- f: identificator reprezentānd numele func?iei;
- (x1;..;xn ): list? (op?ional?) de parametri formali reprezentānd argumentele func?iei;
- t: identificator reprezentānd tipul rezultatului; acesta trebuie s? fie un tip simplu
(scalar) sau pointer.
Antetul este urmat de corpul func?iei, format din:
- D1: declara?ii locale ale func?iei (op?ionale) grupate īn sec?iuni (eventual vide)scri-
se īn ordinea:
label
const
type
var
function / procedure
- begin ... f:=e; ... end; : instruc?iune compus? specificānd prelucr?rile de date ce se
produc prin execu?ia func?iei; numele f al func?iei (f?r? parametri) apare cel pu?in
o dat? īn partea stāng? a unei instruc?iuni de atribuire care se execut? f:=e. Rezul-
tatul īntors de func?ie, de tipul t, este ultima valoare atribuit? lui f.
Utilizarea unei func?ii se specific? printr-un apel de forma: f(a1, . .,an), cu
- f: numele func?iei;
- (a1, . . ,an): lista de parametri actuali reprezentānd expresii ale c?ror valori sau adrese sīnt furnizate func?iei.
Apelul de func?ie este un operand īntr-o expresie; el se insereaz? īn locul īn care este
dorit? valoarea produs? de func?ie. Cānd expresia este evaluat?, func?ia este activat?, iar
operandului devine valoarea īntoars? de func?ie.
PROCEDURI:
Conceptul de procedur? extinde pe cel de instruc?iune. Formele sintactice ale decla-
ra?iei ?i apelului sānt similare celor pentru func?ii.
Forma general? a textului unei declara?ii de procedur? este:
Procedure p(x1; . . . ;xn);
D1;
Begin
. . .
end; {p}
Īn antetul procedurii apar:
- p: numele procedurii;
- (x1; . . . ;xn): list? (op?ional?) de parametri formali.
Īn corpul procedurii sānt incluse:
- D1: declara?ii locale procedurii (op?ionale) grupate dup? acelea?i reguli ca īn cazul
func?iilor;
- begin ... end; : instruc?iune compus?; ea nu con?ine vreo atribuirii asupra numelui
procedurii.
Procedura poate s? īntoarc? mai multe rezultate, dar nu prin numele ei, ci prin va-riabilele desemnate special (prefixul var) īn lista de parametri; tipurile rezultatelor se spe-
cific? īn lista de parametri ca tipuri ale acestor variabile.
Activarea unei proceduri se specific? printr-un apel de forma: p(a1, . . . ,an) cu
- p:numele procedurii;
- (a1, . . . ,an): lista (op?ional?) de parametri actuali.
Spre deosebire de func?ie, apelul de procedur? este o instruc?iune; aceasta se insereaz? īn
program īn locul īn care sānt dorite efectele produse de execu?ia procedurii pentru eventualii parametri actuali a1, . . . ,an.
PROGRAMELE OB?INUTE:
PROB.1):
program lucr4a;
uses
crt;
var
a,b,c,d:integer;
med:real;
function
media(a,b,c,d:integer):real;
var
med:real;
begin
med:=(a+b+c+d)/4;
media:=med;
end;
begin
clrscr;
writeln('Introduceti 4 numere intregi a, b, c, d:');
write('a= ');readln(a);
write('b= ');readln(b);
write('c= ');readln(c);
write('d= ');readln(d);
med:=media(a,b,c,d);
writeln('Media aritmetica a numerelor ',a,' ',b,' ',c,' ',d,' este: ',med:3:3);
readkey
end.
PROB.2):
program lucr4b;
uses
crt;
var
x,y,z1,z2,z3:boolean;
procedure
tabel_de_adevar(x,y:boolean;var z1,z2,z3:boolean);
begin
z1:=not y;
z2:=x and y;
z3:=x or y;
end;
begin
clrscr;
writeln('Primul caz: x ia valoare adevarata:');
x:=true;
y:=not x;
writeln('x= ',x);
writeln('y= ',y);
tabel_de_adevar(x,y,z1,z2,z3);
writeln('not y= ',z1);
writeln('x and y= ',z2);
writeln('x or y= ',z3);
writeln;
writeln('Al doilea caz: x ia valoare falsa:');
x:=false;
y:=not x;
writeln('x= ',x);
writeln('y= ',y);
tabel_de_adevar(x,y,z1,z2,z3);
writeln('not y= ',z1);
writeln('x and y= ',z2);
writeln('x or y= ',z3);
readkey
end.
REZULTATE:
PROB.1):
Introduceti patru numere intregi a, b, c, d:
a=1
b=2
c=3
d=4
Media aritmetica a numerelor 1, 2, 3, 4 este : 2.500
RPOB.2):
Primul caz: x ia valoare adevarata:
x=TRUE
y=FALSE
not y = TRUE
x and y = FALSE
x or y = TRUE
Al doilea caz: x ia valoare falsa:
x=FALSE
y=TRUE
not y = FALSE
x and y = FALSE
x or y = TRUE
CONCLUZII:
Utilizarea func?iilor ?i procedurilor permite elaborarea unor programe mai mici ca volum, deci care ocup? mai pu?in spa?iu de memorie ?i care sunt mai bine de īn?eles pen-
tru al?i utilizatori(al?ii decāt cei care au elaborat programul). Plus la asta aduce ?i o eco-
nomie de timp programatorului la elaborarea programului, deoarece odat? elaborate, func?iile ?i procedurile pot fi apelate ori de cāte ori nu am avea nevoie de instruc?iunea īn cauz? īn program.
|