Sunteți pe pagina 1din 7

Fiabilitatea programelor

MULTIPLE CHOICE

1. Fie instrucŃiunile următoare:


if x <> 0 then z := 0;
else z := 1;
if y <> 0 then z := 2
else z := 1/(x + y)

şi testul:
{( x = 0, y = 1) , ( x = 1. y = 0 )}
Care din următoarele afirmaŃii sunt adevarate:
a. Testul acoperã toate condiþiile simple
b. Testul acoperã toate drumurile
c. Testul acoperã 3 drumuri
d. Testul acoperã 4 drumuri
2. Fie instrucŃiunile următoare:
if x <> 0 then z := 0;
else z := 1;
if y <> 0 then z := 2
else z := 1/(x + y)

şi testul:
{( x = 0, y = 1) , ( x = 1, y = 0 ) , ( x = 0, y = 0 ) , ( x = 1, y = 1)}
Care din următoarele afirmaŃii sunt adevarate:
a. Testul acoperã toate condiþiile simple
b. Testul acoperã toate drumurile
c. Testul acoperã doar 3 drumuri
d. ) Testul acoperã doar 2 drumuri
3. Fie instrucþiunile urmãtoare:
if (x <> 0) and (y <> 0) then
z := 0
else z := 1 / y
şi testul :
{( x = 1, y = 1) , ( x = 0, y = 1)}
Care din următoarele afirmaŃii sunt adevarate:
a. Testul asigurã acoperirea celor douã arce
b. Testul e concludent
c. Testul acoperã toate condiþiile simple
d. La testare se semnaleazã o eroare

1
4.
Fie instrucþiunile urmãtoare :

if c then
if c and d then x :=1 if d then x :=1
else x :=2 ºi
else x :=2
else B

Care din următoarele afirmaŃii sunt adevarate:


a. instrucþiunile sunt echivalente
b. instrucþiunile sunt echivalente doar dacã operatorul and este evaluat prin
scurtcircuitare
c. în cazul când c este x <> 0 , d este 1/ x > 0 iar x are valoarea 0 instrucþiunile
sunt echivalente, indiferent de modul de evaluare
d. în cazul când c este 1/ x > 0 , d este x <> 0 iar x are valoarea 0 instrucþiunile
nu sunt echivalente.
5. Fie instrucþiunile
if x > z then
y := 3
else
y := 2;
if x > z + 1 then
w := 3
else
w := 2
Care din testele urmãtoare acoperã toate arcele:
a. x =1 ; z = 0,
x = 1 ; z = 1,
x = 2 ; z = 0,
x=0 ; z=0
b. x =1 ; z = 0,
x=2 ; z = 1 ,
x = 2 ; z = 0,
x=0 ; z=0
c. x =10 ; z = 0,
x=2 ; z = 1 ,
x = 2 ; z = 0,
x=0 ; z=0
d. x =10 ; z = 0,
x=2 ; z = 1 ,
x = 20 ; z = 0,
x=0 ; z=0

2
6.
Fie urmãtorul program Turbo Pascal:
var x, y : string;
egal : boolean;
i : integer;
begin
write(' x ='); readln(x);
write(' y ='); readln(y);
egal := (length(x) = length(y));
if egal then
for i := 1 to length(x) do
egal := (x[i] = y[i]);
if egal then writeln('x si y sint identice')
else writeln('x si y sint distincte')
end.
Scopul programului este de a verifica dacã ºirurile x ºi y sunt identice. Se cere sã se indice care
test este concludent din urmãtoarele teste:
a. x = 'a'; y = 'a';
b. x = 'abc'; y = 'abc';
c. ✟ x = 'ab'; y = 'cb';
d. x = 'ab'; y = 'ac';

7. Sã presupunem cã pentru determinarea celui mai mare divizor comun pozitiv ( a, b ) a douã numere
întregi a fost scris în limbajul Pascal urmãtorul algoritm:
var a, b, x, y : integer;
begin
read (a, b);
x := abs(a) ; y := abs(b);
while x <> y do
if x > y then x := x - y
else y := y - x;
writeln(x)
end.

Care afirmaþie, din urmãtoarele patru, este adevãratã:


a. pentru a=1, ºi b = 2 programul afiºeazã valoarea 2
b. ✟ pentru a=15, ºi b = 6 programul afiºeazã valoarea 3
c. pentru a=2, ºi b = 2 programul afiºeazã valoarea 1
d. pentru a=0, ºi b = 2 programul se terminã
8. Fie urmãtoarele instrucþiuni:
1. { x = a şi y = b} x := x + y { x = a + b şi y = b} ,
2. { x = a + b şi y = b} y := x − y { x = a + b şi y = a} ,
3. { x = a + b şi y = a} x := x − y { x = b şi y = a} .
4. { x = a şi y = b} x := x + y; y := x − y; x := x − y { x = b şi y = a}

Care afirmaþie, din urmãtoarele patru, este adevãratã:


a. instrucþiunea 1 nu este corectã
b. instrucþiunea 2 nu este corectã
c. instrucþiunea 3 nu este corectã
d. toate instrucþiunile sunt corecte

3
9. Fie programul:
var x,y : integer;
function e : integer;
begin
e := y;
y := 1 {efect lateral de modificare a
variabilei globale y}
end;
begin
y := 0;
x := e;
writeln ('y=', y)
end.

Care afirmaþie, din urmãtoarele patru, este adevãratã:


a. programul afiºeazã y = 0
b. ✟programul afiºeazã y = 1, din cauza efectului lateral al funcþiei e
c. programul afiºeazã y = 2
d. programul afiºeazã y = 3

10.
Fie instrucþiunile urmãtoare, prin care se calculeazã suma elementelor unui ºir finit x1,...
xn de numere întregi (0 ≤ n ≤ 100):
{P : 0 ≤ n ≤ 100}
s := 0; i := n;
while i >= 1 do begin
s := s + x[i];
i := i - 1
end;
n
{Q : s = ∑
k =1
x[k]}

Care afirmaþie, din urmãtoarele patru, este adevãratã:


n
a. I : s = ∑ x[k]
k =i
& 0 ≤i ≤ n este proprietate invarianta

iar t(i) = i este funcþie de terminare


n
b. I : s = ∑ x[k]
k =i+1
& 1 ≤i ≤ n este proprietate invarianta

iar t(i) = i este funcþie de terminare


n
c. I : s = ∑ x[k]
k =i+1
& 0 ≤i ≤ n este proprietate invarianta

iar t(i) = i-1 este funcþie de terminare


n
d. I : s = ∑ x[k]
k =i+1
& 0 ≤i ≤ n este proprietate invarianta

iar t(i) = i este funcþie de terminare

4
11.
Fie algoritmul urmãtor:
{n ≥ 0}
s := 0; i := 1;
while i <= n do begin
s := s + i;
i := i + 1
end
{s = n(n+1)/2}
Care afirmaþie, din urmãtoarele patru, este adevãratã:
a. I : s = ((i - 1)i)/2 & 1 ≤ i ≤ n + 1 este proprietate invariantã
iar t(n,i) = n - i + 1 este funcþie de terminare
b. I : s = ((i - 1)i)/2 & 1 ≤ i ≤ n este proprietate invariantã
iar t(n,i) = n - i + 1 este funcþie de terminare
c. I : s = (i - 1)i & 1 ≤ i ≤ n + 1 este proprietate invariantã
iar t(n,i) = n - i + 1 este funcþie de terminare
d. I : s = ((i - 1)i)/2 & 1 ≤ i ≤ n + 1 este proprietate invariantã
iar t(n,i) = n este funcþie de terminare
12. Fie algoritmul urmãtor:
{x > 0 & y > 0 & x = m & y = n}
while x <> y do
if x > y then x := x - y
else y := y - x
{x = (m, n)}
Care afirmaþie, din urmãtoarele patru, este adevãratã:
a. I : (x, y) = (m, n) & x > 0 & y > 0 este proprietate invariantã
iar t(x,y) = x-y este funcþie de terminare
b. I : (x, y) = 1 & x > 0 & y > 0 este proprietate invariantã
iar t(x,y) = x+y este funcþie de terminare
c. I : (x, y) = (m, n) & x > 1 & y > 0 este proprietate invariantã
iar t(x,y) = x+y este funcþie de terminare
d. I : (x, y) = (m, n) & x > 0 & y > 0 este proprietate invariantã
iar t(x,y) = x+y este funcþie de terminare
13. Fie algoritmul urmãtor:
{x ≥ 0 & y ≥ 0}
p := 0; c := y;
while c > 0 do begin
p := p + x;
c := c - 1
end
{p = x * y}

