Sunteți pe pagina 1din 73

STRUCTURA ALTERNATIVA

1. Indic num rul coloanei care con ine expresiea logic care exprim c X se afl n afara segmentului [0,1] (x<0)or(x>1) Indic num rul coloanei care con ine expresiea logic care exprim c numerele ntregi n i k au aceia i paritate n mod 2=k mod 2 2. Indic num rul coloanei ce con ine algoritmul care atribuie variabilei A valoarea True, dac valoarea variabilei V este mai mic ca valoarea variabilei M i valoarea False n caz contrar. A:=Not(V>=M) 3. Indic care fragment determin valoarea maxim dintre valorile distincte a trei variabile A,B,C. If A>B then Max:=A Else Max:=B End If C>Max Then Max:=C End 4. Indic condi ia care exprim c num rul A este nenegativ. A>=0 5. Fie dat urm torul fragment: Var A, X: Integer Begin A:=7 Case A mod 7 of 1..4: X:=A+2 5:X:=A*A Else X:=A*2 End End 14 6. Indic care va fi valoarea variabilei D dup executarea urm torului fragment: D:=1 K:=6 Case K mod 10 of 3,2,7,5: D:=K 1: 4,8: D:=K+2 9,6: D:=K*2 End 12 7. Fie dat urm torul fragment: A:=3 If A>5 then If A>4 then WriteInt(1) Else WriteInt(2) End End Indic ce se va afi a n rezultatul execut rii acestui fragment. Nu se va afi a nimic

8. Fie Var N: Integer Begin N:=100 If N>=50 then N:=0 End If N<50 Then N:=5 End WriteInt(N) End Indic coloana care con ine rezultatul afi at pe ecran dup executarea acestui fragment. 5 9. Fie date dou intervale de timp (h1,m1,s1) i (h2,m2,s2). Indic algoritmul care calculeaz suma acestor intervale (h3,m3,s3). Se consider c rezultatul h3<=24 S3:=s1+s2 M3:=m1+m2 H3:=h1+h2 If s3>=60 then S3:=s3-60 M3:=m3+1 End If m3>=60 then M3:=m3-60 H3:=h3+1 End 10. Fie dat urm torul algoritm: Var Zi1, Zi2: 1..31 Luna1, Luna2: 1..12 An1,An2: Natural Begin Zi1:=28 Luna1=2 An1:=2003 Case Luna1 of 1,3,5,7,8,10: If zi1<31 then zi2:=zi1+1 Luna2:=Luna1 An2:=An1 Else Zi2:=1 Luna2:=Luna1+1 An2:=An1 End 4,6,9,11: If Zi1<30 then Zi2:=Zi1+1 Luna2:=Luna1 An2:=An1 Else Zi2:=1 Luna2:=Luna1+1 An2:=An1 End 2: If (zi1<28) then Zi2:=Zi1+1 Luna2:=Luna1

An2:=An1 Else If (An1 mod 4) # 0 then Zi2:=1 Luna2:=Luna1+1 An2:=An1 Else If Zi1=28 then Zi2:=29 Luna2:=Luna1 An2:=An1 Else Zi2:=1 Luna2:=Luna1+1 An2:=An1 End End 12: If Zi1<31 then Zi2:=Zi1+1 Luna2:=Luna1 An2:=An1 Else Zi:=1 Luna2:=1 An2:=An1+1 End End

Indic care vor fi valorile variabilelor (zi2,luna2,an2) dup executarea acestui algoritm Zi2:=29 Luna2:=2 An2:=2003 11. Fie dat urm torul algoritm: Var Zi1, Zi2: 1..31 Luna1, Luna2: 1..12 An1,An2: Natural Ani: Natural Begin Zi1:=4 Luna1:=3 An1:=2003 Zi2:=28 Luna2:=2 An2:=2007 Ani:=An2 - An1 If Luna2 < Luna1 then Ani:=Ani -1 Else If Luna1 =Luna2 then If Zi2 < Zi1 then Ani:=Ani -1 End End End End Indic care va fi valoarea variabilei Ani dup executarea acestui fragme 3 12. Se consider urm toarele declara ii:

Var Luna: 1..12 An: Natural N_zile: Natural Begin An=2004 Luna= 2 Case Luna of 1,3,5,7,8,10,12: N_zile:=31 2: N_zile:=28 4,6,9,11: N_zile:=30 End If (an mod 4 =0) & (Luna=2) then N_zile:=N_zile+1 End Indic care va fi valoarea variabilei N_zile dup executarea acestui fragment 29 13. Se consider urm toarele declara ii: Var Zi: 1..31 Luna: 1..12 An: Natural N_zi: Natural Begin Zi:=17 Luna:=11 An:=2004 Case Luna of 1: N_zi:=Zi 2: N_zi:= 31+Zi 3: N_zi:=59+Zi 4: N_zi:=90+Zi 5: N_zi:=120+Zi 6: N_zi:=151+Zi 7: N_zi:=181+Zi 8: N_zi:=212+Zi 9: N_zi:=244+Zi 10: N_zi:=274+Zi 11: N_zi:=305+Zi 12: N_zi:=335+Zi End If (An mod 4 =0) & (Luna>2) then N_zi:=N_zi+1 End Indic care va fi valoarea variabilei N_zi dup executarea acestui fragment 323

14. Ce va afi a urm torul algoritm? Var A: Integer X: Integer Begin A:=7 Case A of 1..5: X:=A+2 6..8: X:=A*A 9..100: X:=A*2 End WriteInt(X)

End

49 15. Ce va afi a urm torul algoritm? Type Semnal=(Rosu, Galben,Verde) Var A: Semnal Begin A:= Verde A:= pred(A) Case A of Rosu: WriteString('Stop') Galben: WriteString('Atentie') Verde: WriteString('Start') End End Atentie 16. Fie date declara iile: Var A,B,X:Integer Begin A:=18 B:= - 15 If A>B then X:=1 Else X:=2 End End Indic care va fi valoarea variabilei x dup executarea acestui fragment. 1 17. Fie date declara iile: Var A,B,X:Integer P:Boolean Begin A:=18 B:= -15 P:=True If not (P) and (A=B) then X:=1 Else X:=2 End End Indic care va fi valoarea variabilei x dup executarea acestui fragment. 2 18. Fie date declara iile: Var A,B,X:Integer P:Boolean Begin A:=18 B:= - 15 P:=True If (A<B) and P then

X:=1 Else X:=2 End End Indic care va fi valoarea variabilei x dup executarea acestui fragment. 2 19. Fie date declara iile: Var A,B,X:Integer P:Boolean Begin A:=18 B:=-15 P:=True If P and (A=B) then X:=1 else X:=2 end end Indic care va fi valoarea variabilei x dup executarea acestui fragment. 2 20. Fie date declara iile: Var A,B,X:Integer P:Boolean Begin A:= 18 B:= - 15 P:=True If A<B then X:=15 Else X:= -21 End End Indic care va fi valoarea variabilei X dup executarea acestui fragment. -21 21. Fie date declara iile: Var A,B:Integer P:Boolean Begin A:=18 B:=-15 P:=True If P then X:=32 Else X:=638 End End Indic care va fi valoarea variabilei X dup executarea acestui fragment. 32 22. Fie date declara iile: Var

A,B,X:Integer P:Boolean Begin A:=18 B:= - 15 P:= True If (A>B) or P then X:= - 6 Else X:= - 5 End End Indic care va fi valoarea variabilei X dup executarea acestui fragment.

-6

STRUCTURA REPETITIVA
1. Fie dat urmatorul algoritm: Var A,B:Integer Begin B:=1 For A:=5 to 10 step 1 B:=B+1 End WriteInt (B) Care va fi valoarea variabilei B dupa executarea acestui algoritm? 7 2. Fie dat urm torul fragment ce con ine un ciclu cu test ini ial: S:=1 I:=0 While i<4 do i:=i+1 Readint(num) S:=S+2*Num End Indic num rul coloanei cu fragmentul care con ine ciclu cu test final echivalent cu fragmentul anterior. S:=1 I:=0 If i<4 then Repeat i:=i+1 ReadInt(num) S:=S+2*Num Until not (i<4) End 3. Indic fragmentul care afi eaz pe ecran irul 5 6 7 8 9 10. X:=5 While X<=10 do WriteNat(X) X:=X+1 End 4. Fie dat urm torul fragment ce con ine un ciclu cu test final: i:=1 S:=0 Repeat

