Operátory (1. část) 3 A1PRG - Programování – Seminář Verze 2009.02 Operátory (1. část) 3 A1PRG - Programování – Seminář Ing. Michal Heczko heczko@fai.utb.cz
Agenda Co jsou operátory a jejich základní dělení Aritmetické operátory Relační operátory Logické operátory Bitové logické operátory
Operátory Operátor je symbolické vyjádření elementární funkce s jednou nebo i více vstupními proměnnými, který vrací jednu výstupní hodnotu.
Dělení operátorů Podle počtu vstupních hodnot: Unární operátory – mají pouze jednu vstupní hodnotu Binární operátory – mají 2 vstupní hodnoty Ternární operátory – mají 3 vstupní hodnoty (např. podmíněný výraz)
Dělení operátorů Podle funkce: Aritmetické operátory Relační operátory Logické operátory Bitové logické operátory …
Operátor přiřazení Znak „=“ Přiřazuje hodnotu nebo výsledek výpočtu určité proměnné
Aritmetické operátory Unární aritmetické operátory - přehled Operátor Popis + Označení kladného čísla - Označení záporného čísla
Aritmetické operátory Binární aritmetické operátory - přehled Operátor Popis + Součet - Rozdíl * Součin / Podíl (celočíselný nebo reálný) % Modulo (zbytek po celočíselném dělení) Pozn. Operátor Modulu (%) lze použít pouze u celočíselného datového typu. Tj. Nelze použít pro datové typy float nebo double.
Aritmetické operátory Příklad: int x = 7; int y = 5; int z; z = x + y (výsledek: z = 12) z = x - y (výsledek: z = 2) z = x * y (výsledek: z = 35) z = x / y (výsledek: z = 1) z = x % y (výsledek: z = 2)
Aritmetické operátory Podíl z hlediska datových typů A B Podíl A / B int celočíselný Int float reálný
Aritmetické operátory Možnost zkráceného zápisu Operátor Použití Odpovídající plný zápis += x += y; x = x + y; -= x -= y; x = x - y; *= x *= y; x = x * y; /= x /= y; x = x / y; %= x %= y; x = x % y;
Aritmetické operátory Inkrementace a dekrementace Operátor Použití Odpovídající plný zápis ++ Inkrementace x = x + 1; -- Dekrementace x = x - 1;
Aritmetické operátory Inkrementace a dekrementace Příklad: int x, y; x = 5; y = ++x; (preinkrementace: proměnná x bude mít hodnotu 6 a y taktéž) y = x++; (postinkrementace: proměnná x bude mít hodnotu 6 a y 5)
Relační operátory Slouží pro porovnání dvou hodnot Výsledkem je logická hodnota (true/false) Nejčastější použití: Podmínky Cykly
Relační operátory Relační operátory - přehled Operátor Popis == Rovnost != Nerovnost <= Menší nebo rovno >= Větší nebo rovno < Menší než > Větší než
Relační operátory Příklad: int x = 5; int y = 7; x == y vrací 0 (false) x != y vrací 1 (true) x >= y vrací 0 (false) x <= y vrací 1 (true) x > y vrací 0 (false) x < y vrací 1 (true)
Logické operátory Umožňují provádění základních logických operací nad logickými hodnotami. ANSI C nemá logický datový typ. Pravda (true) uložena jako hodnota 1. Nepravda (false) uložena jako hodnota 0.
Logické operátory Logické operátory - přehled Operátor Popis ! Negace && Logický součin || Logický součet
Logické operátory Negace Logický součin Logický součet AND – a zároveň OR – a nebo x !x 1 x y x && y 1 x y x || y 1
Logické bitové operátory Umožňují provádět operace nad jednotlivými bity. Použití bitových operátorů vyžaduje znalosti o uložení bitů v paměti, způsobu kódování čísel, ... .
Logické bitové operátory - přehled Operátor Popis & Bitový součin | Bitový součet ^ Bitový exkluzivní součet ~ Bitová negace << Bitový posuv vlevo >> Bitový posuv vpravo
Logické bitové operátory Bitový součin (AND) Příklad: 77 & 198 = 68 (77)10 .. (01001101) 2 (198)10 .. (11000110) 2 (68)10 .. (01000100) 2 x y x & y 1
Logické bitové operátory Bitový součet (OR) Příklad: 77 | 198 = 207 (77)10 .. (01001101) 2 (198)10 .. (11000110) 2 (207)10 .. (11001111) 2 x y x | y 1
Logické bitové operátory Bitový exkluzivní součet (XOR) Příklad: 77 ^ 198 = 139 (77)10 .. (01001101) 2 (198)10 .. (11000110) 2 (139)10 .. (10001011) 2 x y x ^ y 1
Logické bitové operátory Bitová negace Příklad: ~77 == 178 (77)10 .. (01001101)2 (178)10 .. (10110010)2 x ~x 1
Logické bitové operátory Bitový posuv vlevo Posuv všech bitů levého operandu o počet míst daný pravým operandem. Nejvyšší bity se ztrácejí, nejnižší jsou doplněny nulami. Příklad: 25 << 2 = 100 (25)10 … (00011001)2 (100)10 … (01100100)2
Logické bitové operátory Bitový posuv vpravo Posuv všech bitů levého operandu o počet míst daný pravým operandem. Nejnižší bity se ztrácejí, nejvyšší jsou doplněny nulami. Příklad: 25 >> 2 = 6 (25)10 … (11001)2 (6)10 … (110)2
Logické bitové operátory Možnost zkráceného zápisu Operátor Použití Odpovídající plný zápis & x &= y; x = x & y; | x |= y; x = x | y; ^ x ^= y; x = x ^ y; << x <<= y; x = x << y; >> x >>= y; x = x >> y;
A1PRG 03. Operátory I. Děkuji za pozornost Ing. Michal Heczko heczko@fai.utb.cz 218/U3 Prezentace k dispozici na http://vyuka.fai.utb.cz