modulul_1 grile cristi

36
UNIVERSITATEA TITU MAIORESCU FACULTATEA DE INFORMATICĂ MODELE ÎNTREBĂRI EXAMEN LICEN܉Ă MODULUL 1 Limbaje оi tehnici de programare

Upload: sumanariu-elena

Post on 08-Dec-2015

319 views

Category:

Documents


11 download

DESCRIPTION

MODULUL_1 Grile Cristi

TRANSCRIPT

Page 1: MODULUL_1 Grile Cristi

UNIVERSITATEA TITU MAIORESCU

FACULTATEA DE INFORMATIC;

MODELE ÎNTREB;RI EXAMEN LICEN軍;

MODULUL 1

Limbaje Ъi tehnici de programare

Page 2: MODULUL_1 Grile Cristi

UNIVERSITATEA TITU MAIORESCU

FACULTATEA DE INFORMATIC;

MODELE ÎNTREB;RI EXAMEN LICEN軍;

Disciplina Programare procedurala

Page 3: MODULUL_1 Grile Cristi

1

GRILE LICENTA

MODULUL LIMBAJE SI TEHNICI DE PROGRAMARE

Programare procedurala (Programare in limbajul C)

1. Ce afişeaz< urm<toarea secvenY< de program C?

int i = 3, j = 5;

int a = i + (++ j);

int b = (i ++) + j;

printf("%d %d %d %d", a, b, i, j);

A. 8 8 4 6

B. 8 9 4 6

C. 8 8 3 6

D. 9 9 3 6

E. 9 9 4 6

2. Dac< j = -1 atunci evaluarea expresiei (j > 0) && (1 / (j + 1) > 10)

A. va genera împ<rYirea la zero

B. nu va genera împ<rYirea la zero

C. nu se poate face deoarece expresia are prea multe paranteze

D. nu se poate face deoarece operatorul && nu se foloseste in limbajul C.

3. Ce afişeaz< urm<toarea secvenY< de program C?

int i;

for (i = 2; (i<=10) && (i % 2 != 0); i++)

printf("%d\n", i );

A. 3 5 7 9

B. 2 4 6 8 10

C. nimic

D. 2

E. nu se compileaza

Page 4: MODULUL_1 Grile Cristi

2

4. Ce se va afişa pe ecran în urma execu郡iei urm<torului program C?

#include <stdio.h> #include <math.h>

int f(int a, int b, int c) { c = c + 5; a = (int) sqrt(a); b ++; printf( "%d %d %d ", a, b, c); return c < a + b; } int main() { int a = 9, b = 16, c = 25;

if( f(b, c, a) ) { printf( "true " ); printf("%d %d %d", b, c, a ); } else { printf( "false " ); printf("%d %d %d", a, c, b ); } return 0;

}

A. 3 17 30 false 9 25 16

B. 3 17 30 true 16 25 9

C. 4 26 14 true 26 14 4

D. 4 26 14 false 4 14 26

E. 4 26 14 true 16 25 9

5. Ce afişeaz< urm<toarea secvenY< de program C?

int a[10] = {2, -1, 7, 5, 0, -3}, i;

for ( i = 1; i < 9; i ++)

if ( a[i+1] > 0 && 1/a[i] < 1) printf( "%d ", a[i]);

A. 7 5

B. -1 7

C. Nimic pentru cu sirul a nu este corect initializat

D. 7 5 0 -3

E. -1 7 si apoi se ob郡ine eroarea „împ<r郡ire la zero”

6. Ce afişeaz< urm<toarea secvenY< de program dac< este citit< de la tastatur< valoarea 10?