S:=S+I i:=i+1 Until i>4 Indic fragmentul care con ine ciclu cu test ini ial echivalent cu fragmentul anterior. i:=1 S:=0 S:=S+I i:=i+1 While i>4 do S:=S+I i:=i+1 End 5. Fie dat urm torul fragment: S:=0 For i:=1 to 10 step 1 For j:=4 to 5 step -1 (Eroare) For k:=0 to 3 step 1 S:=s+1 End End End Indic care va fi valoarea variabilei S dup executarea acestui fragment 0 6. Fie dat urm torul fragment: For C1:=1 to 9 step 1 For C2:=0 to 9 step 1 For C3:=0 to 9 step 1 If C1+C2+C3=N Then X:=C1*1000+C2*100+c3 WriteNat(X) End End End End Indic fragmentul echivalent cu acest fragment, utiliznd construc ia While n loc de For

C1:=1 While C1<=9 do C2:=0 While C2<=9 do C3:=0 While C3<=9 do If C1+C2+C3=N then X:=C1*1000+C2*100+C3 WriteNat(X) End C3:=succ(c3) End C2:=succ(c2) End C1:=succ(c1) End
7. Fie dat urm torul fragment: A:=10 B:=100 Repeat

A:=A+10 Until A>B WriteInt(A div 10) WriteInt(B) Indic , ce se va afi a pe ecran dup executarea fragmentului 11100

8. Indic de cte ori se va executa corpul urm torului ciclu: X:=2 For I:=X to X+3 step 1 X:=X+1 End 4 9. Fie dat urm torul fragment: A:=20 For i:=20 to 1 step -1 WriteInt(i) A:=A-3 End Indic ce se va afi a pe ecran dup executarea acestui fragment 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 10. Indic ce valoare se va afi a pe ecran dup executarea urm torului algoritm: Var S: Natural I: Char J: Natural Begin S:=0 For I:='b' to 'd' For J=4 to 4 step 1 S:=S+1 End End WriteNat(S) 3 11. Fie dat urm torul fragment: A :=45 B:=27 While A<>B do If A<B then B:=B-A Else A:=A-B End End Indic num rul coloanei care con ine valorile variabilelor A i B dup executarea acestui fragment . A=9 B=9 12. S :=0 For K:= 1 to 100 step 1 S:=S+K End Calculeaz suma primelor 100 numere a irului numerelor naturale nenule 13. Fie dat urm torul fragment: N:=345 While N<>0 do WriteNat(N mod 10) N:=N div 10

End Indic ce se va afi a n rezultatul execut rii facestui fragment. 543

14. Se consider urm torul fragment: B: = False R:= 45 While Not B do B:= R=15 R:= (R mod 4) +15 End Indic de cte ori se execut corpul acestui ciclu. 3 15. Fie dat urm torul fragment: N:=123 Repeat WriteNat(N mod 10) N:=N div 10 Until N=0 Indic ce se va afi a n rezultatul execut rii acestui fragment 321 16. Se consider urm toarele declara ii: Var A,B: Natural S: Natural I: Natural Begin S:=0 For I:=1 to B step 1 S:=S+A End
Indic care va fi valoarea variabilei S, dac A=2 i B=3.

6 17. Se consider urm torul fragment: X: =3 Y:=0 Repeat Y:=Y+X X:=Succ(X) Until X>4 X:=X+Y Indic care va fi valoarea variabilei X dup executarea acestui fragment. 12

ABSTRACTIA IN PROGRAMARE
1. Se consider urm toarele declara ii: Var X,Y: Real M:Integer Next:Char Procedure Test (A,B:Integer,Var C:Real,Var D:Real, Var Z:Char) Indic instruc iunea de apel procedural scris corect. Test(M,5,Y,X,Next)
2.
Indic func ia care introduce trei numere ntregi i calculeaz suma lor.

Function S(): Integer Var

N1:Integer N2: Integer N3:Integer R: Integer Begin ReadInt(N1) ReadInt(N2) ReadInt(N3) R:=N1+N2+N3 Return R 3. Fie dat urm torul algoritm: Var R: Natural procedureP1(A: Natural,B: Natural, var C: Natural) begin While A<>B Do If A>B Then A:=A-B Else B:=B-A End End C:=A End Begin R:=0 P1(14,35,R) WriteNat(R) End Indic ce va afi a pe ecran acest algoritm 7 4. Fie dat urm toarea procedur : Procedure P1 (F1:Char, F2:Char, Var F3:Char,Var F4:Char) Var X: Char Begin F2:='2' F3:='3' X:=F1 F1:=F4 WriteChar(F1) WriteChar(F2) WriteChar(F3) WriteChar(F4) End Indic to i parametrii formali, transmi i prin valoare. F!,F2 5. Fie dat urm toarea procedur : Procedure P1 (F1:Char, F2:Char, Var F3:Char,Var F4:Char) Var X: Char Begin F2:='2' F3:='3' X:=F1 F1:=F4 WriteChar(F1) WriteChar(F2) WriteChar(F3) WriteChar(F4) End Indic to i parametrii formali, transmi i prin referin . F3,F4

6. Fie dat urm torul algoritm: R: Natural Procedure P2(N: Natural) Var X:Natural Begin X:=0 While N>0 Do X:=X*10+N mod 10 N:=N div 10 End WriteNat(N) WriteNat(X) End Begin P2(121) End Indic ce va afi a pe ecran acest algoritm 0 121 7. Fie dat urm torul algoritm: Var A: Char B: Char C: Char D: Char Procedure P1 (F1:Char, F2:Char, Var F3:Char,Var F4:Char) Var X: Char Begin F2:='2' F3:='3' F1:=F4 End Begin A:='A' B:='B' C:='C' D:='D' P1(A,B,C,D) WriteChar(A) WriteChar(B) WriteChar(C) WriteChar(D) End Indic ce va afi a acest algoritm AB3D 8. Fie dat urm torul algoritm: Var V1:Natural V2: Natural V3: Natural V4:Natural Procedure P1(Var F1: Natural, Var F2: Natural, Var F3: Natural, Var F4: Natural) Var X: Natural Begin F2:=F1 F3:=F4 X:=F1+F2

F3:=F3+1 F4:=X+F2 End Begin V1:=1 V2:=2 V3:=3 V4:=4 P1(V1,V2,V3,V4) WriteNat(V1) WriteNat(V2) WriteNat(V3) WriteNat(V4) End Indic ce se va afi a pe ecran n rezultatul execut rii acestui algoritm. 1153 9. Fie Var A: Integer B: Integer Procedure Suma Var A: Integer Begin A:=2 B:=A+B End Begin A:=1 B:=2 Suma WriteNat(A) WriteNat(B) End Indic ce se va afi a pe ecran n rezultatul execut rii acestui algoritm. 14 10. Fie Var X: Integer Y: Integer Procedure P (A: Integer, B:Integer) Begin A:=A+3 B:=B+A End Begin X:=0 Y:=0 P(X,Y) WriteInt(X) WriteInt(Y) P(Y,X) WriteInt(X) WriteInt(Y) P(X,X) WriteInt(X) WriteInt(Y) P(Y,Y) WriteInt(X) WriteInt(Y) End

Indic ce se va afi a pe ecran n rezultatul execut rii acestui algoritm. 00000000 11. Var A: Integer B: Integer C: Integer D: Integer Procedure P(var B: Integer, var C:Integer) Begin A:=A*2 B:=B*2 C:=C*2 D:=D*2 WriteInt(A) WriteInt(B) WriteInt(C) WriteInt(D) End Begin A:=1 B:=1 C:=1 D:=1 P(A,B) WriteInt(A) WriteInt(B) WriteInt(C) WriteInt(D) End Indic ce se va afi a pe ecran n rezultatul execut rii acestui algoritm. 12. Fie dat urm torul algoritm: Algoritm A1 Var X,Y,Z:Integer Procedure Suma (X,Y,Z:integer) Begin Z:=X+Y End Begin X:=1 Y:=2 Z:=0 Suma(X,Y,Z) Suma(Y,Z,X) Suma(Z,X,Y) WriteInt(Z) End Indic ce valoare afi eaz urm torul algotitm. 0 13. Fie dat urm torul algoritm: Var R: Natural ProcedureP1(A: Natural,B: Natural, C: Natural) begin While A<>B Do If A>B Then A:=A-B Else B:=B-A

End End C:=A End Begin R:=0 P1(4,3,R) WriteNat(R) End Indic ce va afi a pe ecran acest algoritm 1

14. Se consider urm toarele declara ii: Var A,B,C,D: Char Procedure P(P1: Char,P2: Char,Var P3:Char,Var P4:Char) Var X: Char Begin P2:='2' P3:='3' X:=P1 P1:=P4 P4:=X WriteChar(P1) WriteChar(P2) WriteChar(P3) WriteChar(P4) End Begin A:='A' B:='B' C:='C' D:='D' P(A,B,C,D) WriteChar(A) WriteChar(B) WriteChar(C) WriteChar(D) End
Indic ce valoare se va afi;a pe ecran n rezultatul execut rii acestui fragment.

