Sunteți pe pagina 1din 8

Numele_________________

Prenumele ______________
1. Continuaţi enunţul:
Institutia de învăţămînt L
În limbajul pascal există __două__ tipuri de subprogram şi anume: __funcţii___ şi ___proceduri__.
_________________________
0
1
2
Câte un punct pentru fiecare răspuns corect, total 3 puncte 3

2. Scrieţi adevărat (A) sau fals (F) în dependenţă de faptul dacă este sau nu adevărată afirmaţia:
Nr. crt. Afirmaţia A sau F L
1. O procedură poate avea doar parametri formali valoare A 0
1
2
2. O funcție poate fi utilizată doar o singură dată într-un program pascal F
3
4
3. Paramatrul actual transmite valoarea din programul principal în procedură. A 5
6
4. Un parametru actual poate fi o valoare A 7
8
5. Un subprogram obligatoriu trebuie să conțină un parametru formal F

6. Procedurile pot întoarce mai multe rezultate prin intermediul parametrilor variabilă A

7. Procedurile și funcțiile pot rezolva aceiași problemă A

8. Exp(x) este o procedură predefinită a limbajului pascal. F

Câte un punct pentru fiecare răspuns corect, total 8 puncte


3. Se consideră antetul:
Var a,b:char; c,r:real; d,i:integer;
Procedure P(var x:char; var y:real; z:integer); L
Încercuiţi apelurile corecte. 0
1
a) P(a, c, d); 2
b) P(b, r, ‘i’); 3
c) P(‘k’, 8.145, 6);
d) P(b, r, 5);
e) P(a,c,i);
f) P(‘9’,6.4, 3);
Câte un punct pentru fiecare încercuire corectă, total 3 puncte
4. Fie dată o secvență de program PASCAL din care au fost radiate (eliminate) denumirile de L
0
tipuri ale variabilelor utilizate: 1
Analizați secvența din programul P4 şi 2
Program P4; îndepliniți următoarele sarcini: 3
4
var q : __string________;
s : set of _0..9___; a) Înscrieţi în textul programului denumirile de
i : _______integer_____; tip omise, astfel încît acestea să asigure
begin corectitudinea instrucțiunilor din program.
q:='0691882883117';
s:=[ ]; b) Scrieţi, care va fi valoarea variabilei s după
for i:=1 to length(q)-1 do executarea ciclului for.
s:=s+[ord(q[i])-ord(’0’)];
...
end. s=[ 0,1,2,3,6,8,9 ]

Câte un punct pentru fiecare răspuns corect, total 4 puncte


Notă: 1. Punctul a - pentru variabila s se acceptă şi tipul byte, integer sau 0..255
2. punctual b - ordinea înscrierii valorilor în mulţimea s nu contează, important ca
aceasta sa includă valorile întregi 0,1,2,3,6,8,9.
5. Se consideră un tablou (vector) cu n numere intregi, n<=100, cunoscute, citite de la tastatură.
Elaboraţi un program care va avea o functie cu denumirea PARE și o procedură cu denumirea
POZITIE. L
 Funcția PARE – primește în calitate de parametru valoare: tabloul (vectorul) şi 0
numarul de componente a acestuia (n). Funcţia va returna numărul de elemente pare din 1
2
tablou (vetor); 3
 Procedura POZITIE- primește în calitate de parametru valoare: tabloul (vectorul) şi 4
numarul de componente a acestuia (n) şi va returna prin intermediul unui parametru 5
6
variabilă - poziția primului număr negativ din tablou; 7
Funcția şi Procedura vor fi apelate în program pentru a determina, respectiv, numărul de elemente pare și 8
poziția primului număr negativ din tablou. 9
10