int a[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

int n, i;

Page 5: MODULUL_1 Grile Cristi

3

printf( "Introduceti un intreg intre 1 si 10: ");

scanf("%d", &n);

for (i=0; i< n; i++)

switch (a[i])

{

case 5: printf("%d ", ++ i ) ;

case 10: printf("%d ", ++ i );

default: printf("%d ", i );

}

A. 0 1 2 3 4 5 6 7 8 9

B. 0 1 2 3 4 4 5 6 7 8 9

C. 0 1 2 3 5 6 6 7 8 10 10

D. 1 2 3 4 5 5 6 7 8 9 10

E. 1 2 3 4 5 5 6 7 7 8 9

7. Ce se va afişa pe ecran în urma execu郡iei urm<torului program C?

#include <stdio.h> int main() { int x[5], i; int *p; p = x; for (i = 0; i < 5; i ++) *(x + i) = i; printf ("%d ", *p ); printf ("%d ", p[0]); printf ("%d ", *(p + 1)); printf ("%d ", (p + 1)[2]); while (*p < 2) printf("%d ", *(p ++)); printf("%d ", *(p + 1) ); printf("%d ", *p + 2 ); return 0; }

A. 0 0 1 3 0 1 3 4

B. 0 0 1 3 0 1 2 4

C. 0 1 1 2 1 3 4

D. 0 0 1 3 0 1 2 3

8. Ce se întâmpl< în urma execu郡iei urm<torului program C dac< fi群ierul nr.txt con郡ine valorile 1 2 3 4 1 ?

Page 6: MODULUL_1 Grile Cristi

4

#include <stdio.h> #include <stdlib.h> int main() { FILE *input, *output; int i = 0; double s = 0; double numar; input = fopen( "nr.txt", "r"); output = fopen("abc.txt", "w"); fscanf(input, "%lf", &numar); while(!feof(input)) { fprintf(output, "%.0f\n", numar); s += numar; i ++; fscanf(input, "%lf", &numar); } fprintf(output,"%.2f", s/i); fclose(input); fclose(output); return 0; }

A. Programul cite群te toate numerele din fi群ierul nr.txt, le scrie apoi în fi群ierul abc.txt

fiecare num<r pe o linie 群i afi群eaz< tot în fi群ierul abc.txt valoarea 2.20

B. Programul cite群te toate numerele din fi群ierul nr.txt, le scrie apoi în fi群ierul abc.txt fiecare num<r pe o linie 群i afi群eaz< tot în fi群ierul abc.txt valoarea 2

C. Programul cite群te toate numerele din fi群ierul nr.txt, le scrie apoi tot în fi群ierul nr.txt, la sfâr群it, fiecare num<r pe o linie 群i afi群eaz< în fi群ierul abc.txt valoarea 2.20

D. Programul cite群te toate numerele din fi群ierul nr.txt, le scrie apoi tot în fi群ierul nr.txt, la început, fiecare num<r pe o linie 群i afi群eaz< în fi群ierul abc.txt valoarea 2.20

E. Programul cite群te toate numerele din fi群ierul nr.txt, le scrie apoi tot în fi群ierul nr.txt, la început, fiecare num<r pe o linie 群i afi群eaz< tot în fi群ierul nr.txt valoarea 2

9. În urma apel<rii func郡iei fopen("abc.txt", "w"), dac< fi群ierul abc.txt nu se g<se群te în directorul curent atunci

A. se semnaleaz< o eroare de compilare

B. se creaz< un fi群ier gol abc.txt în directorul curent C. se închide fi群ierul abc.txt D. se caut< în toate directoarele un fi群ier cu acest nume 群i dac< nu se g<se群te atunci

pe ecranul monitorului va apare mesajul "Fisier inexistent".

10. Se d< urm<toarea declaratie struct punct { double x; double y; } a[3];

Precizati care dintre urmatoarele afirmatii sunt adevarate:

A. Declararea variabilei a nu se poate face odata cu definirea tipului struct.

B. Nu se poate defini un vector de tip struct.

Page 7: MODULUL_1 Grile Cristi

5

C. a este o variabila de tip vector de 3 intregi.

D. a[0].x este o variabila de tip double.

E. x.a[0] este o variabila de tip double.

11. Se considera urmatorul program C:

#include <stdio.h> #include <stdlib.h> int main() {

int a[50], i, n, t, m, k, j; scanf("%d", &n); for(i=0; i<n; i++) scanf("%d", &a[i]); for(i=0; i<n-1; i++) { m = a[i];k=i; for(j=i+1;j<n; j++) if(a[j]< m) { k=j; m=a[j];} t=a[k]; a[k]=a[i]; a[i]=t; } for(i=0; i<n; i++) printf("%d ", a[i]); return 0; }

訓tiind c< datele de intrare sunt n = 7 群i a = 7, 6, 5, 4, 3, 2, 1 care vor fi valorile vectorului

a la sfâr群itul programului?

A. a=7, 6, 5, 4, 3, 2, 1

B. a= 1, 2, 3, 4, 5, 6, 7

C. a=7, 2, 5, 3, 4, 6, 1

D. a=1, 7, 2, 6, 3, 5, 4

12. Precizati care dintre urmatoarele afirmatii sunt adevarate:

A. Func郡ia free din biblioteca stdlib.h se poate aplica oricarui pointer.

B. Functia malloc din biblioteca stdlib.h se poate aplica oricarui vector.

C. Functia malloc din biblioteca stdlib.h rezerva un num<r de octeti în locaYii de memorie consecutive returnând un pointer la primul octet sau pointerul NULL

dac< nu poate aloca memoria solicitat<. D. Functia free din biblioteca stdlib.h elibereaza zona de memorie rezervata unui

vector de intregi

13. Ce afişeaz< urm<toarea secvenY< de program C?

for (i = 1; i <= 10; i +=2) if (i < 8 && i != 2) printf("x");

A. x

B. xx

C. xxx

D. xxxx

E. xxxxxxx

14. Ce afişeaz< urm<toarea secvenY< de program C? for (i = 1; i < 5; i += 2) for (j = 1; j < 3; j ++) printf("%d ", i * j );

Page 8: MODULUL_1 Grile Cristi

6

A. 1 2 2 4

B. 1 2 3 6

C. 1 2 3 2 4 6

D. 1 2 3 3 6 9

15. Ce afişeaz< urm<toarea secvenY< de program C?

int *p1, *p2, a, b; a = 10; b = 20; p1 = &a; p2 = &b; printf("%d %d ", *p1 , *p2 ); p1 = p2; *p2 = 30; a = 5; printf ("%d %d ", a , b ); printf ("%d %d ",*p1 , *p2 );

A. 10 20 5 30 5 30

B. 10 20 5 20 5 20

C. 10 20 5 30 30 30

D. 10 20 5 20 30 30

16. Se considera urmatoarea definitie de tip in C:

struct nod { int x; struct nod *next; };

Precizati care dintre urmatoarele afirmatii sunt adevarate:

A. Definitia de mai sus se poate folosi pentru a implementa o lista simplu inlantuita.

B. Definitia de mai sus se poate folosi pentru a implementa o lista dublu inlantuita.

C. Definitia de mai sus nu se poate folosi pentru a implementa o stiva inlantuita.

D. Definitia de mai sus se poate folosi pentru a implementa un arbore binar.

17. Ce afişeaz< urm<toarea secvenYa de program? #include <stdio.h> #include <stdlib.h> int main() { int a[50], b[50], i, n, t; scanf("%d", &n); for(i=0; i<n; i++) scanf("%d", &a[i]); for(i=0; i<n; i++)

b[i]=0; for(i=0; i<n-1; i++) for(j=i+1;j<n; j++) if(a[j]< a[i]) b[i]++; else b[j]++; return 0; }

Page 9: MODULUL_1 Grile Cristi

7

Care vor fi valorile vectorului b la sfarsitul programului stiind ca la intrare avem valorile n =

7 si a = (2, 4, 5, 6, 7, 1, 3)?

A. (1, 3, 2, 2, 2, 0, 1)

