Sunteți pe pagina 1din 9

1.

Construii arborele sintactic al urmtoarei expresii: (a+2*b/c)*(2*d-3)+3*e+5


Pas1!
2. Construii arborele sintactic al urmtoarei expresii: a=(b+=2*a)-c++*(d-=c+1)
Pas 2!
3. Construii arborii sintactici ai tuturor expresiilor din fiierul EvExpresii.java.
Pas 3!
4. Explicai rezultatele obinute la executarea programului din fiierul ExprCond.java.
Pas 4!
5. Ce este o instruciune de atribuire i care este efectul ei?
Instruciunile de atribuire sunt instruciuni prin care unei variabile i se atribuie o nou
valoare, modificndu-se astfel valoarea avut anterior. Instruciunea de atribuire este o
expresie de atribuire sau de atribuire compus urmat de caracterul ';' (punct i virgul) deci
are urmtoarea form sintactic: expresie_de_atribuire;
6. Care este deosebirea dintre valorile expresiilor de preincrementare i postincrementare? Dar
ntre efectele instruciunilor de preincrementare i postincrementare?
Operator

Expresie

Operatie

Valoarea expresiei

Efect lateral

++

++a

preincrementare

a+1

valoarea variabilei a creste cu 1

++

a++

postincrementare

valoarea variabilei a creste cu 1

7. Ce este o instructiune de invocare de metod i care este efectul ei?


Instruciunile de invocare de metod sunt instruciuni prin care se cere executarea unei
metode, transmindu-i-se acesteia valorile parametrilor. Instruciunea const din numele
metodei, urmat de o pereche de paranteze care conine valorile parametrilor i se termin
prin caracterul ';' (punct i virgul). Aciunea cerut de instruciune const n executarea
metodei respective. Daca metoda este o funcie, valoarea funciei se ignor, meninndu-se
numai efectele laterale ale metodei respective. De exemplu:
System.out.println("ir de caractere");

este o instruciune prin care se invoc metoda println a cmpului out din clasa System,
transmindu-i-se parametrul "ir de caractere". Aciunea care se realizeaz astfel const din
afiarea pe ecran a irului primit ca parametru
8. Care este schema logic a structurii de control secveniale i cum trebuie interpretat?

n pseudocod, aceeai secven de program se scrie astfel:

<instruciunea_1>
<instruciunea_2>
....
<instruciunea_n>
Exist, deci, un numr oarecare (n) de instruciuni, care se execut una dupa alta, n ordinea
n care sunt scrise n program.
9. Care este schema logic a structurii de control alternative i cum trebuie interpretat?
Structura alternativ (condiional, de decizie).

n aceast schem logic, Condiie este o expresie boolean. Executarea acestui fragment de program
decurge astfel: se verific mai nti dac este satisfcut condiia. Dac ea este satisfcut, deci
expresiaCondiie are valoarea true, se execut Instruciunea 1, iar n caz contrar se
execut Instruciunea 2.
In pseudocod, acest fragment de program se scrie astfel:
Dac <condiie>
atunci <instruciunea_1>
altfel <instruciunea_2>
Sfarit_dac
n unele convenii de pseudocod, n loc de Instruciunea_1 i Instructiunea_2 pot fi puse secvene de
instruciuni.
10. Care este schema logic a ciclului cu test iniial i cum trebuie interpretat?

Executarea acestei structuri are loc astfel:


1. se evalueaz expresia boolean care reprezint Condiia;
2. dac valoarea acestei expresii este true, deci condiia este satisfacut, se merge pe
ramura DA i se executa instruciunea din corpul ciclului, dup care se trece la punctul 1;
3. altfel (deci dac condiia nu este satisfacut) se merge pe ramura NU i se iese din ciclu.
Se observ, deci, c se va executa instruciunea n mod repetat, ct timp este satisfcut
condiia. n pseudocod, aceast structur de control se programeaz astfel:
ct_timp <condiie> execut
<instruciune>
sfrit_ciclu

11. Care este schema logic a ciclului cu test final i cum trebuie interpretat?