1p – definirea tipurilor, scrierea şi utilizarea corectă a variabilelor globale şi locale, respectarea sintaxei
limbajului pascal.
1p – respectarea denumirii functiei (PARE) şi a procedurii (POZITIE)
1p – scrierea corecta a parametrilor valoare (t:tablou;n:integer) pentru funcţie, a parametrilor valoare şi
variabilă pentru procedură (v:tablou;n:integer; var k:integer)
1p – algoritm corect de calculare a elementelor pare
1p – returnarea corectă a rezultatului (PARE:=k)
1p- algoritm corect de determinare a poziţiei primului element negative din tablou
1p – citirea corectă a numărului de componente ( readln(n) )
1p - citirea corectă a componentelor (for i:=1 to n do read(t[i])
1p – apel corect al funcţiei (y:=PARE(t,n)) şi al procedurii (POZITIE(t,n,poz))
1p – afişarea corectă a rezultatului după apelul procedurii (writeln(poz))
Notă: se acceptă şi alte modalităţi corecte de apel pentru funcţie si a algoritmilor de rezolvare a
problemei decât cel prezentat
Răspuns
Type tablou=array[1..100] of integer;
Var t:tablou; i,n,poz,par:integer;
Function PARE(t:tablou; n:integer):integer;
Var k,i:integer;
Begin
K:=0; for i:=1 to n do if t[i] mod 2 =0 then k:=k+1;
PARE:=k;
End;
Preocedure POZITIE(t:tablou; n:integer; var k:integer);
Begin
k:=1;
while t[k]>=0 do k:=k+1;
End;
Begin
Writeln(‘dati numarul de component din tablou’); readln(n);
Writeln(‘dati ‘,n,’ component intregi’);
For i:=1 to n do read(t[i]);
Par:= PARE(t,n);
Writeln(‘numarul de component pare ‘,par);
POZITIE(t,n,poz);
Writeln(‘pozitia primului numar negative este ‘,poz);
End.
6. Fie dat programul:
programa p12; Nivel_0_ L
var m, n: integer; k:real; 0
1
procedure P(var x:integer; y:integer; var z:real); Nivel_1_ 2
function f(h:integer):integer; begin f:=sqr(h)+2; end; Nivel_2_ 3
begin 4
5
x:=f(x)+y; y:=x+f(2); z:=y mod x ; 6
writeln(x,' ',y,' ',z:0:0) 7
end; 8
9
begin 10
n:=4; m:=1; k:=2; P(m,n,k); writeln(m,' ',n,' ',k:0:0);P(n,m,k); writeln(m,' ',n,' ',k:0:0); 11
end.

a) Ce se va afişa la ecran în urma executării acestui program (argumentaţi răspunsul prin calcule, afişările le încercuiţi)
n=4 m=1 k=2
P(m,n,k)
X=m=1 y=n=4 z=k=2
X=3+4=7 y=7+6=13 z= 13 mod 7=6
7 13 6 1p- raspuns corect, argumentare
M=x=7 n=n=4 k=z=6
746 1p- raspuns corect, argumentare
P(n,m,k)
X=n=4 y=m=7 z=k=6
X=18+7=25 y=25+6=31 z= 31 mod 25=6
25 31 6 1p- raspuns corect, argumentare
N=x=25 m=m=7 k=z=6
7 25 6 1p- raspuns corect, argumentare

b)Enumeraţi variabilele globale, utilizate în program_______m,n,k____________________;


1p- scrierea corectă a rezultatului
c) Subliniați un apel al funcției F;
1p- sublinierea corectă a unui apel de funcţie, x:=f(x)+y; y:=x+f(2);
d) Enumerați parametrii variabilă din procedura P__________x,z_____________________;
1p- scrierea corectă a rezultatului
e) Indicaţi nivelele de imbricare;
3p- scrierea corectă a rezultatului (câte un punct pentru fiecare nivel scris corect)
f) În programul P12 este efect colateral? Adevarat Fals
1p- scrierea corectă a rezultatului
Argumentare: L
7. Se consideră funcția: f(1)=f(2)+f(4) 0
a) Calculați f(1). Argumentaţi răspunsul prin calcule! 1
F(2)=f(3)+f(5)
2
F(3)=f(4)+f(6) 3
F(4)=4+1=5 4
F(5)=5+2=7 5
F(6)=6+2=8
F(3)=5+8=13
F(2)=13+7=20
F(1)=20+5=25

Raspuns: f(1)=25
1p- rezultat final corect 25
3p – argumentare corectă prin calcule {in caz că rezultatul final nu corespunde cu valoarea de 25,
însă calculele sunt efectuate se va acorda 1 punct}

b) Definiţia funcţiei f(n) este o definiţie recursivă?


Adevărat Fals
1p- scrierea corectă a rezultatului

L
8. Elaboraţi o funcţie pascal (doar funcţia) pentru definiţia f(n) de la itemul 7. 0
Function f(n:integer):integer; 1
Begin 2
3
If n=4 then f:=n+1 else if n>=5 then f:=n+2 else if n<4 then f:=f(n+1)+f(n+3); 4
End;

1p- scrierea corectă a antetului funcţiei şi a sintaxei pentru funcţie