B. (1, 3, 4, 5, 4, 0, 1)

C. (1, 3, 4, 3, 2, 0, 1)

D. (1, 3, 4, 5, 6, 0, 2)

E. (1, 3, 4, 5, 6, 0, 1)

18. Ce afişeaz< urm<toarea secvenYa de program?

int a[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; int i,j, s=0; for (i=0; i<2; i++) for (j=3; j>0; j--) s+=a[i][j]; printf("S=%d", s);

A. S=78

B. S=30

C. s=30

D. s=78

E. S=36

19. Care este functia cu doi parametrii de intrare, din biblioteca string.h, care copiaza un sir de

caractere in alt sir de caractere?

A. copy

B. strcpy

C. cpy

D. strncpy

E. copystr

20. Ce biblioteca trebuie inclusa intr-un program C pentru a putea folosi functia realloc()?

A. memory.h

B. studio.h

C. stdlib.h

D. alloc.h

Page 10: MODULUL_1 Grile Cristi

UNIVERSITATEA TITU MAIORESCU

FACULTATEA DE INFORMATIC;

MODELE ÎNTREB;RI EXAMEN LICEN軍;

Disciplina Programare orientata pe obiecte (C++)

Page 11: MODULUL_1 Grile Cristi

1. Fie secvenŃa:

class cls{public: cls( ){ cout<<”constructor”;} cls(cls &c){cout<<”constructor de copiere “;}}; int f(cls c){ return 1;} int main() {cls c; f(c);}

La execuŃia programului de mai sus: a) constructorul de clasă se apelează o dată, iar cel de copiere nu se apelează; b) constructorii de clasă şi de copiere se apelează fiecare câte o dată; c) constructorul de copiere se apelează o dată, iar cel de clasă nu se apelează; d) constructorul de clasă se apelează de două ori, iar cel de copiere nicio dată; e) constructorul de clasă şi cel de copiere se apelează fiecare de câte două ori. 2. Fie secvenŃa:

class cls{ public: cls( ){ cout<<”constructor”;} cls(cls &c){cout<<”constructor de copiere “;}}; int f(cls &c){ return 1;} int main() {cls c; f(c);}

La execuŃia programului de mai sus: a) constructorul clasei se apelează o dată, iar cel de copiere nu se apelează nicio dată; b) constructorii de clasă şi de copiere se apelează fiecare câte o dată; c) constructorul de copiere se apelează o dată, iar cel de clasa nu se apelează; d) constructorul clasei se apelează de două ori, iar cel de copiere nicio dată; e) constructorul de clasă şi cel de copiere se apelează fiecare de câte doua ori.

3. Fie secvenŃa:

class c { int a; public: virtual void metoda1( )=0; virtual void metoda2( )=0; }; int main() { c*pob; // declaratia 1 c ob; // declaratia 2 c*vpob[5]; // declaratia 3 c vob[5]; // declaratia 4 }

DeclaraŃiile admise în acest caz sunt:

a) 1+2 b) 1 c) 2+4

Page 12: MODULUL_1 Grile Cristi

d) 3 e) 1+2+3 4. Consderăm următoarea secvenŃă:

class c1{public:int a; c1(int y ) { a=y;cout<<”constructor 1”;} ~c1(){cout<<”destructor 2”;}}; class c2:public c1 {public: int b; c2(int y, int x):c1(y) { b=x; cout<<”constructor 2”;} ~c2(){cout<<”destructor 2”;}}; int main( ) { c1 ob1(2); c2 ob2(2,3);}

SecvenŃa afişează: a) constructor 2 constructor 1 constructor 2 destructor 2 destructor 1 b) constructor 1 constructor 1 constructor 2 destructor 2 destructor 1 c) constructor 1 constructor 2 constructor 1 destructor 1 destructor 2 d) constructor 1 constructor 1 constructor 2 5. Fie următorul program C++:

#include <iostream.h> class B{ public: B(){cout<<"B()"<<endl;} ~B(){cout<<"~B()"<<endl;} }; class D: public B{ public: D(){cout<<"D()"<<endl;} ~D(){cout<<"~D()"<<endl;} }; int main(){ B *b=new B(); delete b; b=new D(); delete b; }

Programul afişează: a) B() ~B() B() D() ~D() b) B() ~B() B() D() ~B() c) B() ~B() B() ~B() d) B() ~B() D() ~B() 6. Fie programul:

#include <iostream.h> class B{ public: B(){cout<<"B()"<<endl;}

Page 13: MODULUL_1 Grile Cristi

B(B &b){cout<<"B(B &b)"<<endl;} }; class D: public B{ public: D(){cout<<"D()"<<endl;} D(D &d){cout<<"D(D &d)"<<endl;} }; int main(){ B b; B b1(b); D d; D d1(d); }

Programul afişează: a) B() B(B&b) B() D() B(B &b) D(D &d) b) B() B() B(B&b) B() D() B(B &b) D() B(B &b) c) B() B(B&b) D() B(B &b) D() B(B &b) d) B() B(B&b) B() D() B() D(D &d) 7. Considerăm următorul program C++:

class persoana {int varsta; public: persoana(int v=18){varsta=v;} persoana& operator++(int) {varsta++; return *this;} int get_varsta(){return varsta;}}; int main(){ persoana p(20); cout<<p++. get_varsta() ;}

Programul afişează: a) 21 b) 20 c) 18 d) 19 8. Fie următorul program C++:

#include<iostream.h> class B

{ int x; friend void f(B); public: B(int i=0){x=i;}};

class D: public B { int y;

public: D(int i=0,int j=1):B(i) {y=j;}};

void f(B b ){cout<<b.x<<endl;} int main( ){ B b; D d; f(b); f(d);}

Page 14: MODULUL_1 Grile Cristi

