2. M a r i a G u t u
O1 — să cunoască noţiunea de funcţie;
O2 — să poată declara o funcţie;
O3 — să poată defini noţiunea de apel de
funcţie;
O4 — să înțeleagă execuția programelor
ce conțin funcții;
O5 — să poată alcătui programe cu
funcţii.
3. M a r i a G u t u
output
Numele
funcției
input
Conceptul de funcţie corespunde celui
uzual matematic şi extinde pe cel de
expresie Pascal.
4. M a r i a G u t u
1. Se dă funcția f(x)=3x+5.
Pentru: x=2, f(x)=3*2+5=11;
x=10, f(x)=3*10+5=35.
2. Se dă funcția f(x)=𝑥3 + 𝑥2+1.
Pentru: x=3, f(x)=33
+32
+1=27+9+1=37;
x=5, f(x)=53
+52
+1=125+25+1=151.
5. M a r i a G u t u
Funcția calculează și returnează o singură
valoare, ce se asociază numelui ei.
6. program functie;
var a: integer;
b,y: real;
function F(c: integer; d: real): real;
var n: real;
begin
. . .
end;
begin
. . .
y:= F(a,b);
end. M a r i a G u t u
Funcțiile se vor
scrie în partea
declarativă a
programului
- Apelul unei funcții se face în
partea executabilă a programului
7. program functie;
var a: integer;
b,y: real;
function F(c: integer; d: real): real;
var n: real;
begin
. . .
end;
begin
. . .
y:= F(a,b);
end. M a r i a G u t u
- antetul funcției
- partea declarativă a funcției
- partea executabilă a funcției
8. program functie;
var a: integer;
b,y: real;
function F(c: integer; d: real): real;
begin
. . .
end;
begin
. . .
y:= F(a,b);
end.
c, d - parametri formali valoare
În timpul apelării
dc
M a r i a G u t u
a, b - parametri actuali
9. program functie;
var a: integer;
b,y: real;
function F(c: integer, d: real): real;
begin
. . .
end;
begin
. . .
y:=F(a,b);
end.
Rezultatul
obţinut
După execuţie
c d
M a r i a G u t u
Se execută funcţia
10. program functie;
var a: integer;
b,y: real;
function F(c: integer; d: real): real;
begin
. . .
end;
begin
. . .
y:=F(5, 2.5); y:=F(2*a, b); y:=F(-2,a);
end.
Sunt posibile aşa apeluri
dc
M a r i a G u t u
Deci, parametri actuali ce corespund
parametrilor formali valoare pot fi
constante(5, 2.5, -2), expresii (2*a)
sau variabile (b, a)!
Parametri actuali ce corespund
parametrilor formali valoare pot
avea tipuri de date identice sau
compatibile!
11. M a r i a G u t u
Ce va afisa
urmatorul program?
12. program executie;
var x,y :integer;
function F(var a :integer) :integer;
begin
F:=a mod 10;
a:=a+1;
end;
begin
x:=11; y:=12;
writeln (‘rezultat: ‘ ,F(x)+F(x)+F(y));
end.
M a r i a G u t u
a - parametru formal
variabilă deoarece, este
precedat de cuvântul
cheie var
x, y - parametri actuali
Deci, parametri actuali ce corespund
parametrilor formali variabilă pot fi
doar variabile și vor avea tipuri de
date doar identice!
13. program executie;
var x, y :integer;
function F(var a :integer) :integer;
begin
end;
begin
writeln (’rezultat:’,F(x)+F(x)+F(y));
end.
a
writeln
M a r i a G u t u
Bloc de date Stivă
X
Y
11
12
a:
adresă x
F(x)
x:=11; y:=12;
F = 1
F:=a mod 10;
a:=a+1;
12
1 + ? + ?
După execuția 1:
F(x) = 1
X = 12
14. program executie;
var x, y :integer;
function F(var a :integer) :integer;
begin
end;
begin
writeln (’rezultat:’,F(x)+F(x)+F(y));
end.
a
writeln
M a r i a G u t u
Bloc de date Stivă
X
Y
12
12
a:
adresă x
F(x)
x:=11; y:=12;
F = 2
F:=a mod 10;
a:=a+1;
13
1 + 2 + ?
După execuția 2:
F(x) = 2
X = 13
F(x)
15. program executie;
var x, y :integer;
function F(var a :integer) :integer;
begin
end;
begin
writeln (’rezultat:’,F(x)+F(x)+F(y));
end.
a
writeln
M a r i a G u t u
Bloc de date Stivă
X
Y
13
12
a:
adresă y
F(x)
x:=11; y:=12;
F = 2
F:=a mod 10;
a:=a+1;
13
1 + 2 + 2 = 5
După execuția 3:
F(y) = 2
y = 13
F(y)F(x)
16. program functie;
var
function F( ):
begin ... end;
begin
y:=F( , );
end.
În timpul lucrului cu funcţiile ţinem cont de:
1.Numărul de parametri să fie acelaşi.
2.Tipul parametrilor să coincidă.
a: integer;
c: integer;
b,
d: real
a b
3.Tipul functiei trebuie să coincidă cu
tipul variabilei căreia i se atribuie apelul funcției.
y : real;
F real;
M a r i a G u t u
a: integer;
c: integer;
a
y : real;b, : real;
b
d: real real;
y
y
17. M a r i a G u t u
Se consideră două numere reale. Să se
scrie un program ce va determina
numărul mai mare, utilizând o funcție.
18. Program ElementMax;
var a,b, F:real;
function max(x, y:real):real;
begin
if x > y then max:=x else max:=y;
end;
begin
write (‘a='); readln(a);
write (‘b='); readln(b);
F:=max(a,b);
writeln (‘Elementul maxim este: ',F);
end.
M a r i a G u t u
19. M a r i a G u t u
Modificați programul de mai sus astfel
încât să se determina numărul mai mare
dintre patru numere reale, utilizând o
funcție ce va determina elementul mai
mare dintre două numere.