Programovanie v C++ - 4. diel
Programovanie v C++ - 4. diel
Seriál o programovaní v programovacom jazyku C++. V štvrtom diele pozrieme na zúbok operátorom.
Operátory
Operátory sú úplne neoddeliteľnou súčasťou každého modernejšieho programovacieho jazyka (1950 a novší ;-). Pomocou nich môžeme vykonávať matematické operácie typu sčítanie, odčítanie, násobenie a delenie a v prípade C++ dokonca aj vyhodnocovanie podmienok! Operátory možno rozdeliť na dve skupiny podľa toho, koľko majú operandov. Ak má operátor dva operandy je binárny, ak má operand jeden, je unárný.
Binárne operátory
Možno ich ďalej rozdeliť na aritmetické, relačné, logické a bitové.
Unárne operátory
Sú to operátory, ktoré majú len jeden operand. Tieto operátory mávajú prefixovú a postfixovú verziu. je taká, kde sa pri zápise najprv uvedie oprátor a až potom operand. V prípade postfixovej verzie je to presne naopak.
Skrátená forma zápisu
S väčšinou operátorou sa dá použiť aj ich skrátená forma. Napríklad nemusíme písať výraz A = A+3, ale napíšeme len A +=3. Táto možnosť je mohutne využívaná, i keď nemá prakticky žiadny význam (až na skrátenie kódu a jedno miesto na jednu takúto operáciu :-). Skrátená forma operátorov sa dá použiť s aritmetickými a bitovými operátormi (s vínimkou negácie), čiže len s binárnymi operátormi.
Záver
Napriek tomu, že v minulom diele som sľúbil, že si už napíšeme prvý program, nestane sa tak. Operátory boli trochu obsiahlejšia téma ako som čakal a pre vaše potešenie vám môžem oznámiť, že toto ešte nie sú všetky. Áno, je ich o niečo viac ;-).
V nasledujúcom diele sa ešte ostatnými operátormi zaoberať nebudem. Zato si však napíšeme prvý program (teraz už naozaj) a bližšie na funkcie sa pozrieme viac "pod lupou". Doprogramovania.
Operátory sú úplne neoddeliteľnou súčasťou každého modernejšieho programovacieho jazyka (1950 a novší ;-). Pomocou nich môžeme vykonávať matematické operácie typu sčítanie, odčítanie, násobenie a delenie a v prípade C++ dokonca aj vyhodnocovanie podmienok! Operátory možno rozdeliť na dve skupiny podľa toho, koľko majú operandov. Ak má operátor dva operandy je binárny, ak má operand jeden, je unárný.
Binárne operátory
Možno ich ďalej rozdeliť na aritmetické, relačné, logické a bitové.
Aritmetické operátory +, -, *, / Základné matematiké operátory, ktoré pozná každý. Majú takú istú funkciu ako v skutočnom svete. To, či bude výsledok kladné, alebo záporné číslo závisí od typu operandov. Ak sú oba celočíslené, aj výsledok je celočíslený. Ak je jeden z operandov reálneho charakteru, aj výsledok na tom bude rovnako. Ak delíme dve celé čísla, výsledok sa bude zaokruhľovať. % Operátor modulo slúži na získavanie celočísleného zvyšku po celočíslenom delení. Ak teda vykonáme operáciu 4%3, výsledkom bude číslo 1. = Operátor priradenia. Slúži na priradenie hodnoty do premenných a dátových štruktúr.
Relačné operátory >, <, >=, <= Základné matematiké operátory, ktoré pozná každý. Majú takú istú funkciu ako v skutočnom svete. To, či bude výsledok kladné, alebo záporné číslo závisí od typu operandov. Ak sú oba celočíslené, aj výsledok je celočíslený. Ak je jeden z operandov reálneho charakteru, aj výsledok na tom bude rovnako. Ak delíme dve celé čísla, výsledok sa bude zaokruhľovať. != Význam operátoru je "nerovná sa". Používa sa pri porovnávaní a vyhodnocovaní výrazov v podmieňovacích príkazoch. K tomu sa však dostaneme až v niektorej z budúcich častí. == Rovná sa. Použitie je rovnaké ako u predchádzajúceho operátoru.Ako som už v prvom diele seriálu napísal, C++ je programovací jazyk na nižšej úrovni (pozor, nemyslí sa tým horšej!!!). Vďaka tomu programátor disponuje možnosťou pracovať s jednotlivými bitmi. Programátorovi to dáva väčšiu slobodu a moc pri písaní programov. Pri písaní nízkoúrovňových aplikácií (napr.operačný systém, ovládače) sú podobné operátory nutnosťou a preto sa takéto programy píšu spravidla v C++, alebo v assemblere (jazyk symboického zápisu inštrukcií).
Logické operátory && Logický súčet (AND). Výraz A&&B má rovnaký význam, ako keby ste povedali A a B. || Logický súčin (OR). Jeho význam je rovnaký, ako význam slova alebo. Keď teda napíšete výraz A || B, znamená to A alebo B. ! Operátor negácie neguje akúkoľvek premennú. Napr. negáciou čísla 1 (00000001b) dostaneme číslo 254 (11111110b).Ďalšími binárnymi operátormi sú operátory bitové. Hlavným rozdielom oproti ostatným typom operátorov je, že sú aplikovateľné iba na celé čísla a to, že pracujú na úrovni jednotlivých bitov.
Bitové operátory <<, >> Bitový posun doľava a doprava. |, &, ^, ~ Bitový súčet, súčin, exklusívny súčet a bitová negácia.Operátor bitového posunu posunie bity smerom, do ktorého operátor ukazuje o toľko bitov, koľko určuje druhý operand. Pri posúvaní bitov môže dôjsť k situácii, keď bity posuniete doprava, alebo doľava príliš a tie potom "vypadnú".
00000100b >> 2 = 00000001b = 1d 00000100b << 2 = 00010000b = 16dV tomto prípade boli bity posunúté až príliš a došlo k vypadnutiu jedného bitu vpravo (1), resp. vľavo (2).
(1) 00111100b >> 3 = 00000111b = 7d (2) 00111100b << 3 = 11100000b = 224dKeď chcete sčítať čísla 6 a 3, jednoducho si v hlave poviete 6 plus 3 je 9. Na podobnom princípe fungujú aj operácie vykonávané aritmetickými operátormi. Bitové operátory ale pracujú na úrovni jednotlivých bitov (nuly a jednotky) a nad jednotlivými bitmi sa počítajú bitové operácie. Preto výsledkom operácie 6|3 nebude číslo 9, ale číslo 7!
6d = 00000110b 3d = 00000011b -------------------- bitový súčet 7d = 00000111bPri bitovom súčte sa na nulu nastavia len tie bity, ktoré sú výsledkom logického súčinu dvoch nulových bitov. V opačnom prípade sa bit nastaví na jednotkový.
6d = 00000110b 3d = 00000011b -------------------- bitový súčin 2d = 00000010bPri bitovom súčine sa na jednotku nastavia len tie bity, ktoré sú výsledkom logického súčinu dvoch jednotkových bitov. V opačnom prípade sa bit nastaví na nulový.
6d = 00000110b 3d = 00000011b -------------------- bitový exklusívny súčet 5d = 00000101bPri bitovom exklusívnom súčte sa na jednotku nastavia jedine tie bity, ktoré sú výsledkom bitovej operácie bitov s rozdielnymi hodnotami, čiže operáciou s jedným nulovým a jedným nenulovým bitom.
6d = 00000110b -------------------- bitová negácia 249d = 11111001bPri bitovej negácii sa hodnoty jednotlivých bitov prehodia. To znamená, že nenulový bit sa stane nulovým a opačne.
Unárne operátory
Sú to operátory, ktoré majú len jeden operand. Tieto operátory mávajú prefixovú a postfixovú verziu. je taká, kde sa pri zápise najprv uvedie oprátor a až potom operand. V prípade postfixovej verzie je to presne naopak.
Význam | Operátor | Príklad Inkrementácia | ++ | (prefix) a++, (postfix) ++a Dekrementácia | -- | (prefix) a--, (postfix) --aTieto operátory zvýšia (inkrementácia), resp. znížia (dekrementácia) hodnotu premennej o "1". V prípade, že použijete prefixovú verziu, hodnota premennej sa automaticky pozmení a až potom sa bude vyhodnocovať daný výraz, kdežto v prípade postfixovej verzie sa najprv vyhodnotí výraz a až potom sa zmení hodnota premennej. Ako to funguje, ukazuje príklad.
int i=10; int a=i++; Použitá prefixová verzia operátora spôsobí, že do premennej a sa najprv uloží hodnota premennej i, čiže 10, a až potom sa premenná i inkrementuje o 1 na 11. int b=++i; Tu sa najprv inkrementuje premenná i, čiže bude mať hodnotu 12 a až potom sa táto hodnota uloží do premennej b.
Skrátená forma zápisu
S väčšinou operátorou sa dá použiť aj ich skrátená forma. Napríklad nemusíme písať výraz A = A+3, ale napíšeme len A +=3. Táto možnosť je mohutne využívaná, i keď nemá prakticky žiadny význam (až na skrátenie kódu a jedno miesto na jednu takúto operáciu :-). Skrátená forma operátorov sa dá použiť s aritmetickými a bitovými operátormi (s vínimkou negácie), čiže len s binárnymi operátormi.
// dlhá forma zápisu A = A*3; B = B+4; // krátka forma zápisu A *= 3; B += 4;
Záver
Napriek tomu, že v minulom diele som sľúbil, že si už napíšeme prvý program, nestane sa tak. Operátory boli trochu obsiahlejšia téma ako som čakal a pre vaše potešenie vám môžem oznámiť, že toto ešte nie sú všetky. Áno, je ich o niečo viac ;-).
V nasledujúcom diele sa ešte ostatnými operátormi zaoberať nebudem. Zato si však napíšeme prvý program (teraz už naozaj) a bližšie na funkcie sa pozrieme viac "pod lupou". Doprogramovania.
Autor: Ribi ·
Kategória: Programovanie ·
Dátum: 31.08.2005 17:17


![Hlasová verzia [Pre internetový prehliadač Opera] Voice](modules/items/voice.png)
Komentáre
3d = 00000110b - ma byt 6d
6d = 00000011b - ma byt 3d
--------- bitový súčet - to je sucin, nie sucet
00000010b = 2d
Logický súčin (OR) "
Má to byť naopak => AND je logický súčin a OR je logický súčet!!!