FuncŃia declarată friend în clasa de bază: a) rămâne friend în clasa derivată, pentru partea moştenită; b) are acces pe toată clasa derivată; c) nu are acces pe zonele private şi protected ale clasei derivate; d) nu are acces pe zona private a clasei derivate; e) are acces pe zonele public şi protected ale clasei derivate. 8. Se consideră secvenŃa de program:

class B { private: int x,y; public: B(int a,int b){ x=a;y=b; } B(const B &a){x=a.x; y=a.y;}};

În care din următoarele situaŃii se realizează copierea unui obiect într-altul: a) B c1(4,5) b) B c2(0.0, 0,0) c) B c3=c1 d) B c4(1) e) B c5(c1) 10. Considerăm următorul program:

#include <iostream.h> class B { public: virtual void f() { cout<<"B::f() ";} void g() { cout<<"B::g() ";}}; class D1: public B{ public: void f() { cout<<"D1::f() ";} void g() { cout<<"D1::g() ";}}; class D2: public B{ public: void g() { cout<<"D2::g() ";}}; int main(){ int i; B *a =new B(); B *b= new D1(); B* c= new D2(); a->f(); b->f(); c->f(); a->g(); b->g(); c->g(); }

Ce se va afişa pe ecran în urma execuŃiei sale?

a) B::f() D1::f() B::f() B::g() B::g() B::g()

Page 15: MODULUL_1 Grile Cristi

b) D2::f() D1::f() B::f() B::g() B::g() B::g() c) B::f() D1::f() D::f() B::g() D1::g() D2::g() d) B::f() D1::f() B::f() B::g() D1::g() D2::g() e) B::f() B::f() D2::f() B::g() B::g() D2::g()

11. Considerăm programul C++ următor:

#include<iostream.h> class salariat { int varsta; public: salariat (int v=20) {varsta =v;} operator int() { return varsta;} salariat& operator++( ) {varsta++; return *this;} salariat operator++ (int) { varsta++; return *this;}}; int main() { salariat s(21); int a =s++, b=++s; cout<<a<<” “<<b<<endl; }

Programul afişează: a) 20 21 b) 21 22 c) 22 23 d) 20 22 e) 21 23

12. Fie programul:

#include <iostream.h> class Cerc{ public: float raza; Cerc(float r){raza=r;} float get_raza(){return raza;} Cerc operator++(){raza++;return *this;} Cerc operator--(){raza--;return *this;}}; int main(){ Cerc c(3.5); cout<<(++(++c)).get_raza()<<” ”; cout<<c.get_raza()<<” ”; cout<<(--(--c)).get_raza()<<” ”; cout<<c.get_raza()<<” ”; }

Programul afişează: a) 3.5 4.5 2.5 3.5 b) 5.5 4.5 2.5 2.5 c) 2.5 5.5 4.5 3.5 d) 5.5 4.5 2.5 3.5

Page 16: MODULUL_1 Grile Cristi

e) 4.5 2.5 3.5 5.5

13. O metodă statică a unui obiect se caracterizează prin faptul că:

a) nu primeşte pointerul la obiect this; b) foloseşte numai datele publice; c) se poate apela prin numele clasei; d) nu poate fi definită decât inline; e) dacă prelucrează obiecte, primeşte obiectele ca parametrii expliciŃi.

14. În secvenŃa de program

# include <iostream.h> class C {public: static int s;}; int C::s=0; int main() { int a=7; C::s=a; cout<<C::a;}

utilizarea lui s este: a) ilegală, deoarece nu există niciun obiect creat; b) ilegală, deoarece s este iniŃializat în afara clasei; c) ilegală, deoarece s este dublu definit, în clasă şi în afara ei; d) ilegală, deoarece datele statice pot fi doar private; e) corectă, deoarece membrii statici există înainte de a se crea obiecte din clasă.

15. Fie secvenŃa:

class complex {double re; double im; public: complex(double x=1.0,double y=6.80) {re=x; im=y;} complex( const complex &u) {real=u.re;imag=u.im;}};

PrecizaŃi în ce situaŃie se utilizează constructorul de copiere:

a) complex z1(5.2, 3.6); b) complex z2=z1; c) complex z3(0.1,1.0); d) complex z4(z1); e) complex z5(-0.1,28.7).

16. SecvenŃa

class A1 {public: A1() {cout << "\n A1";}}; class A2 {public: A2() {cout << "\n A2";}}; class AA1 : public A1, virtual public A2 { public:

Page 17: MODULUL_1 Grile Cristi

AA1() {cout << "\n AA1";}}; class AA2 : public A1, virtual A2 { public: AA2() {cout << "\n AA2";}}; class B : public AA1, virtual public AA2 { public: B() {cout << "\n B";}}; int main() {B ob1;}

afişează:

a) A1 A2 AA2 A1 AA1 B b) A2 A2 AA2 AA1 A1 B c) A1 A2 AA2 A1 B AA1 d) A2 A1 AA2 A1 AA1 B e) A2 A1 A2 AA1 A1 B

17. Care dintre afirmaŃiile următoare sunt adevărate? a) precedenŃa unui operator poate fi modificată prin redefinire; b) aritatea unui operator nu poate fi modificată prin redefinire; c) asociativitatea unui operator poate fi modificată prin redefinire; d) semnificaŃia modului în care acŃionează un operator asupra obiectelor de tipuri predefinite nu poate fi schimbată prin redefinire.

18. Care dintre afirmaŃiile următoare sunt adevărate? a) funcŃiile inline nu pot fi funcŃii virtuale; b) constructorii pot fi funcŃii virtuale; c) orice funcŃie membru statică este funcŃie virtuală; d) destructorul poate fi funcŃie virtuală.

19. Fie programul:

#include <iostream.h> class Cerc{float raza; public: Cerc(float r){raza=r;} float get_raza(){return raza;} void operator++(){raza++;}}; class Cilindru: public Cerc{float inaltime; public: Cilindru(float raza, float i):Cerc(raza){inaltime=i;} void operator++(){inaltime++;} float get_inaltime(){return inaltime;}}; int main(){ Cerc *pc; Cilindru c(2,6); pc=&c; ++ *pc;

Page 18: MODULUL_1 Grile Cristi

cout<<pc->get_raza()<<" "<<c.get_inaltime()<<endl;} Programul afişează: a) 2 5 b) 2 6 c) 3 6 d) 2 5

20. Care dintre afirmaŃiile următoare sunt false? a) obiectele unei clase derivate au acces la membrii privaŃi ai clasei sale de bază; b) relaŃia de moştenire este tranzitivă; c) funcŃiile friend ale clasei de bază se moştenesc de către clasa derivată; d) constructorul şi destructorul clasei de bază se moştenesc în clasa derivată.

Page 19: MODULUL_1 Grile Cristi

UNIVERSITATEA TITU MAIORESCU

FACULTATEA DE INFORMATIC;

MODELE ÎNTREB;RI EXAMEN LICEN軍;

Disciplina Programare in Java

Page 20: MODULUL_1 Grile Cristi

1. Fie următoarea clasă Java:

class C {

int a; float x; boolean b;

}

StabiliŃi care dintre următoarele instrucŃiuni este corectă: a) C ob = new C(1); b) C ob = new C(1,1.0); c) C ob = new C(); d) C ob = new C(1,1.0,true); 2. Fie următorul program Java: class C { public static int a=1; } public class test { public static void main(String[] args) { C ob=new C(); C.a++; ob.a++; System.out.println(C.a); } }

După executarea programului, va fi afişată valoarea: a) 3; b) 2; c) 1; d) nicio valoare, deoarece programul este incorect sintactic şi nu va putea fi executat. 3. Fie următorul program Java: class C { public static int a=1; } public class teste_grila { public static void main(String[] args) { C ob1=new C(); C ob2=new C(); ob1.a++; System.out.println(ob2.a); } }

Page 21: MODULUL_1 Grile Cristi

După executarea programului, va fi afişată valoarea: a) 0; b) 2; c) 1; d) nicio valoare, deoarece programul este incorect sintactic şi nu va putea fi executat. 4. Un program Test scris în limbajul Java poate fi compilat folosind comanda: a) javac Test b) java Test.java c) javac Test.class d) javac Test.java 5. Un program Test scris în limbajul Java şi compilat, poate fi rulat folosind comanda: a) javac Test.java b) java Test c) java Test.class d) java Test.java 6. În Java o clasă poate extinde: a) cel mult o interfaŃă b) oricâte clase c) cel mult o clasă d) oricâte interfeŃe 7. În Java o interfaŃă poate extinde: a) cel mult o interfată b) oricâte interfeŃe c) cel mult o clasă d) oricâte clase 8. În Java o clasă poate implementa: a) o clasă b) oricâte clase c) o interfaŃă d) oricâte interfeŃe 9. Fie următorul program Java: class A { public A() { System.out.println("A"); } } class B extends A { public B() { System.out.println("B"); }

Page 22: MODULUL_1 Grile Cristi

} class C extends B { public C() { System.out.println("C"); } } public class test { public static void main(String[] args) { C ob=new C(); } }

După executarea programului, se va afişa: a) A B C b) A c) C B A d) C 10. Fie următorul program Java: class A { public int x=1; public A() { x++; } } class B extends A { public B() { x++; } } class C extends B { public int x=1; public C() { x++; } } public class test { public static void main(String[] args) { B b=new B(); C c=new C(); System.out.println(b.x+" "+c.x); } }

După executarea programului, se va afişa: a) 3 4 b) 3 2 c) 2 2 d) 3 3

Page 23: MODULUL_1 Grile Cristi

11. Fie următorul program Java: class A { int x=0; public A(int n) { x=n; } } class B extends A { int x=1; public B(int n) { super(n); } } public class test { public static void main(String[] args) { A a=new A(5); B b=new B(7); System.out.println(a.x+" "+b.x); } }

După executarea programului, se va afişa: a) 0 5 b) 5 1 c) 5 7 d) 0 1 12. Fie următorul program Java: interface Student { public void afisare(); } class Student_1 implements Student { String nume; int grupa; public Student_1(String n, int g) { nume=n; grupa=g; } public void afisare() { System.out.print(nume+" "+grupa+" "); } } class Student_2 extends Student_1 implements Student { String curs; int nota; public Student_2(String ns, int g, String c, int n) { super(ns,g);

Page 24: MODULUL_1 Grile Cristi

curs=c; nota=n; } public void afisare() { .................................. System.out.println(curs+" "+nota); } } public class test { public static void main(String[] args) { Student_2 s=new Student_2("Popescu",314,"Java",10); s.afisare(); } }

După executarea programului, pentru a se afisa Popescu 314 Java 10, spaŃiile punctate din metoda afisare a clasei Student_2 trebuie înlocuite cu: a) afisare(); b) Student_1.afisare(); c) super.afisare(); d) nimic, deoarece se apelează automat metoda afisare a clasei Student_1.

13. Fie următorul program Java: interface Student { public void afisare(); } class Student_1 implements Student { String nume; int grupa; public Student_1(String n, int g) { nume=n; grupa=g; } public void afisare() { System.out.print(nume+" "+grupa+" "); } } class Student_2 extends Student_1 implements Student { String curs; int nota; public Student_2(String ns, int g, String c, int n) { ....... curs=c; nota=n; } public void afisare() { super.afisare();

Page 25: MODULUL_1 Grile Cristi

System.out.println(curs+" "+nota); } } public class test { public static void main(String[] args) { Student_2 s=new Student_2("Popescu",314,"Java",10); s.afisare(); } }

