Documente Academic
Documente Profesional
Documente Cultură
Laborator IV
Adrian Liţă / Ovidiu Grigore / Anamaria Rădoi
2015
1 Scopul laboratorului
Laboratorul III al materiei Programarea Calculatoarelor are ca scop introduce-
rea operatorilor şi exemplificarea acestora.
În acest laborator se parcurg următoarele puncte:
• operatorul de atribuire
• operatori aritmetici
• operatori de egalitate
• operatori de incrementare/decrementare
• operatori de atribuire compusă
• operatorul sizeof()
• operatorul condiţional
• operatorul de transformare
2 Desfăşurarea lucrării
O expresie este compusă dintr-un operand sau mai mulţi, legaţi între ei prin
operatori. Operanzii asupra cărora se execută prelucrarea pot fi:
• constante
• variabile
1
• expresii sau apeluri de funcţii
Operatorii determină modul de prelucrare al datelor. În raport cu numărul de
operanzi asupra cărora acţionează, operatorii se pot clasifica în:
• operatori unari, atunci când se aplică unui singur operand
• operatorul de adunare: + este un operator binar care adună cei doi ope-
ratori asupra cărora acţionează.
1 r e z u l t a t = operand1 + operand2
2
• operatorul de împărţire modulo: % este un operator binar care extrage
restul împărţirii operandului 1 la operandul 2. Acest operator are o par-
ticularitate, şi anume că ambii operanzi sunt numere întregi.
1 r e z u l t a t = operand1 % operand2
• operatorul ŞI: & este un operator binar care execută operaţia logică ŞI
între cei doi operatori asupra cărora acţionează.
1 r e z u l t a t = operand1 & operand2
• operatorul SAU: | este un operator binar care execută operaţia logică SAU
între cei doi operatori asupra cărora acţionează.
1 r e z u l t a t = operand1 | operand2
3
• operatorul SAU EXCLUSIV: ˆ este un operator binar care execută ope-
raţia logică SAU EXCLUSIV între cei doi operatori asupra cărora acţio-
nează.
1 r e z u l t a t = operand1 ^ operand2
1 r e z u l t a t = ! operand
• operatorul ŞI: && este un operator binar care execută operaţia logică ŞI
între cei doi operatori asupra cărora acţionează.
1 r e z u l t a t = operand1 && operand2
4
1 r e z u l t a t = operand1 | | operand2
5
2.6 Operatori de incrementare/decrementare
Operatorii de incrementare/decrementare sunt scurtături ale lui C/C++ pentru
a realiza incrementarea sau decrementarea unei variabile întregi cu o unitate (1).
Aceştia arată în felul următor:
1 int a = 3 , b = 16;
2
3 a++; // a d e v i n e 4
4 b−−; //b d e v i n e 15
5
6 // f u n c t i o n e a z a s i ca p r e f i x :
7 ++a ; // a d e v i n e 5
8 −−b ; //b d e v i n e 14
• +=
6
• -=
• *=
• /=
• %=
• »=
• «=
• &=
• ˆ=
• |=
Operatorii de atribuire compusă sunt operatori unari, precum operatorul de
atribuire, şi execută operaţia aritmetică sau de logică pe biţi între rezultat şi
operand.
Exemplu:
1 int a = 5 , b = 3;
2
3 a += 2 ; // a c e l a s i l u c r u cu a = a + 2
4 a ∗= 5 ; // a c e l a s i l u c r u ca a = a ∗ 5 ;
5
6 b ∗= a + 1 ; // a c e l a s i l u c r u ca b = b ∗ ( a + 1 )
Notă. În general tipul de date int ocupă 4 bytes (sau 32 de biţi). Acest lucru
poate să fie diferit în funcţie de calculatorul sau sistemul de calcul folosit (smar-
tphone, tabletă, etc). Tipul de date real double oferă precizie dublă de calcul în
comparaţie cu tipul de date real float şi din acest motiv double ocupă în general
dublu faţă de float.
7
2.9 Operatorul condiţional
Operatorul condiţional este singurul operator ternar în C++, adică acţionează
asupra a 3 operanzi în loc de 2. Sintaxa operatorului condiţional este condiţie
? rezultat1 : rezultat2, şi se traduce în felul următor: dacă condiţia este
adevarată, atunci va returna rezultatul 1, iar dacă este falsă atunci va returna
rezultatul 2.
Cel mai uşor mod de înţeles acest operator este prin exemple:
1 int a = 5 , b = 3 , r = 0;
2
3 // u r m a t o r u l cod a f i s e a z a "3 nu e s t e mai mic d e c a t 2"
4 ( 3 < 2 ) ? ( c o u t << " 3 e s t e mai mic d e c a t 2 " << e n d l ) : ( c o u t << " 3
nu e s t e mai mic d e c a t 2 " << e n d l ) ;
5
6 // g a s e s t e maximul d i n t r e a s i b s i i l memoreaza i n r
7 r = (a > b) ? a : b ;
8 c o u t << r << e n d l ; // 5
9
10 // u r m a t o r u l cod e x e c u t a mai multe l u c r u r i , s e p a r a t e p r i n v i r g u l a
11 ( a > 3 ) ? ( c o u t << " a e s t e mai mare ca 3 " << e n d l , r = 1 ) : ( c o u t
<< " a e s t e mai mic d e c a t 3 " << e n d l , r = 0 ) ;
12 c o u t << r << e n d l ; // r = 1
8
22 }
3 Probleme
1. Demonstraţi că operatorul « întotdeauna înmulţeşte un număr cu 2.
2. Dacă a, b şi r sunt trei variabile de tip int, cu valorile 5, 12 respectiv 0,
ce valoare au cele trei variable după rularea următorului cod: r = (a++)
+ (b++) - (a–) + (–b)*(a++); ?
3. Realizaţi un program C++ care pe baza unei ecuaţii de gradul 1 (ax + b
= 0) citite de la tastatură (citirea coeficienţilor a şi b) determină în mod
corect, dacă se poate, pe x.
4. Realizaţi un program C++ care pe baza unei ecuaţii de gradul 2 (axx +
bx + c = 0) citite de la tastatură (citirea coeficienţilor a, b şi c) determină
în mod corect, dacă se poate, toate valorile lui x.
9
5. Citiţi vârsta unui om de la tastatură şi stabiliţi dacă omul respectiv are
voie sau nu să deţină carnet de conducere.
6. Citiţi un număr de 16 biţi de la tastatură. Afişaţi, pe rând, octetul (byte-
ul) cel mai semnificativ şi apoi pe cel mai puţin semnificativ.
10