Care afirmaþie, din urmãtoarele patru, este adevãratã


a. I: p = x * (y - c) & 0 ≤ c ≤ y este proprietate invariantă
iar t(c) = -c este functie de terminare
b. I: p = x * y & 0 ≤ c ≤ y este proprietate invariantă
iar t(c) = c este functie de terminare
c. I: p = x * (y - c) & 0 ≤ c ≤ y este proprietate invariantã
iar t(c) = c este functie de terminare
d. I: p = x * (y - c) & 1 ≤ c ≤ y este proprietate invariantã
iar t(c) = c este functie de terminare

5
14. Fie algoritmul urmãtor:

{x ≥ 0 & y > 0}
q := 0; r := x;
while r >= y do begin
r := r - y;
q := q + 1
end
{0 ≤ r < y & x = q * y + r}

Care afirmaþie, din urmãtoarele patru, este adevãratã:


a. I : (x = q * y + r & r ≥ 0 & y > 0) este proprietate invariantă
iar t(r)=r-y+1este functie de terminare
b. I : (x = q * y & r ≥ 0 & y > 0) este proprietate invariantă
iar t(r)=r-y+1este functie de terminare
c. I : (x = q * y + r & r ≥ 1 & y > 0) este proprietate invariantă
iar t(r)=r-y+1este functie de terminare
d. I : (x = q * y + r & r ≥ 0 & y > 0) este proprietate invariantă
iar t(r)=y-r+1este functie de terminare
15. Fie algoritmul urmãtor:

{x = m & m ≥ 0 & a ≠ 0}
y := 1;
while x > 0 do begin
y := y * a;
x := x - 1
end
{y = am}

Care afirmaþie, din urmãtoarele patru, este adevãratã:


a. I : (x ≥ 0) & (y = a m-x) este proprietate invariantă
iar t = y este functie de terminare
b. ✟I : (x ≥ 0) & (y = a m-x) este proprietate invariantă
iar t = x este functie de terminare
c. I : (x ≥ 1) & (y = a m-x) este proprietate invariantă
iar t = x.este functie de terminare
d. ✟I : (x ≥ 0) & (y = a m-x) este proprietate invariantă
iar t = x este functie de terminare
16. Fie algoritmul urmãtor:

{x = m & m ≥ 0}
y := 1;
while x > 0 do begin
y := y + y;
x := x - 1
end
{y = 2m}

Care afirmaþie, din urmãtoarele patru, este adevãratã:


a. I : y = 2m+x & 0 ≤ x este proprietate invariantă
iar t = x este functie de terminare
b. I : y = 2x & 0 ≤ x este proprietate invariantă
iar t = x este functie de terminare
c. I : y = 2m & 0 ≤ x este proprietate invariantă
iar t = x.este functie de terminare
d. I : y = 2m-x & 0 ≤ x este proprietate invariantă
iar t = x este functie de terminare

6
17. Fie algoritmul urmãtor:

{x = m & y = n & m > 0 & n > 0}


i := 1; j := 0; k := 0; h := 1;
while x <> y do
if x > y then begin
x := x -y; i := i - k; j := j - h; end
else begin
y := y - x; k := k - i; h := h - j;
end
{x = (m,n) & x = i*m + j*n}
Algoritmul calculeazã cel mai mare divizor comun pozitiv al numerelor naturale nenule m ºi n ºi
pune în evidenþã douã numere întregi i ºi j astfel încît (m,n) este combinaþie liniarã de m
ºi n.
Care afirmaþie, din urmãtoarele patru, este adevãratã:
a. I: (x,y) = (m,n)& x > 0 & y > 0 & x = i*m + k*n & y = j*m + h*n
este proprietate invariantă iar t=x + y este functie de terminare
b. I: (x,y) = (m,n)& x > 0 & y > 0 & x = k*m + j*n & y = j*m + h*n
este proprietate invariantă iar t=x + y este functie de terminare
c. I: (x,y) = (m,n)& x > 0 & y > 0 & x = i*m + j*n & y = k*m + h*n
este proprietate invariantă iar t=x + y este functie de terminare
d. I: (x,y) = (m,n)& x > 0 & y > 0 & x = i*m + h*n & y = k*m + j*n
este proprietate invariantă iar t=x + y este functie de terminare