După executarea programului, pentru a se afişa Popescu 314 Java 10, spaŃiile punctate din constructorul Student_2 al clasei Student_2 trebuie: a) să fie înlocuite cu instrucŃiunea super(ns,g); b) să fie înlocuite cu instrucŃiunile nume=ns; grupa=g; c) nu trebuie înlocuite cu nimic, deoarece se apelează automat constructorul Student_1 al

clasei Student_1; d) nu pot fi înlocuite cu nimic, deoarece programul fiimd incorect pentru ca metoda

afisare a interfeŃei Student este implementată în două clase diferite, Student_1 şi Student_2.

14. Fie următoarele declaraŃii în Java: interface Patrat { public float aria(); public float perimetru(); } class Patrat_1 implements Patrat { float L; public Patrat_1(float x) { L = x; } public float aria() { return L*L; } } class Patrat_2 extends Patrat_1 implements Patrat { public Patrat_2(float L) { this.L = L; } public float perimetru() { return 4*L; } }

StabiliŃi care dintre următoarele propoziŃii sunt adevărate: a) definiŃia clasei Patrat_1 este incorectă deoarece nu implementeză metoda perimetru a

interfeŃei Patrat; b) constructorul clasei Pătrat_2 este incorect deoarece nu are acces la pointerul this; c) constructorul clasei Pătrat_2 este incorect deoarece nu are apelează constructorul

superclasei Patrat_1; d) definiŃia clasei Patrat_2 este incorectă deoarece nu implementeză metoda aria a

interfeŃei Patrat.

Page 26: MODULUL_1 Grile Cristi

15. Fie următorul program Java: interface Patrat { float L = 0; public float aria(); public float perimetru(); } class Patrat_1 implements Patrat { float L = 5; public Patrat_1(float x) { L = x; } public float aria() { return L*L; } public float perimetru() { return 4*L; } } public class teste_grila { public static void main(String[] args) { Patrat p = new Patrat_1(10); System.out.println(p.aria() + p.perimetru()); } }

StabiliŃi care dintre următoarele propoziŃii sunt adevărate: a) programul este incorect deoarece în funcŃia main se instanŃiază o interfaŃă, ci nu o clasă; b) programul este corect şi după rulare va afişa 140.0; c) programul este incorect deoarece în clasa Patrat_1 se redefineşte ca şi data membru

constanta L din interfaŃa Patrat; d) programul este corect şi după rulare va afişa 100.0 40.0. 16. Fie următorul program Java: interface Patrat { public float A(); public float P(); } interface Dreptunghi { public float A(); public float P(); } class Patrulater_1 implements Patrat,Dreptunghi { float L; public Patrulater_1(float x) { L=x; } public float A() { return L*L; } public float P() { return 4*L; }

Page 27: MODULUL_1 Grile Cristi

} class Patrulater_2 implements Patrat, Dreptunghi { float L,l; public Patrulater_2(float x, float y) { L=x; l=y; } public float A() { return L*l; } public float P() { return 2*(L+l); } } public class teste_grila { public static void main(String[] args) { Dreptunghi d = new Patrulater_1(10); Patrat p = new Patrulater_2(10,20); System.out.println(d.A()+" "+d.P()+" "+p.A()+" "+p.P()); } }

StabiliŃi care dintre următoarele propoziŃii sunt adevărate: a) programul este incorect deoarece apare un conflict de nume pentru ca în interfeŃele

Patrat şi Dreptunghi sunt definite metode cu aceiasi signatura, iar clasele Patrulater_1 şi Patrulater_2 implementează fiecare ambele interfeŃe;

b) programul este incorect deoarece în interfeŃele Patrat şi Dreptunghi sunt definite metodele A şi P cu aceiasi signatura, iar clasele Patrulater_1 şi Patrulater_2 implementează fiecare în mod diferit cele două metode;

c) programul este corect şi după rulare va afişa 100.0 40.0 200.0 60.0; d) programul este incorect deoarece în funcŃia main i se atribuie instanŃei d a interfeŃei

Dreptunghi un obiect din clasa Patrulater_1 , iar instanŃei p a interfeŃei Patrat un obiect de tip Patrulater_2 (care, de fapt, abstractizează noŃiunea de dreptunghi).

17. Considerăm următorul program Java: class C { int a,b; public C(int x, int y) { a=x; b=y; f(); g(); } void f() { while(a<b) { b=b-2*a; a=a+b/10; System.out.println(a+" "+b); } } void g() { System.out.println(a+" "+b); }

Page 28: MODULUL_1 Grile Cristi

} public class test { public static void main(String[] args) { C ob = new C(5,100); } }

După executarea programului, pe ecran se va afişa: a) 20 -22 b) 22 22 c) 35 10 d) 5 100

18. Considerăm următorul program Java: class C { int a,b; public C(int x, int y) { a=x; b=y; } void f() { if(a<b) { a++; b--; g(); } } void g()

{ if(b>=a) { a++; b--; f(); }

} void afisare() { System.out.println(a+" "+b); } } public class teste_grila { public static void main(String[] args) { C ob = new C(2,10); ob.f(); ob.g(); ob.afisare(); } }

După executarea programului, pe ecran se va afişa: a) 5 7 b) 6 6 c) 2 10 d) 7 5

Page 29: MODULUL_1 Grile Cristi

19. Considerăm următorul program Java: class C { static int x = 0; static int f() { return (++x)*(x--); } } public class teste_grila { public static void main(String[] args) { System.out.println(C.f()+" "+C.f()+" "+C.f()); } }

După executarea programului, pe ecran se va afişa: a) 1 1 1 b) 1 2 3 c) 1 2 6 d) 0 0 0 20. Considerăm următorul program Java: class C { static int x=0; static void f() { x = (++x)*(x--); System.out.print(x+" "); } } public class teste_grila { public static void main(String[] args) { C.f();C.f();C.f(); } }