1p – scrierea corectă a condiţiei 1
1p – scrierea corectă a condiţiei 2
1p – scrierea corectă a condiţiei 3

Total 48 puncte. MULT SUCCES!


Numele_________________
Prenumele ______________
Institutia de învăţămînt
9.
_________________________ L
Parametrii formali pot fi de __două__ tipuri: parametric formali: __valoare___ şi parametri formali 0
___variabilă__. 1
2
3
Câte un punct pentru fiecare răspuns corect, total 3 puncte

10. Scrieţi adevărat (A) sau fals (F) în dependenţă de faptul dacă este sau nu adevărată afirmaţia:
Nr. crt. Afirmaţia A sau F L
9. Numele unei proceduri poate începe cu o cifră F 0
1
2
10. O funcție poate fi utilizată de mai multe ori într-un program pascal A
3
4
11. Paramatrul actual transmite valoarea din programul principal în procedură. A 5
6
12. În cazul unui parametru actual variabilă poate fi utilizată și o constantă F 7
8
13. Un subprogram obligatoriu trebuie să conțină un parametru formal F

14. Procedurile pot întoarce mai multe rezultate prin intermediul parametrilor variabilă A

15. Funcțiile sunt subprograme ce returnează mai multe rezultate F

16. ln(x) este o funcție predefinită a limbajului pascal. A

Câte un punct pentru fiecare răspuns corect, total 8 puncte


11. Se consideră antetul:
Var a,b:char; c,d:integer;
Function F(x:integer; y:char):integer; L
Încercuiţi apelurile corecte. 0
1
g) a:=F(c, b); 2
h) c:=F(d,a); 3
i) c:=F(d,’5’);
j) c:=F(d,5);
k) d:=F(2,’a’);
l) c:=F(‘9’,3);
Câte un punct pentru fiecare încercuire corectă, total 3 puncte
12. Fie dată o secvență de program PASCAL din care au fost radiate (eliminate) denumirile de L
0
tipuri ale variabilelor utilizate: 1
Analizați secvența din programul P4 şi 2
Program P4; îndepliniți următoarele sarcini: 3
4
var q : __string________;
s : set of _char___; a) Înscrieţi în textul programului denumirile de
i : _______integer_____; tip omise, astfel încît acestea să asigure
begin corectitudinea instrucțiunilor din program.
q:='hbbcxyzABsdaccccccaaab';
s:=[ ]; b) Scrieţi, care va fi valoarea variabilei s după
for i:=2 to length(q) do executarea ciclului for.
if q[i] in [‘b’..’h’] then s:=s+[q[i]];
...
end. s=[ b,c,d ]

Câte un punct pentru fiecare răspuns corect, total 4 puncte


Notă: 1. punctual b - ordinea înscrierii valorilor în mulţimea s nu contează, important ca
aceasta sa includă caracterele b,c,d.
13. Se consideră un şir de caractere, citit de la tastatură. Elaboraţi un program care va avea o functie cu
denumirea CIFRE și o procedură cu denumirea ULTIMA.
 Funcția CIFRE – primește în calitate de parametru valoare: şirul de caractere (s). L
Funcţia va returna numărul de cifre impare din şir; 0
 Procedura ULTIMA - primește în calitate de parametru valoare: şirul de caractere (s) 1
2
şi va returna prin intermediul unui parametru variabilă - poziția ultimului caracter care 3
este vocală; 4
Funcția şi Procedura vor fi apelate în program pentru a determina, respectiv, numărul de cifre impare și 5
6
poziția ultimei vocale din şir. 7
8
1p – definirea tipurilor, scrierea şi utilizarea corectă a variabilelor globale şi locale, respectarea sintaxei 9
10
limbajului pascal.
1p – respectarea denumirii functiei (CIFRE) şi a procedurii (ULTIMA)
1p – scrierea corecta a parametrilor valoare (s:string) pentru funcţie, a parametrilor valoare şi variabilă
pentru procedură (s:string; var k:integer)
1p – algoritm corect de calculare a elementelor impare din şir
1p – returnarea corectă a rezultatului (CIFRE:=k)
2p- algoritm corect de determinare a poziţiei ultimei vocale din şir
1p – citirea corectă a şirului de caractere (readln(s))
1p – apel corect al funcţiei (cif:=CIFREE(s)) şi al procedurii (ULTIMA(s,poz))
1p – afişarea corectă a rezultatului după apelul procedurii (writeln(poz))
Notă: se acceptă şi alte modalităţi corecte de apel pentru funcţie si a algoritmilor de rezolvare a
problemei decât cel prezentat.
Răspuns
Var s:string; i,poz,cif:integer;
Function CIFRE(s:string):integer;
Var i,k:integer;
Begin
K:=0; for i:=1 to length(s) do if s[i] in [‘1’,’3’,’5’,’7’,’9’] then k:=k+1;
CIFRE:=k;
End;
Preocedure ULTIMA(s:string; var k:integer):;
Begin
k:=length(s);
while not(s[k] in [‘a’,’e’,’i’,’o’,’u’]) do k:=k-1;
End;
Begin
Writeln(‘dati sirul de caractere’); readln(s);
cif:= CIFRE(s);
Writeln(‘numarul de cifre impare din sir sunt ‘,cif);
ULTIMA(s,poz);
Writeln(‘pozitia ultimei vocale in sir este ‘,poz);
End.