In ciclul cu test
final evaluarea condiiei se face dup ce instruciunea a fost deja executat
n pseudocod, ciclul cu test final reprezentat prin schema logic din figura 4 se scrie sub
forma general:
execut
<instruciune>
ct_timp <condiie>
12. Unde sunt plasate variabilele locale n memoria mainii virtuale Java?
n memoria mainii virtuale Java, variabilele locale sunt plasate pe stiva procesului curent. La
executarea unei instruciuni-declaraie, variabilele coninute n aceasta sunt puse pe stiv, n
ordinea n care ele apar n declaraia respectiv.
13. Cnd sunt eliminate din memorie variabilele locale?
Cnd se ajunge la sfritul blocului n care au fost declarate, variabilele sunt scoase de pe
stiv
14. Cum se stabilete crui if i aparine clauza else n cazul instructiunilor if imbricate?
Pentru a nu se produce confuzii, cel mai bine este s se grupeze instruciunile n blocuri.

Exemplu
Fie instruciunea
if(a<b)
if(b<c) System.out.println("A");
else System.out.println("B");
else System.out.println("C");

Interpretarea corect este, n acest caz, c primul else aparine celui de al


doilea if, iar ultimul else aparine primului if. Aceast structur se poate
ntri scriind instruciunea astfel:

if(a<b) {
if(b<c) System.out.println("A");
else System.out.println("B");
} else System.out.println("C");

ntruct s-au folosit acoladele pentru a pune instruciunea if..else interioar


sub form de bloc, a devenit clar pentru oricine crui if i apartine fiecare
din cei doi else.

15. Care este forma sintactic a instruciunii switch i cum este ea interpretat?
n limbajul Java, structura de comutare se realizeaz prin instruciunea switch, care are urmtoarea
form general:
switch (expresie) {
case valoare_1: secven_1
[break;]
case valoare_2: secven_2
[break;]
..........................
case valoare_N: secven_N
[default: secven ]
}