După executarea programului, pe ecran se va afişa: a) 0 0 0 b) 1 4 25 c) 1 -1 1 d) 2 4 16 21. Un fir de execuŃie poate intra în starea "blocat" (blocked) astfel:

a) prin apelul metodei sleep(); b) automat de către sistemul de operare; c) prin apelul metodei block(); d) prin apelul metodei wait().

Page 30: MODULUL_1 Grile Cristi

22. Prin modalitatea sa de tratare a excepŃiilor, Java are următoarele avantaje faŃă de mecanismul tradiŃional de tratare a erorilor:

a) există o metodă care se ocupă de acest lucru; b) separarea codului pentru tratarea unei erori de codul în care ea poate sa apară; c) propagarea unei erori pâna la un analizor de excepŃii corespunzător; d) gruparea erorilor dupa tipul lor. 23. O subclasă a unei clase abstracte poate fi instanŃiată numai dacă: a) se foloseşte cuvantul cheie abstract; b) suprascrie fiecare metodă declarată abstractă în superclasa sa şi furnizeaza implementări

pentru toate acestea; c) se foloseşte moştenirea multiplă; d) subclasă abstractă nu poate fi instanŃiată. 24. Care este rolul declaraŃiilor import? a) Permite referirea claselor fără utilizarea de prefixe; b) Permite importul imaginilor folosite; c) Elimină necesitatea declarării variabilelor; d) Elimină apelurile directe ale funcŃiilor fără clase.

25. IndicaŃi pe care dintre sistemele de operare următoare pot fi rulate aplicaŃiile Java: a) Windows b) UNIX c) Mac OS X d) Linux

Page 31: MODULUL_1 Grile Cristi

UNIVERSITATEA TITU MAIORESCU

FACULTATEA DE INFORMATIC;

MODELE ÎNTREB;RI EXAMEN LICEN軍;

Disciplina Tehnici de programare

Page 32: MODULUL_1 Grile Cristi

1) Complexitatea minimă a unui algoritm care calculează numărul tuturor submulŃimilor

unei mulŃimi cu n elemente este:

a) O(n2)

b) O(2n)

c) O(n)

d) O(1)

2) Complexitatea minimă a unui algoritm care să afişeze toate submulŃimile unei mulŃimi

cu n elemente este:

a) O(n2)

b) O(2n)

c) O(n)

d) O(log2n)

3) Complexitatea minimă a unui algoritm care să calculeze numărul modurilor în care pot

fi aşezate n cărŃi pe un raft suficient de lung este:

a) O(n)

b) O(n2)

c) O(2n)

d) O(1)

4) Complexitatea minimă a unui algoritm care să afişeze toate modurile în care pot fi

aşezate n cărŃi pe un raft suficient de lung este:

a) O(n)

b) O(1)

c) O(2n)

d) O(n!)

5) Dacă ultima soluŃie afişată de către algoritmul backtracking pentru generarea tuturor

permutărilor mulŃimii {1,2,…,n} este 7,6,3,5,4,2,1, atunci următoarea soluŃie care va fi

afişată este:

a) 7,6,4,1,2,5,3

b) 7,1,2,3,4,5,6

c) 7,6,4,1,2,3,5

d) 7,6,5,3,4,2,1

6) Dacă ultima soluŃie afişată de către algoritmul backtracking pentru generarea tuturor

permutărilor mulŃimii {1,2,…,7} este 6,5,7,4,3,2,1, atunci următoarea soluŃie care va fi

afişată este:

a) 7,1,2,3,4,5,6

b) 6,7,1,2,3,4,5

c) 7,6,1,2,3,4,5

d) 6,7,5,4,3,2,1

Page 33: MODULUL_1 Grile Cristi

7) Considerăm un rucsac cu ajutorul căruia putem transporta 66 kg şi 7 obiecte având

greutăŃile 23, 10, 10, 25, 38, 7 şi 5 kg, iar câştigurile obŃinute prin transportul integral al

fiecărui obiect la destinaŃie sunt 69, 10, 30, 100, 19, 14 şi 50 RON. Ştiind că din orice

obiect putem încărca şi doar o parte a sa, câştigul maxim pe care îl putem obŃine este:

a) 250.5 RON

b) 217 RON

c) 265 RON

d) 255 RON

8) Considerăm un rucsac cu ajutorul căruia putem transporta 67 kg şi 7 obiecte având

greutăŃile 10, 5, 20, 10, 20, 25 şi 21 kg, iar câştigurile obŃinute prin transportul integral

al fiecărui obiect la destinaŃie sunt 30, 40, 40, 10, 4, 50 şi 30 RON. Ştiind că din oricare

obiect putem încărca şi doar o parte a sa, câştigul maxim pe care îl putem obŃine este:

a) 114 RON

b) 170 RON

c) 280 RON

d) 163.7 RON

9) Considerăm un rucsac cu ajutorul căruia putem transporta 53 kg şi 7 obiecte având

greutăŃile 10, 5, 18, 10, 8, 20 şi 40 kg, iar câştigurile obŃinute prin transportul integral al

fiecărui obiect la destinaŃie sunt 30, 40, 36, 10, 16, 10 şi 30 RON. Ştiind că din oricare

obiect putem încărca şi doar o parte a sa, câştigul maxim pe care îl putem obŃine este:

a) 133 RON

b) 121 RON

c) 133.5 RON

d) 136.5 RON

10) Considerăm următorul algoritm, în care a este un tablou format din n numere întregi:

i � 1 j � n ┌cât timp (i≤n) şi (ai<0) execută │ i � i+1 └■ ┌cât timp (j≥1) şi (aj≥0) execută │ j � j-1 └■ ┌dacă(i>=j) │ atunci │ scrie 1 │ altfel │ scrie 0 └■

Complexitatea algoritmului dat este:

a) O(n2)

b) O(log2n)

c) O(n3)

d) O(n)

Page 34: MODULUL_1 Grile Cristi