AB3A 15. Se consider urm toarele declara ii: Var A,B,C,D: Natural Procedure P(Var P1: Natural, Var P2: Natural,Var P3: Natural, Var P4: Natural) Var X: Natural Begin P3:=P1 P3:=P4 X:=P1 P3:=P3+1 P4:=X+P2 WriteNat(P1) WriteNat(P2) WriteNat(P3) WriteNat(P4) End

Begin A:=1 B:=2 C:=3 D:=4 P(A,B,C,D) WriteNat(A) WriteNat(B) WriteNat(C) WriteNat(D) End Indic ce valoare se va afi a pe ecran n rezultatul execut rii acestui fragment. 1253

16. Indic ce va afi a algoritmul urm tor : Algoritm ghici; Var A,B: Integer; Procedure Calcul(var A: Iinteger ; B: Integer); Begin A:=1 B:=2 End; Begin
A:=2 B:=3

Calcul(A,B); WriteInt(A+B) End 4 17. Se consider urmatorul fragment: Var Y: Integer; Function F(var Y: Integer): Integer; Begin Y:=Y+1 Return Y End Begin Y:=6; WriteInt(Y+ F(Y)+Y) End Indic ce va afi a acest algoritm 20

ABSTARCTIA DATELOR
1. Fie date utm toarele declara ii: Type Luna=(ian,feb,mart,apr,mai,iun,iul,aug,sept,oct,nov,dec) Zi=1..31 Var D1,D2 : Zi L1,L2: Luna T: Boolean Indic fragmentul care atribuie variabilei T valoarea True, dac data D1,L1 precede (n limitele anului ) data D2,L2 i valoara False n caz contrar. T := (L1<L2) or

((L1=L2) & (D1<D2)) 2. Fie date utm toarele declara ii: Type Luna=(ian,feb,mart,apr,mai,iun,iul,aug,sept,oct,nov,dec) Var L, L1: Luna K: 1..12 I: Natural Indic fragmentul care atribuie variabilei L1 valoarea lunii k dup luna L. L1:=L For I:=1 to K step 1 If L1=dec then L1:=ian Else L1:=succ(L1) End End 3. Fie dat urm torul fragment: Type Zi=(L,Ma,Mi,J,V,S,D) Var Z: Zi Begin For Z:=L to S step 1 WriteNat(Ord(Z)) End Indic ce se va afi a pe ecran n urma execut rii acestui fragment 012345 4. Se consider urm toarele declara ii: Type Zile =(l,m,mi,j,v,s,d) N_zi= 1..7 Var Z: Zile Z1: Zile K: N_zi I: Natural
Indic fragmentul care atribuie variabilei Z1 valoarea zilei k dup ziua Z (de exemplu, daca Z=m si k=2, atunci Z1=j).

Z1:=Z I:=1 While I<=K do If Z1=d then Z1:=l Else Z1:=succ(Z1) End I:=succ(I) End 5. Fie dat urm torul algoritm: Type Litere=(A,B,C,D,E,F,G) Var X: Litere Y: Char I: Integer Begin X:=A I:=ord(X) WriteInt(I)

Y:='A' I:=ord(Y) WriteInt(I) End Indic ce se va afi a pe ecran n urma execut rii acestui algoritm 065

TABLOURI UNIDIMENSIONALE
1. Fie : Var X : array[1..10] of real FunctionF(n: integer) : integer Var I :integer R :integer Begin R :=2 For i :=2 to n step 1 If X[I]=X[I-1] then R :=1 End End Return R End
Indic num rul coloanei care con ine descrierea cazului cnd func ia returneaz valoarea 1.Oricare dou elemente vecine din

vectorul X sunt egale 2. Se consider urm toarele declara ii: Type A=array[1..31] of integer Var mai: A i: Natural s: Integer N_zile: Natural Variabila Mai con ine temperaturile zilnice ale lunii mai.
Indic algoritmul, care determin n variabila N_zile , n cte zile au fost nregistrate temperaturi peste 20 grade.

N_zile:=0 I:=1 While I<=31 do If Mai[I] > 20 then N_zile:=N_zile+1 End I:=Succ(I) End 3. Se consider urm toarele declara ii: Type A=array[-1.. 1] of real Var B: A
Indic cte elemente de tip real con ine variabila B

3 4. Se consider urm toarele declara ii: Type A = Array[1..31] of Integer Var

Mai: A i: Natural S: Integer Medie: Integer Variabila Mai con iine temperaturile zilnice ale lunii mai.
Indic num rul coloanei, care con ine algoritmul care determin valoarea medie a temperaturii lunii mai .

S:=0 For i:=1 to 31 do S:=S+Mai[i] End Medie:=S div 31 WriteInt(Medie) 5. Fie date urm toarele declara ii: Var i,j,k,x: Integer A: array[1..10] of Integer
Indic num rul coloanei, ce con ine algoritmul corect care determin existen a valorii X n vectorul A(ordonat cresc tor), folosind algoritmul c ut rii binare

I:=1 J:=10 Repeat K:=(i+j)div2 If A[k]< X then I:=k+1 Else J:=k-1 End Until (A[k]=x) or (i>j) If i<=j then Writestring ('Este') Else Writestring('Nu este') End 6. Fie date urm toarele declara ii : Var A: array[2..24] of integer I: Natural Ordonat:Boolean Indic algoritmul care determin dac elementele vectorului A sunt ordonate cresc tor. i:=2 While (i<=23) & (A[i]<=A[i+1]) do i:=i+1 End Ordonat:=not (i<=23) 7. Se consider urm toarele declara ii: Type A=array[1..31] of integer Var mai: A i: Natural min: Integer i_min: Natural Variabila Mai con ine temperaturile zilnice ale lunii mai.
Indic num rul coloanei ce con ine algoritmul care determin cnd (n ce zi) a fost nregistrat ultima dat n luna mai temperatura minim .

Min:=mai[1] I_min:=1

For i:=2 to 31 do If mai[i]<=min then Min:=mai[i] I_min:=i End End Writeint(i_min) 8. Fie date urm toarele declara ii : Var A: array[2..24] of integer I: Natural Indic algoritmul care deplaseaz elementele vectorului A cu o pozi ie la dreapta . For I:=23 to 2 step -1 A[I+1]:=A[I] End A[2]:=0 9. Se consider urm toarele declara ii : Type A=array[1..31] of integer Var mai: A i: natural Variabila Mai con ine temperaturile zilnice ale lunii mai.
Indic algoritmul care determin dac au fost nregistrate n luna mai temperaturi negative

I:=1 While(i<=31)&(mai[i]>=0)do I:=i+1 End If i<=31 then Writestring( Da ) Else Writestring( Nu ) end 10. Se consider urm toarele declara ii: Type Vector= Array[2..5] of Integer Var Lista: Vector Dac p este un vector, iar numerele din elementele vectorului sunt (3,6,7,8),n aceast ordine de la stnga la dreapta,
indic ce valoare va returna func ia F?

Function F( Var p: Vector):Integer Var S: Integer I:=2 Begin S:=0 While I<5 do If P[I] mod 2 =0 then S:=S+ P[I] End I:=Succ(I) End Return S 6
11. Se consider declara iile : Type Zi=(l,ma,mi,j,v,s,d,x) Venit=array[zi] of real

Var V:venit I:zi S:real Componentele variabilei V reprezint venitul zilnic al unei ntereprinderi. Indic num rul coloanei care con ine algoritmul care calculeaz venitul s pt mnal al ntreprinderii S:=0 I:=l While i<=d do S:=s+v[i] I:=succ(I) end 12. Se consider urm toarele declara ii: Type Vector= Array[2..5] of Integer Var Lista: Vector Func ia Test de mai jos prime te drept parametru un vector p. Function Test( P: Vector): Boolean Var B:Boolean I: Natural Begin B:=true I:=2 While I<=5 do If P[I]=0 then B:=false End I:=Succ(I) End Return B
Indic num rul coloanei care indic cazul cnd func ia Test returneaz valoarea True

Toate elementele vectorului sunt nenule 13. Se consider urm toarele declara ii: Type Vector= Array[2..5] of Integer Var Lista: Vector Indic care dintre func iile de mai jos returneaz produsul numerilor din list . Function Produs (Q: Vector): Natural Var p: Natural I:Natural Begin I:=2 p:=1 While I<=5 do P:=P*Q[I] I:=Succ(I) End return P
14. Se consider urm torul fragment: Type T1 =array[1..12] of real Var S: T1 Function F1(var V:T1, K:Real): Natural Var I: Natural

Begin I:=1 While (I<=12) & (V[i] <>K) do I:=I+1 End If I<=12 then Return I Else Return 0 End End Elementul S[I] con ine valoarea salariului unui muncitor n luna I. Indic valoarea returnata de apelul F1(S,100), dac vectorul S are urm torul con inut: S=(200,800,300,700,400,100,500,150,250,100,300,100). 6 15. Se consider urm toarele declara ii: Type A=array[char] of real Var B: A
Indic cte elemente de tip real con ineine variabila B?

