Sunteți pe pagina 1din 6

Programare procedural

Laboratorul 2 - Operatori
1. Operatori aritmetici:
Tip Operator Observaii
Unari
+, -
Determin semnul operatorului
++, --
Operatori de incrementare respectiv decrementare.
Aplicarea operatorului ++ (--) naintea variabilei are ca
rezultat nti incrementarea variabilei, apoi utilizarea
acesteia. Exemplu pentru x=3 n urma instruciunii y=+
+x; se obine y=4, x=4.
Aplicarea operatorului !! "##$ dup variabil are ca rezultat
nti utilizarea variabiulei %i apoi incrementarea. Exemplu
pentru x=3 n urma instruciunii y=++x; se obine y=3,
x=4.
&inari
+, -, *, /
'entru tipuri de date ntre(i, / reprezint mprirea ntrea(
"ec)ivalentul lui D*+ din 'ascal$
%
,e utilizeaz pentru tipuri ntre(i %i reprezint restul
mpririi unui numr la altul "ec)ivalentul lui -OD din
'ascal$
+=, -=,
*=, /=, %=
Expresia x+=y este ec)ivalent cu x=x+y.
.. Operatori relaionali: <, >, <= "mai mic sau e(al$, >= "mai mare sau e(al$, ==
"e(alitate$, != "di/erit$.
3. Operatori logici:
Tip Operator Observaii
Unari
!
0e(are.
Dac x este nenul, !x=0 .
Dac x este 0, !x=1;
&inari
&&
Operatorul 1%i2 lo(ic.
x&&y este 3 dac %i numai dac %i x %i y sunt nenuli.
x&&y este 4 dac sau x sau y este nul
||
Operatorul 1sau2 lo(ic.
x||y este 3 dac %i numai dac cel puin unul dintre
operanzi este nenul
x||y este 4 dac %i numai dac ambii operanzi sunt 4
4. Operatori logici pe bii:
,unt aplicabili numai pentru tipuri ntre(i "int, unsi(ned int, c)ar, unsi(ned c)ar, etc.$.
Operatorii lo(ici pe bii opereaz asupra reprezentrii binare a numerelor. 'entru
exempli/icare considerm urmtoarele variabile date pe 5 bii a, b "cu valori de la 4 la .66$.
a=(0,0,0,0,0,1,1,1) %i are valoare 7
b=(0,0,0,0,1,0,1,1) %i are valoarea 33.
Tip Operator Observaii
Unar
~
0e(are pe bii
~a=(1,1,1,1,1,0,0,0)
~b=(1,1,1,1,0,1,0,0)
&inari
&
Operatorul 1%i2 lo(ic pe bii.
a&b=(0,0,0,0,0,0,1,1)
|
Operatorul 1sau2 lo(ic pe bii.
a|b=(0,0,0,0,1,1,1,1)
^
Operatorul sau exclusiv. 8ezultatul este 3 dac %i numai dac
unul dintre operanzi este 3 %i cellalt 4.
a^b=(0,0,0,0,1,1,0,0)
<<
Deplasare "s)i/t#are$ la stn(a pe bii.
a<<1=(0,0,0,0,1,1,1,0)=14
b<<2=(0,0,1,0,1,1,0,0)=44
>>
Deplasare "s)i/t#are$ la derapta pe bii.
a<<1=(0,0,0,0,0,0,1,1)=3
b<<2=(0,0,0,0,0,0,1,0)=2
Observaii
Operaiile la nivel de bit nu modi/ic valoarea operanzilor. 'rin instruciunea x<<39
nu se modi/ic valoarea lui x. Dac dorim acest lucru trebuie utilizat instruciunea
x=x<<3;
Dac o variabil este de tip ntre( cu semn "int, c)ar$ atunci primul bit din stn(a
reprezint semnul variabilei %i nu se modi/ic prin deplasare "<< sau >>$.
Exemple
"3$ ,uma a dou numere ntre(i /olosind : %i ; pe bii
#inc!"#<$%"i&'(>
)&i" *ain()
+
in% a, b, %,an$-&,%, $!*a, .a%a=1;
$can/(0%" %"1, &a,&b);
2(i#(.a%a)
+
$!*a=a^b;
%,an$-&,%=a&b;
i/(%,an$-&,%==0) .a%a=0;
#$#
+
a=%,an$-&,%<<1;
b=$!*a;
3
3
-,in%/(0$!*a=%"1,$!*a);
3
".$ *ntersc)imbarea a dou variabile /r utilizarea unei variabile auxiliare
#inc!"#<$%"i&'(>
)&i" *ain()
+
a=a^b;
b=a^b;
a=a^b;
3
6. Operatorul de decizie ternar alctuit din operatorii < %i
#x-,#$i#41 5 #x-,#$i# 42 6 #x-,#$i#43
Dac #x-,#$i#41 are valoare nenul atunci valoarea expresiei condiionale ia valoarea
#x-,#$i#42, alt/el ia valoarea #x-,#$i#43.
Exemplu: maximul a dou numere
#inc!"#<$%"i&'(>
)&i" *ain()
+
in% a,b;
$can/(0%" %"1, &a, &b);
-,in%/(0*axi*! #$%# %"1, a>b5a6b);
3
=. Operatorul sizeof: are ca rezultat numrul de octei utilizai pentru memorarea
rezultatului evalurii unei expresii
Exemple $i7#&/(in%) = 4
$i7#&/(c(a,) = 1
$i7#&/(1'8) = 9 "dimensiunea n unei var de tip double$
$i7#&/(:a:) = 1
Prioritatea precedena! operatorilor:
8ezultatul operatorilor dintr#o expresie aritmetic > lo(ic se evalueaz ntr#o anumit ordine
dat de precedena acestor operatori. Operatorii cu cea mai mare prioritate sunt evaluai mai
nti. ?n tabelul urmtor este prezentat precedena operatorilor numerotat de la 3 "precedena
maxim$ la 3@ "precedena minim$.
3
() ;< -> '
'aranteze, operatorii pentru membrii de
structuri>obiecte
.
! ~ - (unar) + (unar) * & $i7#&/
type cast ++x --x
"maAoritatea$ operatorilor unari,
B
* / %
?nmulirea, mprirea, modulo
@
+ -
Adunarea %i scderea
6
<< >>
Deplasare pe bii la stn(a %i dreapta
=
< <= > >=
Operatorii de comparaie mai mic, mare
7
== !=
Comparaie e(al, di/erit
5
&
1DiE pe bii
F
^
GO8 "1sauE exclusiv$ pe bii
34
|
1sauE pe bii
33
&&
1%iE lo(ic
3.
||
1sauE lo(ic
3B
56
Operatorul condiional ternar
3@
= += -= *= /= %= &= |=
^= <<= >>=
Operatorii de atribuire
"#eciii $i probleme
3. Care dintre urmtoarele expresii sunt adevrate dac %i numai dac numrul ntre( x
este impar ne(ativ<
a) (x%2==1) && (x<0)
b) (x%2!=0) || (x<0)
c) !((x%2==0) || (x>=0))
") !((x%2==0) && (x>=0))
#) x%2=1 && x<0
.. ,e consider x, H %i z variabile ntre(i. Care dintre urmtoarele expresii are valoarea
di/erit de 4 dac %i numai dac y=*ax(x,y,7)<
a$ x>75y>=x51606y>=75160
b$ !(y<x || y<7)
c$ !(y<x && y<7)
d$ x>7 && y>x || 7>x && y>7
B. 'entru a atribui variabilei reale x rezultatul expresiei
.6 . 4
.
.
c ab
, unde a, b %i c sunt
variabile reale, se utilizeaz instruciunea
a) x = (2*a*b)-(c*c)/0'28;
b) x = 2*a*b = c*c/0'28;
c) x = (2*a*b) = (c*c)*4;
") x = (2*a*b = c*c)*4;
@. , se scrie un pro(ram care s calculeze minimul dinre#un vector /olosind operatorul
condiional ternar n locul instruciunii i/.
6. , se scrie un pro(ram care cite%te n numere %i calculeaz suma celor pozitive %i
produsul celor ne(ative. Utilizai operatorul condiional ternar.
=. Iie x un numr natural. ,criei un pro(ram care s utilizeze operatori lo(ici pe bii
as/el nct
a$ , nmuleasc variabila x cu .
n
"4 n 36$
b$ , mpart variabila x cu .
n
"4 n 36$
c$ , aib valoarea 3 dac %i numai dac x este impar
d$ , aib valoarea 4 dac %i numai dac bitul n "4 n 36$ din x este 4.
e$ , seteze bitul n "4 n 36$ din x la 3
7. ,criei un pro(ram care inverseaz biii unei variabile de tip int %i returneaz valoarea
obinut.
5. JA/i%ai /orma binar a unui numar x "4 x .66$ utiliznd operaii pe bii.
"Considerm reprezentarea pe 5 bii$. Keneralizare pentru orice ntre(.
F. J,criei un pro(ram care permut cei n bii ai unu numr n "4 x .66$ cu o poziie
spre dreapta "/olosind operaii pe bii$ %i a/i%ai n /orm binar. "Considerm
reprezentarea pe 5 bii$.

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