11) Un algoritm optim care să afişeze toate subşirurile crescătoare de lungime maximă ale

unui şir format din n numere foloseşte:

a) doar metoda programării dinamice;

b) doar metoda backtracking (se generează toate subşirurile şirului respectiv, iar pentru

fiecare subşir se verifică dacă este crescător şi, respectiv, maximal);

c) mai întâi metoda programării dinamice pentru a determina lungimea maximă lmax a

unui subşir crescător al şirului dat şi apoi metoda backtracking pentru a genera toate

subşirurile crescătoare de lungime lmax ale şirului considerat;

d) doar metoda Greedy.

12) StabiliŃi care dintre următoarele propoziŃii referitoare la tehnica de programare Greedy

este adevărată:

a) conduce întotdeauna la o soluŃie optimă;

b) construieşte o soluŃie element cu element şi în cazul în care valoarea elementului

curent nu verifică anumite condiŃii se renunŃă la acesta şi se revine la elementul

anterior;

c) găseşte întotdeauna o singură soluŃie a unei probleme;

d) construieşte o soluŃie element cu element, fără a reveni asupra alegerii făcute pentru

elementul curent.

13) Considerăm că într-un an sunt înscrişi n studenŃi. Pentru a afişa toate grupele ce pot fi

formate din câte p studenŃi (p≤n) din anul respectiv putem folosi algoritmul de:

a) generarea a aranjamentelor formate din p elemente ale unei mulŃimi cu n elemente;

b) generarea a permutărilor unei mulŃimi cu p elemente;

c) generarea a combinărilor formate din p elemente ale unei mulŃimi cu n elemente;

d) generarea a aranjamentelor formate din n elemente ale unei mulŃimi cu p elemente.

14) StabiliŃi care dintre următoarele metode de sortare se bazează pe tehnica de

programare Divide et Impera:

a) sortarea rapidă;

b) sortarea prin interschimbare ;

c) sortarea prin interclasare;

d) sortarea prin numărare.

15) Considerând că a este un tablou format din n numere întregi nenule şi am definit

anterior un subprogram cmmdc(x,y) care returnează cel mai mare divizor comun a două

numere întregi nenule x şi y, construim următorul subprogram:

┌subprogram F(p,u) │ ┌dacă p=u │ │ atunci │ │ F � a[p] │ │ altfel │ │ k � [(p + u)]/2 │ │ F � cmmdc(F(p,k),F(k+1,u)) │ └■ └■

Page 35: MODULUL_1 Grile Cristi

Ştiind că apelul subprogramului va fi F(1, n), precizaŃi tehnica de programare utilizată în

cadrul funcŃiei F:

a) Greedy;

b) backtracking;

c) programare dinamică;

d) Divide et Impera.

16) Folosind tehnica de programare backtracking pentru a genera toate permutările mulŃimii

{1,2,...,n}, o soluŃie se memorează sub forma unui tablou unidimensional x1, x2, ..., xn. Dacă

au fost deja generate valori pentru componentele x1, x2, ..., xk-1, iar pentru componenta xk (1

<k<n) au fost deja testate toate valorile posibile şi nu a fost gasită niciuna convenabilă,

atunci:

a) se încearcă alegerea unei noi valori pentru xk-1;

b) se încearcă alegerea unei noi valori pentru x1, oricare ar fi valoarea lui k;

c) se încheie algoritmul;

d) se încearcă alegerea unei valori pentru componenta xk+1.

17) Considerăm ecuaŃia a1x1+a2x2+…+anxn=y, în care y, a1, a2,…,an sunt numere naturale.

Pentru a determina toate soluŃiile ecuaŃiei date de forma (x1, x2,...,xn), cu x1, x2,...,xn numere

naturale, se poate folosi direct algoritmul backtracking pentru:

a) generarea permutărilor;

b) descompunerea unui număr natural ca sumă de numere naturale nenule;

c) plata unei sume folosind n tipuri de bancnote;

d) generarea combinărilor.

18) StabiliŃi care dintre următorii algoritmi din teoria grafurilor se bazează pe tehnica de

programare Greedy:

a) algoritmul lui Kruskal;

b) algoritmul pentru determinarea componentelor conexe ale unui graf neorientat;

c) algoritmul lui Prim;

d) algoritmul Roy-Floyd.

19) StabiliŃi care dintre următorii algoritmi din teoria grafurilor se bazează pe metoda

programării dinamice:

a) algoritmul lui Kruskal;

b) algoritmul de parcurgere în adâncime a unui graf neorientat;

c) algoritmul lui Prim;

d) algoritmul Roy-Floyd.

20) La un ghişeu stau la coadă n persoane, numerotate cu 1,2,...,n. Cunoscând timpii de

servire t1, t2,...,tn ai celor n persoane şi ştiind că pentru a servi o persoană k trebuie servite

persoanele 1,2,...,k-1 aflate înaintea sa, trebuie să determinăm un mod de rearanjare al

persoanelor la coadă, astfel încât timpul de aşteptare al fiecărei persoane să fie minim.

Page 36: MODULUL_1 Grile Cristi

StabiliŃi care dintre următoarele variante de rezolvare a acestei probleme este corectă şi are o

complexitate minimă:

a) se genereză toate modurile în care pot fi rearanjate cele n persoane la coadă şi

pentru fiecare mod de rearanjare se calculează într-un tablou timpii de servire, iar

soluŃia este tabloul minim în sens lexicografic;

b) se rearanjează persoanele în ordinea descrescătoare a timpilor de servire;

c) se genereză toate modurile în care pot fi rearanjate cele n persoane la coadă şi

pentru fiecare mod de rearanjare se calculează timpul total T de servire al celor n

persoane, iar soluŃia este tabloul pentru care valoarea lui T este minimă;

d) se rearanjează persoanele în ordinea screscătoare a timpilor de servire.