256
16. Se consider urm torul fragment: Type T1 =array[4..12] of Integer Var S: T1 Function F2(var V:T1): Natural Var I: Natural R: Natural Begin R:=0 I:=4 While I<12 do If V[I] mod 2=0 then R:=Succ(R) End I:=Succ(I) End Return R End Indic ce va returna apelul F2(S), dac vectorul S are urm torul con inut: S=(2,10,3,4,5,15,21,12,30) 4 17. Se consider urm torul fragment: Type T1 =array[1..12] of real Var S: T1 Function F2(var V:T1): Natural Var I: Natural M:Real P: Natural Begin M:=V[1] P:=1 I:=2 While I<12 do If V[I]<=M then

M:=V[I] P:=I End I:=succ(I) End Return P End Indic ce va returna apelul F2(S), dac vectorul S are urm torul con inut: S=(200,100,300,100,400,100,500,150,250,100,300,100). 10 18. Se consider urm torul fragment: Type T1 =array[1.5] of real Var S: T1 Procedure P2(var V:T1, X: Natural) Var I: Natural Begin I:=4 While (I>=1) & (V[I]>X) do V[I+1]=V[I] I:=Pred(I) End V[I+1]:=X End
Indic care va fi con inutul vectorului S (elementele vectorului se delimiteaz prin virgul ) dup executarea apelului P2(S,4) , dac nainte de apel vectorul S are urm torul con inut: S=(2,10,30,40).

2,4,10,30,40 19. Se consider urm torul fragment: Type T1 =array[1.6] of real Var S: T1 Procedure P3(var A: T1) Var I: Natural Min: Integer P_min: Natural J: Natural Begin For I:=1 to 5 step 1 Min:=A[I] P_min:=I For J:=I+1 to 6 step 1 If A[J] < Min then Min:=A[j] P_min:=j End End A[P_min]:= A[I] A[I]:= Min End End Fie, c vectorul S are urm torul con inut: (2,0,4,-3,0,-1). Indic care va fi con inutul vectorului S (elementele se delimiteaz prin virgul ) dup urm torul apel P3(S) . -3,-1,0,0,2,4 20. Se consider urm torul fragment:

Type T1 =array[1..6] of real Var S: T1 Procedure P4(var A: T1) Var I: Natural X: Real J: Natural Begin For I:=2 to 6 step 1 X:=A[I] J:=I - 1 While (j>=1) & (A[j]>X) do A[j+1]:=A[j] J:=pred(j) End A[j+1]:=X End End Fie, c vectorul S are urm torul con inut: (4,2,6,-1,2,1). Indic care va ficon inutul vectorului S (elementele se delimiteaz
prin virgul ) dup urm torul apel P4(S).

-1,1,2,2,4,6

SIRURI DE CARACTERE
1. Se consider urm toarele declara ii: Var X: String[50] Procedura P1(var S: String) Var I: Natural Begin I:=2 While (I<=Length(S)) Do WriteChar(S[I]) I:=I+2 End Begin X:='Algoritm' P1(X) End Indic ce se va afi a dup executarea acestui fragment loim
2. Se consider urm toarele declara ii: Var X,Y: String[50] Procedura P2(var S1: String,var S2: String) Var I: Natural Begin For I:=1 to Length(S1) do S2:=S1[I]+S2 End Begin X:='pascal' P2(X,Y) WriteString(Y) Indic ce se va afi a pe ecran dup executarea acestui fragment.

lacsap 3. Se consider urm toarele declara ii: Var s: string i: natural k: natural Begin Readstring(s) k:=0 For i:=1 to length(s) do Case s[i] of 'A' ..'Z' : k:=k+1 End End Writenat(k) End
Indic valoare care se va afi a pe ecran, dac se ntroduce irul Cos(x)+Sin(z)+1.8

2 4. Se consider urm toarele declara ii: Var s: string i: natural k: natural Begin ReadString(s) k:=0 For i:=1 to length(s) do Case s[i] of 'a' .. 'z' : k:=k+1 End End WriteNat(k) End
Indic valoarea care se va afi a pe ecran, dac se ntroduce irul Cos(x)+Sin(z)+1.8

6 5. Se consider urm toarele declara ii: Var s: string i: natural k: natural Begin Readstring(s) k:=0 For i:=1 to length(s) do Case s[i] of 'A' ..'Z', 'a' .. 'z' : k:=k+1 End End Writenat(k) End
Indic valoarea care se va afi a pe ecran, dac se ntroduce irul Cos(x)+1.8+Sin(z)

TABLOURI BIDIMENSIONALE
1. Se consider urm toarele declara ii: Type A=array[1..12] of array[1..31] of integer Var Meteo: A I,j: Natural S: Integer Medie: Iinteger Variabila Meteo con ine temperaturile zilnice ale anului. Indic num rul coloanei care con ine algoritmul care determin temperatura medie a lunii martie S:=0 I:=3 J:=1 While j<=31 do S:=s+meteo[I,j] J:=succ(j) End Medie:=s div 31 writeint(medie) 2. Se consider urm toarele declara ii: Type a=array[1..12] of array[1..31] of integer Var Meteo: A I,j: Natural Da: Boolean Variabila Meteo con ine temperaturile zilnice ale anului. Indic num rul coloanei care con ine algoritmul care determin dac au fost nregistrate n decursul anului temperaturi >45 grade Da:=false I:=1 While( i<=12)&(not Da) do J:=1 While(j<=31)&(not Da) do If meteo[I,j]>45 then Da:=true End J:=J+1 End I:=I+1 End If da then Writestring('Da') Else Writestring('Nu') End 3. Se consider declara iile: Type Oras=(Orhei,Balti,Soroca,Chisinau,Q) Zi=(L,Ma,Mi,J,V,S,D,Y) Consum=array[oras,zi] of natural Var C : Consum O: oras Z:Zi Max: natural I_max:oras

Componenta C[o,z] a variabilei C reprezint consumul de energie electric a ora ului O n ziua Z. Indic num rul coloanei care con ine algoritmul care indic ora ul cu un consum zilnic maxim I_max:=Orhei Max:=C[Orhei,L] For o:=Orhei to Chisinau do For z:=L to D do If C[o,z]>max then Max:=C[o,z] I_max:=o End End End

4. Fie dat urm torul fragment: Var A: array[1..n] of array[1..m] of Integer Begin For I:=1 to N div 2 step 1 For J:=1 to m step 1 C:=A[I,J] A[I,J]:=A[N-I+1,J] A[N-I+1,J]:=C End End Indic ce realizeaz acest fragment.
Inverseaz ordinea liniilor tabloului bidimensional

5. Fie dat urm torul fragment: Var A: array[1..n] of array[1..m] of Integer Begin For J:=1 to m div 2 step 1 For I:=1 to N step 1 C:=A[i,j] A[i,j]:=A[i,m-j+1] A[i,m-j+1]:=C End End Indic num rul coloanei care con ine destina ia acestui fragment.
Inverseaz ordinea coloanelor tabloului bidimensional

6. Se consider urm toarele declara ii: Type Tb=array[1..10] of array[1..10] of Integer Var A: Tb I,J: Natural X: Boolean Begin J:=1 While (J<10) & (A[3,J]<A[3,J+1]) do J:=J+1 End X:=not(J<10) End Indic num rul coloanei care con ine descrierea cazului cnd variabilei X i se atribuie valaorea True
Elementele rndului 3 sunt ordonate cresc tor

7. Se consider urm toarele declara ii: Type Tb=array[1..3] of array[1..4] of Integer

Var X: Tb Function F5(var A:Tb): Natural Var I,J:Natural R: Natural Begin R:=0 For I=1 to 3 step 1 For J:=1 to 4 step 1 If A[I,J] < 0 then R:=Succ(R) End End End Return R End Fie, c variabila A are urm torul con inut: -4 6 0 -5 2 11 4 -4 2 -5 6 -5 Indic ce valoare va returna urm torul apel F5(X) 5

8. Se consider urm toarele declara ii: Type Tb=array[1..3] of array[1..4] of Integer Var X: Tb Function F5(var A:Tb): Natural Var I: Natural R: Natural Begin R:=0 I:=3 For J:=1 to 4 step 1 If A[I,J] < 0 then R:=Succ(R) End End Return R End Fie, c variabila A are urm torul con inut: -4 6 0 -5 2 11 4 -4 2 -5 6 -5 Indic ce valoare va returna urm torul apel F5(X) 2 9. Se consider urm toarele declara ii: Type Tb=array[1..3] of array[1..4] of Integer Var X: Tb Function F5(var A:Tb): Natural Var I,J:Natural R: Natural Begin R:=0