n care:
- switch, case si default sunt cuvinte cheie ale limbajului Java;
- expresie este o expresie de tip byte, short, int sau char;
- valoare este fie un literal de tip byte, short, int sau char, fie o expresie constant de
tip int, adic o expresie care conine numai literali sau variabile finale din tipurile menionate;
- secvena este o secven de instruciuni simple sau structurate;
- parantezele drepte roii []nu apar n program, ci indic faptul c coninutul lor este opional
(poate sa lipseasc).
16. Ce rol are instruciunea break n cadrul unui bloc switch?
Instructiunea break se poate folosi n corpul unei instruciuni switch, while,
do..while sau for i are ca efect ieirea forat (abrupt) din structura de control n care
se gsete instruciunea respectiv.
* Testarea instructiunii switch */
class TestSwitch {
public static void main(String args[]) {
int a=7;
char c='@';
double u=15.3782;
System.out.println("Switch fara break si cu cazuri vide");
switch(a) {

case 143: u++;


System.out.println("A "+u);
case 2:

u+=a;
System.out.println("B "+u);

case 7:

u--;
System.out.println("C "+u);

case '@':
case 148:
case 15:
case -87: u-=a;
System.out.println("D "+u);
case -12: u*=a;
System.out.println("E "+u);
case 'F': u%=a;
System.out.println("F "+u);
default:

u=15.3782;
System.out.println("G "+u);

}
System.out.println("Switch cu break dupa fiecare caz
nevid");
switch(c) {
case 143: u++;
System.out.println("A "+u);
break;
case 2:

u+=a;
System.out.println("B "+u);
break;

case 7:

u--;
System.out.println("C "+u);
break;

case '@':
case 148:
case 15:
case 87:

u-=a;
System.out.println("D "+u);
break;

case 12:

u*=a;
System.out.println("E "+u);
break;

case 'F': u%=a;


System.out.println("F "+u);
break;
default:

u=15.3782;
System.out.println("G "+u);

}
}

afiseaza: Switch fara break si cu cazuri vide


C 14.3782
D 7.3782
E 51.6474
F 2.6473999999999975
G 15.3782
Switch cu break dupa fiecare caz nevid
D 8.3782

Se observ cu uurin c, n primul caz (fr instruciuni break), s-a nceput executarea secvenei de
instruciuni n punctul "case 7" i s-a continuat pn la sfritul blocului instruciunii switch (inclusiv
cazul default). Cnd s-a folosit instruciunea break, ieirea s-a fcut la ntalnirea acestei instruciuni.

17. Ce este o etichet i ce form sintactic are o instruciune etichetat?


n principiu, orice instruciune n limbajul Java poate purta o etichet. Instruciunile etichetate
au forma
etichet : instruciune
unde
-etichet este un identificator;
-instruciune este o instruciune simpl sau structurat.
Exemplu
alpha: x=2*a+b;
Se permite s se foloseasc drept etichete chiar i identificatori care mai sunt folosii n
acelasi program ca nume de variabile, clase, metode etc., far a se crea prin aceasta confuzii,
deoarece compilatorul face distincie ntre etichete i nume n funcie de contextul n care
acestea sunt utilizate.
18. Poate o etichet s aib acelai identificator cu cel al unui nume de variabil sau de metod?

19. Cum acioneaz o instruciune break fr etichet n corpul unui ciclu?


ciclu1: while(w>0.05){
w/=a;
for(int k=0; k<n; k++) {
s+=w;
if(s>b) break ciclu1;
y+=w*s
}
}

Instruciunea break se gsete, n acest exemplu, n corpul ciclului interior. Dac nu ar fi coninut
eticheta ciclu1,aceast instruciune ar fi provocat numai ieirea dim ciclul interior (for), dar s-

ar fi reluat execuia ciclului exterior (while), implicand, desigur, i reluarea ciclului interior
continut de acesta.

20. Cum acioneaz o instruciune continue fr etichet n corpul unui ciclu?


Dac instruciunea continue nu are etichet, efectul este c se trece peste restul
instruciunilor din corpul ciclului, ncepnd din punctul n care se gsete instruciunea
continue pn la sfritul acestuia, dar se continu executarea ciclului, adic se reia
executarea corpului acestuia ct timp este satisfacut condiia de continuare.
21. n ce situaie se folosete o instruciune break cu etichet?
Necesitatea utilizrii unei etichete apare atunci cnd exist dou astfel de structuri imbricate una n
alta, iar noi dorim ca prin break s se iasa forat din cea exterioar, ca n exemplul urmator:
ciclu1: while(w>0.05){
w/=a;
for(int k=0; k<n; k++) {
s+=w;
if(s>b) break ciclu1;
y+=w*s
}
}

Instruciunea break se gsete, n acest exemplu, n corpul ciclului interior. Dac nu ar fi coninut
eticheta ciclu1,aceast instruciune ar fi provocat numai ieirea dim ciclul interior (for), dar s-ar fi
reluat execuia ciclului exterior (while), implicand, desigur, i reluarea ciclului interior continut de
acesta. Dac ns este prezenta eticheta din break, se va iei forat din instruciunea de control care
poart aceast etichet, n cazul de fa din ciclul exterior.
22. n ce situaie se folosete o instruciune continue cu etichet?

23. La ce servete clauza catch i unde se plaseaz?

Tratarea prin program a excepiilor se face, n limbajul Java, folosind instruciunea try
urmat de una sau mai multe clauze catch i, opional, de o clauz finally sub forma
urmatoare:
try {
secventa
}
catch (ClasaExceptie1variabila1) {
secventa1
}
catch (ClasaExceptie2 variabila2) {
secventa2

}
...............
catch (ClasaExceptieN variabilaN) {
secventaN
}
[finally {
secventa_finalizatoare
}]

n corpul instruciunii try se pune secvena de instruciuni n care este posibil ca, la executarea
programului, s apar excepii. Dac excepia a aprut ntr-un punct situat n corpul unei
instruciuni try, aceasta instruciune se termin n mod abrupt, astfel c restul instruciunilor nu se
mai execut, trecndu-se direct la acolada de nchidere a blocului. Se parcurg apoi, una dup alta,
clauzele catch, pn se ajunge la cea care are ntre paranteze numele clasei excepiei care s-a produs
i se execut secvena din corpul acestei clauze.

24. La ce servete clauza finally i unde se plaseaz?


Clauza finally este opional i conine o secven de instructiuni care se vor executa n final,
adic dup ce a fost tratat excepia prin una din clauzele catch, sau dac nu a fost tratat prin nici
una dintre acestea.

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