Sunteți pe pagina 1din 4

Test 4 - subprograme

1) Ce afiseaza acest program?


var v:array[1..50] of integer;
i:integer;
Function m(a,b:byte):longint;
begin
if a>b then m:=0
else if a=b then m:=v[a]
else m:=m(a, (a+b) div 2)+m((a+b) div 2+1, b)
end;
Begin
for i:=1 to 10 do v[i]:=i; Writeln(m(3,8))
end.

1
a) 27 b) 33 c) 52 d) 0

2) Stabiliti care dintre urmatoarele variante reprezinta antetul corect al unei


functii reale cu un parametru intreg.
a)function f(x:real); c)function f(var x:real):real;
b) function f(var x:integer):real; d)function f(x:real):integer;
3) Stabiliti care din urmatoarele variante reprezinta un subprogram corect care
primeste prin parametrii x si y doua valori reale si returneaza programului
apelant cea mai mare dintre valorile x, y si 0.
a)Function max(x,y :real):real; c) Function max(x,y:real):real;
begin begin
if (x>0) or (y>0) if (x>0) or (y>0) then
then if x<y then max:=x
if x>y then max:=x else max:=y
else max:=y else max:=0
else max:=0 end;
end; d) Function max(x,y):real;
b) Function max(var x,y:real); begin
begin max:=x;
max:=x; if (x<y) then max:=y;
if (x<y) then max:=y; if (y<0) then max:=0
if (y<0) then max:=0; end;
end;

4) Care din urmatoarele variante reprezinta un subprogram corect care realizeaza


stergerea din cadrul unui vector a, elementul de pe pozitia p, primita prin
intermediul unui parametru intreg?
a) Procedure sterg (p:byte); c) Procedure sterg (p:byte);
var i:byte; var i:byte;
begin begin
for i:=p+1 to n do for i:=n downto p+1 do
a[i]:=a[i-1]; a[i-1]:=a[i];
dec(n); dec(n);
end; end;
b) Procedure sterg (p:integer);
var i:byte; d) Procedure sterg(p:byte);
begin var i:byte;
for i:=p to n-1 do begin
a[i]:=a[i+1]; for i:=n downto p do
dec(n); a[i]:=a[i-1];
end; dec(n);
end;

2
5) Care din urmatoarele afirmatii nu sunt corecte?
a) O functie poate sa nu returneze nici un rezultat.
b) Apelul prin adresa al unui parametru are ca efect modificarea valorii
parametrului dupa iesirea din subprogram.
c) O procedura trebuie obligatoriu sa intoarca cel putin un rezultat.
d) Subprogramele din limbajul Pascal sunt de trei feluri: proceduri, functii si
unituri.
6) Care dintre urmatoarele subprograme realizeaza afisare tuturor patratelor
perfecte mai mici decat valoarea primita prin intermediul parametrului intreg
n ?
a) Procedure afis(n:integer); c) Procedure afis(n:integer);
var i:integer; var i:real;
begin begin
for i:=1 to sqrt(n) do for i:=1 to n do
write(i,' '); if sqr(sqrt(i))=i
end; then Write(i,' ');
b) Procedure afis(n:integer); end;
var i:real; d) Procedure afis(n:integer);
begin var i:integer;
for i:=1 to n do begin
if i*i < n then write(i,' '); for i:=1 to trunc (sqrt(n)) do
end; Write(i,' ');
end;

7) Precizati ce va afisa programul urmator.


var z:byte; begin
Procedure a1(var x,y:byte); z:=0; a1(z,z);
begin Write(z,' ');
x:=1; y:=2; a2(z,z);
end; Write(z);
Procedure a2(var x,y:byte); end.
begin
y:=2; x:=1;
end;
a) 0 0 b) 1 0 c) 1 1 d) 2 1
8)Precizati care valori vor fi afisate in urma rularii programului urmator,
daca x=62 si y=12.
var x,y :integer;
procedure rec(a,b:byte);
begin
if a<>b then
if a>b then rec(a-b,b)
else rec(a,b-a)
else write(x*y div a,' ',b);
end;
begin
read(x,y); rec(x,y);
end.
a) 372 2 b) 242 12 c) 62 12 d) 103 9
9) Stabiliti care dintre urmatoarele variante reprezinta un subprogram
corect care returneaza programului apelant cea mai mare dintre doua valori
reale transmise prin parametrii reali x si y.

a) function max(x,y:real); c) function max(x,y:real):real;


begin begin
if x>y then max:=x if x>y then z:=x
else max:=y else z:=y
end; end;
b) function max(var x,y:real):real; d) function max(x,y):real;
begin begin
max:=x; max:=x;
if x<y then max:=y if max>y then max:=y
end; end;

S-ar putea să vă placă și