J:=3 For I=1 to 3 step 1 If A[I,J] < 0 then R:=Succ(R) End End Return R End Fie, c variabila A are urm torul con inut: -4 6 0 -5 2 11 4 -4 2 -5 6 -5 Indic ce valoare va returna urm torul apel F5(X) 0

10. Se consider urm toarele declara ii: Type Tb=array[1..3] of array[1..4] of Integer Var X:Tb Function F5(var A:Tb): Natural Var I,J:Natural R: Natural Begin R:=0 For I=1 to 3 step 1 For J:=1 to 4 step 1 If A[I,J] < 0 then R:=R+A[I,J] End End End Return R End Fie, c variabila A are urm torul con inut: -4 6 0 -5 2 11 4 -4 2 -5 6 -5 Indic ce valoare va returna urm torul apel F5(X) -23 11. Se consider urm toarele declara ii: Type Tb=array[1..3] of array[1..4] of Integer Var X:Tb Function F5(var A:Tb): Natural Var I:Natural R: Natural Begin R:=0 I:=3 For J:=1 to 4 step 1 If A[I,J] < 0 then R:=R +A[I,J] End End Return R End

Fie, c -4 2 2 Indic -10

variabila A are urm torul con inut: 6 0 -5 11 4 -4 -5 6 -5 ce valoare va returna urm torul apel F5(X)

12. Se consider urm toarele declara ii: Type Tb=array[1..3] of array[1..4] of Integer Var X: Tb Function F5(var A:Tb): Integer Var I,J:Natural R: Integer Begin R:=0 J:=3 For I=1 to 3 step 1 If A[I,J] < 0 then R:=R + A[I,J] End End Return R End Fie, c variabila A are urm torul con inut: -4 6 0 -5 2 11 4 -4 2 -5 6 -5 Indic ce valoare va returna urm torul apel F5(X) 0 13. Se consider urm toarele declara ii: Type Tb=array[1..3] of array[1..4] of Integer Var X:Tb Function F5(var A:Tb): Natural Var I,J:Natural R: Natural Begin R:=A[1,1] For I=1 to 3 step 1 For J:=1 to 4 step 1 If A[I,J] < R then R:=A[I,J] End End End Return R End Fie, c variabila A are urm torul con inut: -4 6 0 -5 2 11 4 -4 2 -5 6 -5 Indic ce valoare va returna urm torul apel F5(X) -5

14. Se consider urm toarele declara ii: Type Tb=array[1..3] of array[1..4] of Integer Var X:Tb Function F5(var A:Tb): Natural Var I:Natural R: Natural Begin R:=A[3,1] I:=3 For J:=2 to 4 step 1 If A[I,J] < R then R:=A[I,J] End End Return R End Fie, c variabila A are urm torul con inut: -4 6 0 -5 2 11 4 -4 2 -5 6 -5 Indic ce valoare va returna urm torul apel F5(X) -5 15. Se consider urm toarele declara ii: Type Tb=array[1..3] of array[1..4] of Integer Var X:Tb Function F5(var A:Tb): Natural Var I,J:Natural R: Natural Begin R:=A[1,2] J:=2 For I=2 to 3 step 1 If A[I,J] < R then R:=A[I,J] End End Return R End Fie, ca variabila A are urmatorul continut: -4 6 0 -15 2 11 4 -4 2 -5 6 -5 Indic ce valoare va returna urm torul apel F5(X) -5 16. Se consider urm toarele declara ii: Type Tb=array[1..3] of array[1..4] of Integer Var X: Tb Function F5(var A:Tb): Natural Var I,J:Natural R: Integer

Begin R:=A[1,1] For I=2 to 3 step 1 For J:=1 to 4 step 1 If A[I,J] < R then R:=A[I,J] End End End Return R End Fie, c variabila A are urm torul con inut: -4 6 0 -15 2 11 4 -4 2 -5 6 -5 Indic ce valoare va returna urm torul apel F5(X) -5

MULTIMI
1. Se consider urm toarele declara ii: Type lang=(pascal,assembler,ci,basic,fortran,algol,cobol) Var a: set of lang Indic care este num rul maxim de valori care pot fi atribuite variabilei 128 2. Se consider urm toarele declara ii: type tm: set of 2..45 var a: tm i: natural Indic num rul coloanei care con ine algoritmul care afi eaz la ecran elementele mul imii For i:=2 to 45 do If I in A then Writenat(i) End End
3. Se consider urm toarele declara ii: Type M_cifre=set of 0..9 Var N1,N2: natural M1,M2,M: M_cifre I: natural Indic num rul coloanei care con ine algoritmul care cite te de la tastatur dou numere naturale i afi eaz pe ecran cifrele care se ntlnesc cel pu in n unul din numere ReadNat(n1) ReadNat(n2) M1:=[] While N1>0 do M1:=M1+N1 mod 10 N1:=N1 div 10 End M2:=[] While N2>0 do

M2:=M2+N2 mod 10 N2=N2 div 10 End M:=M1+M2 For i:=0 to 9 do If i in M then WriteNat(i) End End 4. Se consider urm toarele declara ii: Var A: Set of 2..4 X: Boolean I: Natural Begin I: = 2 X:= False While (I<=4) & (I In A) do I:=I+1 End X:=I>4 Indic num rul coloanei care indic cazul cnd variabilei X i se atribuie valoarea True .
A =[2,3,4]

5. Se consider urm toarele declara ii: type interval=(prima,secunda,tertia,kvarta,kvinta,sexta,septima) var a: set of interval Indic num rul maxim de valori care pot fi atribuite mul imii 128 6. Se consider urm toarele declara ii: type nota=(do,re,mi,fa,sol,la,si) var a: set of nota Indic num rul maxim de valori ale mul imii A 128

STRUCTURI NEOMOGENE
1. Se consider urm toarele declara ii: Type Data = Record zi:1..31 luna:1..12 an: natural End Var d1:data Indic num rul coloanei care con ine algoritmul care atribuie variabilei D1 valoarea '10 mai 2004' D1.zi:=10 D1.luna:=5 D1.an:=2004 2. Se consider urm toarele declara ii: Type

Time=Record h:0..23 min:0..59 sec:0..59 End Var T1: Time Indic num rul coloanei care con ine algoritmul care atribuie variabilei T1 valoarea ora 9 34 min 10 sec T1.h:=9 T1.min:=34 T1.sec:=10

3. Se consider urm toarele declara ii: Type culoare=(verde,cruce,doba,rosu) valoare=(d6,d7,d8,d9,d10,valet,dama,crai,tuz) karte=record m: culoare d: valoare end var k1: karte Indic num rul coloanei care con ine algoritmul care atribuie variabilei k1 valoarea dama verde K1.m:=verde K1.d:=dama 4. Se consider declara iile: Type Data=record Zi:1..31 Luna:1..12 An: natural End Persoana=record Nume:string Data_nasterii:data End Lista_persoane=array[1..50] of persoana Var Lista: Lista_persoane i : Natural Variabila Lista con ine informa ii despre persoane. Indic num rul coloanei,care con ine algoritmul care afi ez pe ecran numele persoanelor n scute n luna l i:=1 While i<=50 do IfLista[i].Data_nasterii.luna=l thenWritestring(Lista[i].Nume) End I:=succ(i) End 5. Se consider urm toarele declara ii: Type Elev =Record Nume:String[10] Clasa: 1..12 Note: array[1..3] of 1..10 End Var X: Elev Indic num rul coloanei care con ine fragmentul care atribuie variabilei X urm toarele date: 'Elevul Albu Ion nva n clasa 9 i are urm toarele note la Infrmatic : 8,7,9 ' X.Nume:='Albu Ion'