L
0
1
2
3
4
5
6
7
8
9
10
14. Fie dat programul: 11
programa p12; Nivel_0_
var x, y: integer; z:real;
procedure P(a:integer; var b:integer; var c:real); Nivel_1_
function f(h:integer):integer; begin f:=(h +7) div 3; end; Nivel_2_
begin
a:=f(a)+f(b); b:=a-2; c:=a + b ;
writeln(a,' ',b,' ',c:0:0)
end;
begin
x:=2; y:=4; z:=1; P(y,x,z); x:=x+1; writeln(x,' ',y,' ',z:0:0);P(x,y,z); y:=y-1; writeln(x,' ',y,' ',z:0:0);
end.

a) Ce se va afişa la ecran în urma executării acestui program (argumentaţi răspunsul prin calcule, afişările le încercuiţi)
x=2 y=4 z=1
P(y,x,z)
a=y=4 b=x=2 c=z=1
a=3+3=6 b=6-2=4 c= 6 + 4=10
6 4 10 1p- raspuns corect, argumentare
Y=y=4 x=b=4 z=c=10
X=4+1=5
5 4 10 1p- raspuns corect, argumentare
P(x,y,z)
a=x=5 b=y=4 c=z=10
a=4+3=7 b=7-2=5 c= 7 +5=12
7 5 12 1p- raspuns corect, argumentare
X=5 y=b=5 z=c=12
Y=5-1=4
5 4 12 1p- raspuns corect, argumentare

b)Enumeraţi variabilele globale, utilizate în program_______x,y,z____________________;


1p- scrierea corectă a rezultatului
c) Subliniați un apel al procedurii P;
1p- sublinierea corectă a unui apel de funcţie, P(y,x,z) sau P(x,y,z);
d) Enumerați parametrii variabilă din procedura P__________b,c_____________________;
1p- scrierea corectă a rezultatului
e) Indicaţi nivelele de imbricare;
3p- scrierea corectă a rezultatului (câte un punct pentru fiecare nivel scris corect)
f) În programul P12 este efect colateral? Adevarat Fals
1p- scrierea corectă a rezultatului
15. Se consideră funcția: L
0
1
2
3
4
5
c) Calculați f(5). Argumentaţi răspunsul prin calcule!

Argumentare:
f(5)=f(4)+f(2)
F(4)=f(3)+f(1)
F(3)=f(2)+f(0)
F(2)=f(1)+f(-1)
F(1)=1+3=4
F(0)=2
F(-1)=2
F(2)=4+2=6
F(3)=6+2=8
F(4)=8+4=12
F(5)=12+6=18
Raspuns: f(5)=18

1p- rezultat final corect 18


3p – argumentare corectă prin calcule {in caz că rezultatul final nu corespunde cu valoarea de 18,
însă calculele sunt efectuate se va acorda 1 punct}

d) Definiţia funcţiei f(x) este o definiţie recursivă?


Adevărat Fals
1p- scrierea corectă a rezultatului

L
16. Elaboraţi o funcţie pascal (doar funcţia) pentru definiţia f(x) de la itemul 7. 0
Function f(x:integer):integer; 1
Begin 2
3
If x<=0 then f:=2 else if x=1 then f:=x+3 else if x>1 then f:=f(x-1)+f(x-3); 4
End;

1p- scrierea corectă a antetului funcţiei şi a sintaxei pentru funcţie


1p – scrierea corectă a condiţiei 1
1p – scrierea corectă a condiţiei 2
1p – scrierea corectă a condiţiei 3

Total 48 puncte. MULT SUCCES!

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