INSTRUKCJE I OPERATORY
1. Czym s
ą
instrukcje?
W C++ instrukcje ustanawiaj
ą
kolejno
ść
wykonywania kodu. Ka
ż
da instrukcja ko
ń
czy si
ę
ś
rednikiem -
‘’;’’.Oto przykład instrukcji przypisania:
Kod:
c = a + b;
Mimo,
ż
e w matematyce taki zapis mo
ż
na potraktowa
ć
jako: c jest równa sumie a i b, to jednak w C++
taki zapis oznacza,
ż
e do zmiennej c wprowadzamy warto
ść
równ
ą
sumie a i b.
1. Operatory
Operatory to symbole informuj
ą
ce kompilator o konieczno
ś
ci wykonania działania. Oto lista
podstawowych operatorów:
a) operator przypisania "="
Operator przypisania powoduje,
ż
e operand (obiekt, zmienna itp.) z prawej strony zostaje przypisany
operandowi z lewej strony.
b) Operatory matematyczne: odejmowanie "-", dodawanie "+", mno
ż
enie "*", dzielenie "/", reszta z
dzielenia całkowitego "%"
S
ą
to podstawowe operatory matematyczne słu
żą
ce do wykonywania działa
ń
. Chyba ka
ż
dy wie do
czego słu
żą
, bo to s
ą
podstawy matematyki których uczymy si
ę
w klasie podstawowej :). Pami
ę
tajmy
jednak o pewnych zasadach takich jak nie dzielenie przez zero. Innym wyj
ą
tkiem mo
ż
e by
ć
np.
odejmowanie liczby całkowitej bez przecinka (unsigned int) od wi
ę
kszej liczby całkowitej bez
przecinka. Taka próba mo
ż
e da
ć
nam niezrozumiały wynik. Oto przykład takiego bł
ę
du:
Kod:
unsigned
int
liczba1 =
25
;
unsigned
int
liczba2 =
60
;
std::
cout
<< liczba1 - liczba2;
Wynikiem nie b
ę
dzie -45, a 4294967256.
Dzielenie i reszta z dzielenia to tak
ż
e podstawowe działania matematyczne. W przypadku dzielenia
całkowitego nie ma chyba problemów ze zrozumieniem działania : 21/5 = 4. Reszt
ę
z dzielenia
uzyskujemy w ten sposób : 21%5 = 1. Z liczbami zmiennoprzecinkowymi jest podobnie : 7.0/2.0 = 3.5.
Kod:
double
liczba1 =
7
.
0
;
double
liczba2 =
2
.
0
;
std::
cout
<<
"Dzielenie :"
<< liczba1/liczba2;
std::
cout
<<
"Dzielenie całkowite:"
<<
int
(
liczba1
)
/
int
(
liczba2
)
;
std::
cout
<<
"reszta z dzielenia :"
<< liczba1%liczba2;
Pami
ę
tajmy tak
ż
e o kolejno
ś
ci działa
ń
. Kolejno
ść
jest taka sama jak w przypadku działa
ń
matematycznych:
Kod:
int
liczba1 =
7
.
0
;
int
liczba2 =
2
.
0
;
int
liczba3 =
4
.
5
;
std::
cout
<<
"Wynik :"
<< liczba1 *
3
- liczba3 + liczba2/
4
.
5
;
W działaniach mo
ż
emy tak
ż
e u
ż
y
ć
nawiasów:
Kod:
int
liczba1 =
7
.
0
;
int
liczba2 =
2
.
0
;
int
liczba3 =
4
.
5
;
std::
cout
<<
"Wynik :"
<<
6
*
(
liczba1 *
3
-
(
liczba3 + liczba2/
4
.
5
))
;
c) Inkrementacja "++" i dekrementacja "--"
Inkrementacja jest do zwi
ę
kszanie warto
ś
ci zmiennej o jeden wraz z przypisaniem jej, a
dekrementacja działa na tej samej zasadzie, ale warto
ść
jest zmniejszana o jeden.
Kod:
int
C =
0
;
C++ ;
ten kod stanowi odpowiednik :
Kod:
C = C +
1
;
Oba operatory (inkrementacji i dekrementacji) mog
ą
wyst
ę
powa
ć
w formie przyrostka lub przedrostka.
Przedrostek zapisywany jest przed nazw
ą
zmiennej (++zmienna) , a przyrostek za nazw
ą
(zmienna++).Czym to si
ę
ró
ż
ni? Operator przedrostkowy jest obliczany przed przypisaniem warto
ś
ci
do zmiennej a przyrostek po przypisaniu. Ró
ż
nica mo
ż
e nie jest wielka, ale mo
ż
e doprowadzi
ć
do
bł
ę
dów w programie np.:
Kod:
int
liczba1 =
0
;
int
liczba2 =
1
;
liczba1 = ++liczba2;
W tym wypadku liczba1 jest równa 2
Kod:
int
liczba1 =
0
;
int
liczba2 =
1
;
liczba1 = liczba2++;
Tym razem warto
ść
liczba1 b
ę
dzie równa 1 poniewa
ż
, przypisanie warto
ś
ci nast
ą
piło przed
inkrementacj
ą
, dlatego te
ż
kompilator najpierw przypisał liczba1 do liczba2 a dopiero potem wrócił do
zmiennej liczba2 i zwi
ę
kszył jej warto
ść
o jeden.
2. Operatory relacji
Operatory relacji s
ą
u
ż
ywane do sprawdzania, czy dwie liczby s
ą
równe, albo czy jedna z nich jest
wi
ę
ksza lub mniejsza od drugiej. Ka
ż
dy operator relacji zwraca prawd
ę
lub fałsz. W C++ wyst
ę
puje 6
operatorów relacji. Oto one:
a)operator równo
ś
ci "=="
Operator równo
ś
ci u
ż
ywany jest do sprawdzenia warto
ś
ci operanda np:
Kod:
int
ocena =
6
;
if
(
ocena==
6
)
std::
cout
<<
"Brawo jeste
ś
genialny :)"
;
b)operator nierówno
ś
ci "!="
Kod:
int
ocena =
6
;
if
(
ocena !=
1
)
std::
cout
<<
"Nie jest tak
ź
le :)"
;
c)operator wi
ę
kszo
ś
ci ">"
Kod:
int
ocena =
4
;
if
(
ocena >
3
)
std::
cout
<<
"Dobrze ci idzie"
;
d)operator mniejszo
ś
ci "<"
Kod:
int
ocena =
2
;
if
(
ocena <
3
)
std::
cout
<<
"Popraw si
ę
w nauce :("
;
e)operator mniejszo
ś
ci lub równo
ś
ci "<="
Kod:
int
ocena =
3
;
if
(
ocena <=
3
)
std::
cout
<<
"Na pewno sta
ć
ci
ę
na wi
ę
cej :)"
f)operator wi
ę
kszo
ś
ci lub równo
ś
ci ">="
Kod:
int
ocena =
5
;
if
(
ocena >=
4
)
std::
cout
<<
"Jeste
ś
dobrym uczniem"
3. Operatory logiczne
Operatory logiczne słu
żą
do ł
ą
czenia kilku "pyta
ń
" operatorów relacji np. "Czy dzisiaj jest poniedziałek
i czy
ś
wieci sło
ń
ce" zamiast "Je
ś
li dzisiaj jest poniedziałek, sprawd
ź
czy
ś
wieci sło
ń
ce" :
Kod:
if
((
dzien==
"poniedziałek"
)
&&
(
swieci_slonce
))
ide_na_stadion =
true
;
W przeciwnym razie ten zapis musiałby wygl
ą
da
ć
tak:
Kod:
if
(
dzien==
"poniedziałek"
)
if
(
swieci_slonce
)
ide_na_stadion =
true
;
Oto trzy operatory logiczne:
&& - i (AND)
|| - lub (OR)
! - nie (NOT)
A oto przykład ich wykorzystania:
Kod:
int
main
()
{
if
(
(
dzisiaj=
"ponied
ź
ialek"
|| dzisiaj=
"
ś
roda"
)
&& !pada_desz
)
ide_na_spacer
()
;
return
0
;
}
Ten zapis mo
ż
na rozumie
ć
jako "Je
ś
li dzisiaj jest poniedziałek lub
ś
roda i nie pada deszcz id
ę
na
spacer".
4. Operatory bitowe
Operatory bitowe słu
żą
do operowania na pojedynczych bitach zmiennej. W C++ wyst
ę
puj
ą
nast
ę
puj
ą
ce operatory bitowe :
<< przesuwa bity w lewo
>> przesuwa bity w prawo
& bitowy iloczyn logiczny (bitowa koniunkcja)
| bitowa suma logiczna (bitowa alternatywa)
^ bitowa ró
ż
nica symetryczna (bitowe XOR)
~ bitowa negacja
5.Operator warunkowy
Operator warunkowy jest jedynym operatorem w C++ korzystaj
ą
cym z trzech wyra
ż
e
ń
. Zapisujemy go
w nast
ę
puj
ą
cy sposób: (wyra
ż
enie1) ? (wyra
ż
enie2) : (wyra
ż
enie3)
i odczytujemy go w sposób : je
ś
li wyra
ż
enie1 jest prawd
ą
to zwró
ć
wyra
ż
enie2, w przeciwnym razie
wyra
ż
enie3
Kod:
bool
ide_na_spacer,pada_desz;
pada_deszcz =
false
;
ide_na_space =
(
!pada_desz
)
?
true
:
false
;
if
(
ide_na_spacer
)
std:
cout
<<
"Niema mnie w domu"
;