X.Clasa:=9 X.Note[1]:=8 X.Note[2]:=7 X.Note[3]:=9 6. Se consider [ urm toarele declara ii : Type Cerc =Record Centr: Record X: Real Y: Real End R: Natural End X: array[1..20] of Cerc Var C: X I: Natural R: Boolean Indic num rul coloanei care con ine fragmentul care afi eaz razele cercurilor cu centrul n origine I:=1 While I<=20 do R:= (C[I].Centr.X=0) & (C[I].Centr.Y=0) If R then WriteNat(C[I].R End I:=succ(I) End 7. Se consider urm toarele declara ii: Type Book = Record Autor: String[10] Nume: String[20] Year: Natural End X= array[-1 ..8] of Book Var Lista: X Indic c i octe i ocup n memoria operativ variabila Lista. 340

FISIERE
1. Se consider urm toarele declara ii: Var F: File of Integer N_el: natural X: integer Indic num rul coloanei care con ine algoritmul care determin n variabila N_el cte numere ntregi con ine fi ierul 'Date.txt' Assign(F,'Date.txt') Open(F,Input) N_el:=0 While not Eof(F) do ReadFile(F,x) N_el:=N_el+1

End 2. Se consider urm toarele declara ii: Var F: File of string A: String Begin Assign(f,'x.dat') Open(f,output) Writefile(f, 'unu') Close (f) Open(f,output) Writefile(f,' doi') Close(f) Open(f,input) Readfile(f,a) Close(f) Writestring(a) End Indic num rul coloanei care con ine ce se va afi a pe ecran n rezultatul execut rii acestui algoritm
doi

3. Se consider urm toarele declara ii: Var F: File of Integer max: Integer X: integer Indic num rul coloanei care con ine algoritmul care determin n variabila Max valoarea maxim din f i ierul 'Dt.txt' Assign(F,'Dt.txt') Open(F,Input) If Not Eof(F) Then ReadFile(F,Max) While Not(Eof(F) do ReadFile(F,X) If X>Max Then Max:=X End End 4. Se consider urm toarele declara ii: Type Tc=Integer Tf: File of Integer Var F: Tf C: Tc Max: Integer Indic num rul coloanei care con ine fragmentul care determin valoarea maxim a componentelor fi ierului 'A:\Num' Assign(F,'A:\Num') Open(F, Input) If not eof(F) then ReadFile(F,Max) While not eof(F)do ReadFile(F,C) If C>Max Then Max:=C End End End

Close(F)

RECURSIVITATEA
1. Ce se va afi a in urma execu iei urm torului algoritm: Var A: Integer Function F(A: Integer):Integer Begin If A>0 then Return F(a-1) Else Return a End End Begin WriteInt (F(3)) End
0123 2. Function S_cifre(n:Integer): Natural Var cifra:0..9; Begin if n=0 then Return 0 Else cifra:=n mod 10 If cifra mod 2<>0 then Return S_cifre(n div 10) Else Return cifra+S_cifre(n div 10) End End End Determin care va fi valoarea variabilei X dup apelul: X:=S_cifre(13545) 4 3. Fie dat urm torul algoritm: Var C1,C2:Char Procedure P5( var P1:Char, var P2:Char) Begin If P1<>P2 Then P1:=succ(P1) P2:=pred(P2) P5(P1,P2) WriteChar(P1) WriteChar(P2) End End Begin C1:='A' C2:='G' P5(C1,C2) Indic ce va afi a pe ecran acest algoritm DDDDDD

4. Fie data urmatoarea procedur : Procedure Binar(n: Natural) Var C: Natural R: 0..1 Begin If n>0 then c:=n div 2 r:=n mod 2 Binar(c) WriteNat(r) End End Determin ce va afi a procedura Binar daca se va apela in felul urmator: Binar(20) 10100 5. Se consider urm toarea func ie: Function Ce (i:Integer):Integer Begin if (i=0) Then Return 0 Else Return (Ce(i-1)+2*i) End End Ce valoare va returna apelul Ce(5) ? 30 6. Se consider urm torul subprogram: Function P3(A:Natural, B:Natural): Natural Begin If B>0 Then Return(A*P3(A,B-1)) Else Return 1 End End Indic ce va afi a pe ecran apelul: WriteNat(P3(3,2)) 9 7. Se consider urm torul subprogram: Procedure P2(V:Char) Begin WriteChar(V) If V>'D' Then P2(Chr(Ord(V)-1)) P2(Chr(Ord(V)-2 )) End End Indic ce va afi a pe ecran apelul: P2('F') FEDCD 8. Cu ce expresie trebuie nlocuite punctele din defini ia subprogramului al turat astfel nct, la apelul F(6,27) s se afi eze ctul ntreg al mp r irii lui 27 la 6 (adic 4). Function E (a:Integer, b:Integer):Integer Begin If (a>b) Then

Return 0 Else Return ....................................... End End 1+E(a,b-a)

9. Ce se va afi a in urma execu iei urm torului algoritm? Var n: Integer u : array[1..5] of Integer b: Integer Function Calcul (i:Integer, var b:Integer):Integer; Begin If (i>=n) then Return b Else If (u[i]>b) then b:=u[i] End Return Calcul (i+1,b) End End Begin n:=5 u[1]:=8; u[2]:=3; u[3]:=1; u[4]:=7; u[5]:=15 b:=0 WriteInt(calcul(1,b)) End 8 10. Indic care func ie calculeaz N factorial corect Function F (N:Integer):Integer Begin If N=0 Then Return 1 Else Return N*F(N-1) End End 11. Se consider urm toarele declara ii: Type vector=array[1..5] of integer Var A:vector Function S v:vector; n:Integer):Integer Begin If (n=1) then Return v[1] Else Return (v[n]+s(v,n-1)) End End Ce valoare va returna apelul S(A,5), daca elementele vectorului A sunt 2,8,4,0,7 ? 21 12. Se considera urm toarea func ie: Function Ce( i:Integer): Integer Begin

If (i<=1) Then Return i Else Return (Ce(i-2)+i) End End Ce valoare va returna apelul Ce(5) ? 9

13. Se consider urm torul subprogram: Procedure P1( A:Integer) Begin WriteInt(A) If A<10 Then P1(A+3) End WriteInt(A) End Indic ce va afi a pe ecran apelul: P1(4) 47101074 14. Care dintre func ii verifica daca un num r n este prim (returneaz valoarea true daca parametrul este un num r prim i false n caz contrar), dac apelul este Prim(n,2) ? 3 Function Prim(n,i:natural): boolean; Begin If i>n div 2 then prim:=true else if n mod i =0 then prim:=false else prim:=prim(n,i+1) end end end 15. Fie dat urm torul algoritm: Var S:Integer Procedure P6 (P1:Integer,P2: Integer, Var S:Integer) Begin S:=S+P1+P2 If P2>P1 Then P6(P1+2,P2,S) P6(P1,P2-1,S) End End Begin S:=0 P6(2,3,S) WriteInt(S) End Indic ce va afi a pe ecran acest algoritm 16 16. Fie data procedura: Procedure Afisare ( k:Integer) Begin If (k<6) Then

WriteInt(2*k-1) Afisare(k+1) End End Preciza i ce valori se vor afi a la apelul Afisare(2). 3579

17. Se considera urmatoarea func ie: Function F( x:Integer):Integer Begin If(x<=0) Then Return 3 Else Return(F(x-1)*2) End End Ce valoare se va intoarce la apelul F(4) ? 48 18. Se consider urm toarea func ie: Function Produs(n:natural):natural Begin If n=1 Then Return 1 Else Return (3*n-2)* Produs(n-1) End End Indica ce valoare va returna apelul Produs(3) 28 (Nici un raspuns nu este corect) 19. Fie dat urm toarea func ie recursiv : Function F1(N: Natural): Natural Begin If N=1 Then Return 1 Else If N mod 2=0 Then Return 1+F1(3*N+1) Else Return 100+F1(N div 2) End End End Indic ce valoare va returna urm torul apel: F1(3) 101 20. Fie dat urm torul algoritm: Var B:Char Procedure P(Var A: Char) Begin WriteChar(A) If A<'Z' Then A:=Succ(A) P(A) End WriteChar(A) End

Begin B:='X' P(B) End Indic ce va afi a pe ecran acest algoritm

XYZZZZ 21. Fie dat urm toarea func ie: Function Suma(n:Natural): Natural Begin If n=1 Then Return 1 Else Return (2*n-1)+Suma(n-1) End End Indic ce valoare va returna apelul: Suma(5) 25 22. Se consider urm torul subprogram: Procedure P2(V:Char) Begin WriteChar(V) If V>'C' Then P2(Chr(Ord(V)-1) P2(Chr(Ord(V)-2 End End Indic ce va afi a pe ecran apelul: P2('E') EDCBC 23. Se consider func ia: Function F (i:Integer):Integer Begin If (i=0) Then Return 0 Else If (i mod 2=0) Then Return (F(i-1)+i) Else Return (F(i-1)-i) End End End Ce va returna F(7) ? -4 24. Se consider procedura: Procedure P( n: Natural) Begin WriteNat( n mod 10) If n div 10 <> 0 then P(n div 10) End End Ce va afi a apelul P(123)? 321

25. Function S_cifre(n: Integer): Natural Var cifra:0..9; Begin If n=0 then Return 0 Else cifra:=n mod 10 If cifra mod 2=0 then Return S_cifre(n div 10) Else Return cifra+S_cifre(n div 10) End End End Determin care va fi valoarea variabilei X dup apelul: X:=S_cifre(11367) 12

26. Fie dat urm toarea procedur recursiv : Procedure P5( P1:Char,P2:Char) Begin If P1<>P2 Then P1:=succ(P1) P2:=pred(P2) P5(P1,P2) WriteChar(P1) WriteChar(P2) End End Indic ce va afi a pe ecran urm torul apel: P5('A','G') DDCEBF 27. Fie dat urm torul algoritm: Var x; Integer n: Integer Procedure Ex Begin If x<n then x:=x+1 Ex WriteInt(x) End End Begin n:=5 x:=1 Ex End Indic ce va afi a pe ecran acest algoritm. 5555 28. Fie dat urm torul algoritm: Var B:Char Procedure P(Var A: Char) Begin

If A<'Z' Then A:=Succ(A) P(A) End WriteChar(A) End Begin B:='Y' P(B) End Indic ce va afi a pe ecran acest algoritm ZZ

29. Se consider urm toarea func ie: Function F( a, b:Integer):Integer Begin If (a mod b = 0) then Return b Else Return (F(b, a mod b)) End End Ce valoare va returna apelul F(12,8) ? 4

30. Ce se va afi a in urma execu iei urm torului algoritm? Var x:Integer; Procedure A (i:Integer) Begin If(i<4) Then WriteInt(x-2) A(i+1) WriteInt(x+3) End End Begin X:=5 A(1) End 333888

VARIABILE DINAMICE
1. Se consider urm torul algoritm: Type Ref=Pointer to Integer Var P,Q: Ref Begin Allocate(P,size,Integer)) Allocate(Q,size(Integer)) P^:=5 Q^:=5 If P=Q then P:=Nil

Else If P^=Q^ then Q:=P End End If P=Q then Q^:=6 End WriteInt(P^) Indic ce se va afi a pe ecran n rezultatul execut rii acestui algoritm. 6 2. Indic ce se va afi a pe ecran n rezultatul execut rii urm torului algoritm: Var P:Pointer To Integer Q:Pointer To Integer Begin Allocate(P,size(integer)) Allocate(Q,size(integer)) P^ := 15 Q^:= P^ If P=Q then Q^:=Q^+4 End Writeint(Q^) End 15 3. Se consider urm torul algoritm: Type Ref=Pointer to Integer Var P,Q: Ref Begin Allocate(P,size,Integer)) Allocate(Q,size(Integer)) P^:=5 Q^:=5 If P=Q then P:=Nil Else If P^=Q^ then Q:=P End End If P=Q then Q^:=4 End WriteInt(P^) Indic ce se va afi a pe ecran n rezultatul execut rii acestui algoritm. 4 4. Fie dat urm torul algoritm: Type D=Record A: Boolean B: Pointer to Real C: Pointer to Real End Var R: Pointer to D

Begin Allocate(R, size(D)) R^.A:=False Allocate(R^.B,size(Real)) R^.B^:=15 R^.C:=nil If R^.B<>Nil then R^.C:=R^.B End R^.B^:=R^.C^ - 4 R^.A:=R^.B=R^.C WriteReal(R^.B^) Indic ce se va af a pe ecran dup executarea acestui algoritm 11

5. Ce va afi a pe ecran algoritm ce urmeaz ? Var I: Ponter to Integer Begin Allocate(I, size(Integer)) I^:=3 Allocate(I, size(Integer)) I^:=1 Allocate(I, size(Integer)) I^:=2 WriteInt(I^) End 2 6. Fie dat urm torul algoritm: Type D=Record A: Boolean B: Pointer to Real C: Pointer to Real End Var R: Pointer to D Begin Allocate(R, size(D)) R^.A:=False Allocate(R^.B,size(Real)) R^.B^:=12 R^.C:=nil If R^.B<>Nil then R^.C:=R^.B End R^.B^:=R^.C^ - 4 R^.A:=R^.B=R^.C WriteReal(R^.B^) Indic ce se va afi a pe ecran dup executarea acestui algoritm 8 7. Care dintre urm toarele secven e concateneaz dou stive (cunoscndu-se adresele vrfurilor Varf1 i Varf2) i stiva rezultat are vrful n variabila V: Type Adr=Pointer to nod nod= Record inf: Integer leg: Adr end Var

p,varf1,varf2: Adr p:=varf1 While p^.leg<>nil do p:=p^.leg End p^.leg:=varf2 v:=varf1

8. Indic ce se va afi a pe ecran n rezultatul execut rii urm torului algoritm: Var P:Pointer To Integer Q:Pointer To Integer Begin Allocate(P,size(integer)) Allocate(Q,size(integer)) P^ := 4 Q^:= P^ If P^=Q^ then Q^:=Q^+3 End Writeint(Q^) End 7 9. Fie date urm toarele declara ii: Type Nod= Record Inf: Integer Urm: Pointer to Nod End Var Lista: Pointer to Nod Dac p este un pointer ctre primul nod, iar numerele din noduri sunt (5,8,9,10), n aceast ordine de la stnga la dreapta, indic ce valoare va returna func ia F? Function F( P: Pointer to nod): Integer Var S:integer Begin S:=0 While p^.urm <> nil do If p^.inf mod 2=0 then S:=S+p^.inf End P:=p^.urm End Return S End 8 10. Ce va afi a pe ecran algoritmul ce urmeaz ? Var I: Ponter to integer ; Begin Allocate(I, size(Integer)) I^:=1; Allocate(I, size(Iteger)) I^:=2 Allocate(I size(Iteger)) I^:=3 WriteInt(I^) End 3

11. Care dintre urm toarele secven e concateneaz dou stive (cunoscndu-se adresele vrfurilor varf1 i varf2) i stiva rezultat are vrful n variabila V: Type Adr=pointer to nod nod=record inf:integer leg:adr; end; var p,varf1,varf2: Adr
RS: p:=varf1 While p^.leg<>nil do p:=p^.leg end p^.leg:=varf2 v:=varf1

12. Care dintre atribuiri terge un nod referit prin X din interiorul unei liste dublu nl n uite definite astfel: Type Adr=Pointer to nod nod=record inf:integer; adrs,adrd:adr end Var x,y,z: Adr x^.adrd^.adrs:=x^.adrs x^.adrs^.adrd:=x^.adrd deallocate(x,size(adr)) 13. Ce se va afi a dup execu ia secven ei de algoritm: Type Ref_car = Pointer to Char Var A: Ref_car B: Pointer to Integer C:Pointer to Integer Begin Allocate(A,size(Char)) A^ := 'B' Allocate(B,size(Integer)) B^ := 1 C := B Allocate(B,size(Integer)) B^:=10 WriteInt (B^) WriteInt (A^) WriteChar(C^) End 10B1 14. Ce va afi a pe ecran algoritm ce urmeaz ? Var I: ponter to integer Begin Allocate(I, size(Integer)) I^:=3 Allocate(I, size(Integer)) I^:=2

Allocate(I, size(Integer)) I^:=1 WriteInt(I^) End 1

15. Fie dat urm torul algoritm: Type D=Record A: Boolean B: Pointer to Real C: Pointer to Real End Var R: Pointer to D Begin Allocate(R, size(D)) R^.A:=False Allocate(R^.B,size(Real)) R^.B^:=21 R^.C:=nil If R^.B<>Nil then R^.C:=R^.B End R^.B^:=R^.C^ - 14 R^.A:=R^.B=R^.C WriteReal(R^.B^) Indic ce se va afi a pe ecran dup executarea acestui algoritm 7 16. Ce se va afi a dup execu ia urm toarei secven e de algoritm: Type Ref_car = Pointer to Char Var A: Ref_car B: Pointer to Integer C: Pointer to Integer Begin Allocate(A,size(char)) A^ := 'A' Allocate(B,size(Integer)) B^ := 10 C:=B Allocate(B,size(Integer)) B^:=1 WriteInt (B^) WriteInt(A^) WriteChar( C^) End 1A10 17. Se consider urm toarea declara ie de list liniar simplu nl n uit de numere ntregi: Type Nod= Record Inf: Integer Urm: Pointer to Nod End Var Lista: Pointer to Nod Dac p este un pointer ctre primul nod, iar numerele din noduri sunt (1,4,5,6), n aceast ordine de la stnga la dreapta, indic ce valoare va returna func ia F?

Function F( P: Pointer to nod): Integer Var S:integer Begin S:=0 While p^.urm <> nil do If p^.inf mod 2= 1 then S:=S+p^.inf End P:=p^.urm End Return S End 6

18. Indic ce se va afi a pe ecran n rezultatul execut rii urm torului algoritm: Var P:Pointer To Integer Q:Pointer To Integer Begin Allocate(P,size(integer)) Allocate(Q,size(integer)) P^ := 4 Q^:= P^ If P=Q then Q^:=Q^+3 End Writeint(Q^) End 4 19. Fie date urm torul algoritm: Type Ref=Pointer to Integer Var P,Q: Ref Begin Allocate(P,size,Integer)) Allocate(Q,size(Integer)) P^:=5 Q^:=5 If P=Q then P:=Nil Else If P^=Q^ then Q:=P End End If P=Q then Q^:=8 End WriteInt(P^) Indic ce se va afi a pe ecran n rezultatul execut rii acestui algoritm. 8 20. Ce se va afi a dup execu ia secven ei de algoritm: Type Ref_car = Pointer to Char Var A: Ref_car

B: Pointer to Integer C: Pointer to Integer Begin Allocate(A,size(Char)) A := 'C' Allocate(B,size(Integer)) B^ := 10 C:=B Allocate(B,size(Integer)) B^:=5 WriteInt(B^) WriteInt(A^) WriteChar(C^) End 5C10

ARBORI BINARI
:

, .
(3+4)*2-7-5*1+(6+9)*8

2.

34*712+*8-+
25

3.

):

Type Derevo = Record inf: Integer AL: Pointer to Derevo AR: Pointer to Derevo

end
:

Function F1 (DDP: Pointer to Derevo): Integer begin IF DDP^.AR = nil THEN Return DDP^.inf ELSE Return F1 (DDP^.AR) end end
?

4.

):

Type Derevo = Record inf: Integer AL: Pointer to Derevo AR: Pointer to Derevo end
:

Function F1 (DDP: Pointer to Derevo): Integer begin IF DDP^.AL = nil THEN Return DDP^.inf ELSE Return F1 (DDP^.AL) end

end
?

5.

Type Derevo = Record inf: Integer AL: Pointer to Derevo AR: Pointer to Derevo end
:

Function F3 (DDP: Pointer to Derevo): Pointer to Derevo begin While DDP^.AL <> nil DO DDP:= DDP^.AL end Return DDP End
? 1-3

6.

Type Derevo = Record inf: Integer AL: Pointer to Derevo

AR: Pointer to Derevo end


:

Function F3 (DDP: Pointer to Derevo): Pointer to Derevo begin While DDP^.AR <> nil DO DDP:= DDP^.AR end Return DDP end
?

7.

Type Derevo = Record inf: Integer AL: Pointer to Derevo AR: Pointer to Derevo end Var X: Integer
:

Function F (DD: Pointer to Derevo): Boolean begin IF DD <> nil THEN IF DD^.inf = X THEN Return TRUE

ELSE IF D^.inf > X THEN Return F (DD^.AL) ELSE Return F (DD^.AR) end end ELSE Return FALSE end end
, : , X=9, DD

8.

Type Derevo = Record inf: Integer AL: Pointer to Derevo AR: Pointer to Derevo end Var X: Integer

Function F (DD: Pointer to Derevo): Boolean begin IF DD <> nil THEN IF DD^.inf = X THEN Return TRUE ELSE IF D^.inf > X THEN Return F (DD^.AL) ELSE Return F (DD^.AR) end end ELSE Return FALSE end end
, : , X=3, DD

9.

Type

Derevo = Record inf: Integer AL: Pointer to Derevo AR: Pointer to Derevo end
:

Function F (DD: Pointer to Derevo): Integer begin IF DD = nil THEN Return 0 ELSE IF DD^.inf > 0 THEN Return DD^.inf + F(DD^.AL) + F(DD^.AR) ELSE Return F(DD^.AL) + F(DD^.AR) end end end
?

10.

Type Derevo = Record inf: Natural AL: Pointer to Derevo AR: Pointer to Derevo

end
:

Procedure Create_DD (var DD: Pointer to Derevo) var x: Natural begin ReadNat (x) IF x<>0 THEN Allocate (DD, size (Derevo)) DD^.inf:= x Create_DD (DD^.AL) Create_DD (DD^.AR) ELSE DD:= nil end end
, , . ?

1,2,4,8,0,0,9,0,0,5,10,0,0,0,3,6,11,0,0,0,7,12,0,0,0

11.

Type

Derevo = Record inf: Natural AL: Pointer to Derevo AR: Pointer to Derevo end
:

Procedure Create_DD (var DD: Pointer to Derevo) var x: Natural begin ReadNat (x) IF x<>0 THEN Allocate (DD, size (Derevo)) DD^.inf:= x Create_DD (DD^.AL) Create_DD (DD^.AR) ELSE DD:= nil end end
, , . ?

1,2,4,8,0,0,9,11,0,0,0,5,0,0,3,6,0,10,12,0,0,13,0,0,7,0,0

12.

.
+-*8-427*+593

13.

.
842-*7-59+3*+

14.

Answer: 51 15. :

(7*(3+1)-8+2*9-(4+5))*6

.
*-+-*7+318*29+456

16.

(7*(3+1)-8+2*9-(4+5))*6
.
731+*8-29*+45+-6*

17.

(3+4)*2-7-5*1+(6+9)*8
.
+--*+3427*51+698

18.

(3+4)*2-7-5*1+(6+9)*8
.
34+2*7-51*-69+8*+

19.

281-*64+*3795-*+109

20.

74*81+-93-6*52-0*-+
55

21.

? .
1,2,4,8,9,5,10,3,6,11,7,12

22.

? .
8,4,9,2,10,5,1,11,6,3,12,7

23.

? .

8,9,4,10,5,2,11,6,12,7,3,1

24.

? .
1,2,4,8,9,11,5,3,6,10,12,13,7

25.

? .
8,4,11,9,2,5,1,6,12,10,13,3,7

26.

? .
8,11,9,4,5,2,12,13,10,6,7,3,1

27.

? .
1,2,4,7,8,11,3,5,9,12,6,10,13,14

28.

? .
7,4,11,8,2,1,5,12,9,3,6,13,10,14

29.

? .
7,11,8,4,2,12,9,5,13,14,10,6,3,1

30.

Type Derevo = Record inf: Integer AL: Pointer to Derevo AR: Pointer to Derevo end Var Rez: Integer
:

Procedure P (DD: Pointer to Derevo) begin IF (DD^.AL<>nil) and (DD^.AR<>nil) THEN Rez:= Rez + DD^.inf P (DD^.AL) P (DD^.AR) end

end
, DD : Rez ,

10

31.

Type Derevo = Record inf: Integer AL: Pointer to Derevo AR: Pointer to Derevo end Var Rez: Integer
:

Procedure P (DD: Pointer to Derevo) begin IF DD <> nil THEN IF (DD^.AL<>nil) or (DD^.AR<>nil) THEN Rez:= Rez + DD^.inf P (DD^.AL)

p (DD^.AR) end end end


, DD : Rez ,

35

32.

Type Derevo = Record inf: Integer AL: Pointer to Derevo AR: Pointer to Derevo end Var Rez: Integer
:

Procedure P (DD: Pointer to Derevo) begin IF (DD^.AL<>nil) and (DD^.AR<>nil) THEN Rez:= Rez + DD^.inf

P (DD^.AL) P (DD^.AR) end end


, DD : Rez ,

33.

Type Derevo = Record inf: Integer AL: Pointer to Derevo AR: Pointer to Derevo end Var Rez: Integer
:

Procedure P (DD: Pointer to Derevo) begin IF DD <> nil THEN IF (DD^.AL<>nil) or (DD^.AR<>nil) THEN

Rez:= Rez + DD^.inf P (DD^.AL) p (DD^.AR) end end end


, DD : Rez ,

48

34.

Type Derevo = Record inf: Integer AL: Pointer to Derevo AR: Pointer to Derevo end Var Rez: Integer
:

Procedure P (DD: Pointer to Derevo) begin

IF (DD^.AL<>nil) and (DD^.AR<>nil) THEN Rez:= Rez + DD^.inf P (DD^.AL) P (DD^.AR) end end
, DD : Rez ,

39

35.

Type Derevo = Record inf: Integer AL: Pointer to Derevo AR: Pointer to Derevo end Var Rez: Integer
:

Procedure P (DD: Pointer to Derevo) begin

IF (DD^.AL = nil) and (DD^.AR = nil) THEN Rez:= Rez + DD^.inf ELSE P (DD^.AL) P (DD^.AR) end end
, DD : Rez ,

57

36.

Type Derevo = Record inf: Integer AL: Pointer to Derevo AR: Pointer to Derevo end Var Rez: Integer
:

Procedure P (DD: Pointer to Derevo) begin IF (DD^.AL = nil) and (DD^.AR = nil) THEN Rez:= Rez + DD^.inf ELSE P (DD^.AL) P (DD^.AR) end end
, DD : Rez ,

54

B) Metode specifice arborilor binari :


y y y

Parcurgerea in inordine (stanga varf dreapta SVD) se parcurge mai intai subarborele stang, apoi varful, apoi subarborele drept. Parcurgerea in preordine (varf- stanga dreapta VSD) se parcurge mai intai varful, apoi subarborele stang, apoi subarborele drept. Parcurgerea in postordine (stanga dreapta varf SDV) se parcurge mai intai subarborele stang, apoi subarborele drept si la sfarsit varful.

Solutiile de parcurgere ale arborelui din figura urmatoare :

parcurgere svd - in inordine 42516378 parcurgere vsd - in preordine 12453678 parcurgere sdv - in postordine 45268731

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