spse:pm1:cpp-operatory

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
spse:pm1:cpp-operatory [2020/12/07 19:41] jendaspse:pm1:cpp-operatory [2024/07/07 16:48] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 +~~NOCACHE~~
 +~~REVEAL theme=dokuwiki&transition=convex&controls=1&show_progress_bar=1&build_all_lists=1&show_image_borders=0&horizontal_slide_level=2&enlarge_vertical_slide_headers=0&show_slide_details=1&open_in_new_window=1&size=1280x960~~
 +
 +
 +
 ====== Operátory ====== ====== Operátory ======
 Operátory určují co se má s proměnnými a konstantami provést. ((Operátory. Klikzone.cz: Tvorba webu pro každého [online]  [cit. 2020-12-07]. Dostupné z: https://www.klikzone.cz/cplusplus/operatory.php)) Operátory určují co se má s proměnnými a konstantami provést. ((Operátory. Klikzone.cz: Tvorba webu pro každého [online]  [cit. 2020-12-07]. Dostupné z: https://www.klikzone.cz/cplusplus/operatory.php))
Řádek 4: Řádek 9:
 ===== Operátor přiřazení ===== ===== Operátor přiřazení =====
 Jedná se o základní, ale zřejmě nejčastěji používaný operátor a značí se rovnítkem ''='' Jedná se o základní, ale zřejmě nejčastěji používaný operátor a značí se rovnítkem ''=''
 +---->
 <code c> <code c>
 int x; int x;
Řádek 11: Řádek 17:
  
 </code> </code>
-Máme proměnnou x, které je přiřazena hodnota 7. Při výpisu se zobrazí "7".+Proměnné x, je přiřazena hodnota 7. Při výpisu se tedy zobrazí "7".
  
 +<----
 +---->
 <code c> <code c>
 int x,y,z; int x,y,z;
Řádek 18: Řádek 26:
 y = x; //proměnné y je přiřazena hodnota proměnné x, tedy 7 (x=7;y=7;z=0) y = x; //proměnné y je přiřazena hodnota proměnné x, tedy 7 (x=7;y=7;z=0)
 z = 3; //proměnné z je přiřazena hodnota 3 (x=7;y=7;z=3) z = 3; //proměnné z je přiřazena hodnota 3 (x=7;y=7;z=3)
-x = y+z; //proměnné x je přiřazen součet hodnot proměnných y a z (x=10,y=7,z=3)+x = y + z; //proměnné x je přiřazen součet hodnot proměnných y a z (x=10,y=7,z=3)
 printf("%d\n",x); printf("%d\n",x);
  
 </code> </code>
  
-Tento příklad je už o něco složitější, nicméně stačí si uvědomit, že u přiřazení platí pravidlo right to left, neboli zprava doleva. Znamená to, že hodnota pravé strany je přiřazována levé straně. Příklad:+  * u přiřazení platí pravidlo right to left, neboli zprava doleva.  
 +  * Znamená to, že hodnota pravé strany je přiřazována levé straně. 
 +<---- 
 +----> 
 +==== Pravidla přiřazení ====
  
 <code c> <code c>
Řádek 31: Řádek 43:
  
 </code> </code>
-Hodnota proměnné ''x'' je samozřejmě 7. Tato hodnota je zprava postupně předávána všem proměnným. +  * Hodnota proměnné ''x'' je samozřejmě 7.  
 +  * Tato hodnota je zprava postupně předávána všem proměnným. 
 +<----
 ===== Aritmetické operátory ===== ===== Aritmetické operátory =====
  
-Jedná se o operace jako sčítaní a odčítání či dělení a násobení. Patří sem však také operace modulo. +  * Jedná se o operace jako sčítaní a odčítání či dělení a násobení.  
 +  * Patří sem však také operace modulo. 
 +<fragment-block>
 ^ OPERÁTOR ^ VÝZNAM  ^ ^ OPERÁTOR ^ VÝZNAM  ^
 | + | sčítání  | | + | sčítání  |
Řádek 43: Řádek 57:
 | / | dělení  | | / | dělení  |
 | % | modulo (zbytek po dělení)  | | % | modulo (zbytek po dělení)  |
 +</fragment-block>
 +---->
  
-Příklad:+<fragment-block>
 <code c> <code c>
 int x; int x;
Řádek 51: Řádek 67:
 // output: "1" // output: "1"
 </code> </code>
 +</fragment-block>
 +  * Proměnné ''x'' je přiřazen výsledek operace ''10 % 3'' - zbytek po dělení třemi. 
 +  * Pokud podělíme číslo 10 třemi, dostaneme výsledek 3 a zbytek 1 - tento zbytek je výslednou hodnotou.
 +  * Tímto způsobem lze například snadno zjistit, zda je číslo sudé nebo liché ''(19 % 2 = 1; 22 % 2 = 0)''.
 +<----
  
-Proměnné ''x'' je přiřazen výsledek operace ''10 % 3'', což znamená zbytek po dělení třemi. Tedy pokud podělíme číslo 10 třemi, dostaneme výsledek 3 a zbytek 1 - tento zbytek je výslednou hodnotou. 
- 
-Tímto způsobem lze například snadno zjistit, zda je číslo sudé nebo liché ''(19 % 2 = 1; 22 % 2 = 0)''. 
  
 ==== Složené přiřazení ==== ==== Složené přiřazení ====
  
-Jedná se pouze o zjednodušení zápisu. Například: +  * Jedná se pouze o zjednodušení zápisu.  
- +    ''x += y;'' má stejný význam jako: ''x = x + y;'' 
-''x += y;'' má stejný význam jako: ''x = x + y;'' +  Obdobné je to i s dalšími složenými operátory: 
- +    * ''-=, *=, /=, %=, >>=, <<=, &=, ^=, |=''
-Obdobné je to i s dalšími složenými operátory: ''-=, *=, /=, %=, >>=, <<=, &=, ^=, |=''+
  
 ==== Inkrementace a dekrementace ==== ==== Inkrementace a dekrementace ====
  
-Inkrementace se značí ''++'' (např.: ''a++;'') a dekrementace ''--'' (např.: ''a--;'') a používá se ke zvýšení nebo zvýšení hodnoty proměnné o 1. + Inkrementace se značí ''++'' (např.: ''a++;'') a dekrementace ''--'' (např.: ''a--;'') a používá se ke zvýšení nebo zvýšení hodnoty proměnné o 1. 
 +<fragment-block>
 <code c> <code c>
 x++; x++;
Řádek 73: Řádek 90:
 </code> </code>
 Tento zápis má stejný význam jako zápis ''x = x + 1;'' Tento zápis má stejný význam jako zápis ''x = x + 1;''
 +</fragment-block>
 ===== Relační operátory ===== ===== Relační operátory =====
  
-Relační operátory se používají pro vzájemné porovnání dvou ale i více proměnných. Porovnávat můžeme například zda jsou si hodnoty proměnných rovny nebo zda je jedna větší než druhá a podobně. +  * Relační operátory se používají pro vzájemné porovnání dvou ale i více proměnných.  
 +  * Porovnávat můžeme například zda jsou si hodnoty proměnných rovny nebo zda je jedna větší než druhá a podobně. 
 +<fragment-block>
 ^ OPERÁTOR ^ VÝZNAM ^ ^ OPERÁTOR ^ VÝZNAM ^
 | > | větší než  | | > | větší než  |
Řádek 85: Řádek 103:
 | == | je rovno  | | == | je rovno  |
 | != | není rovno  | | != | není rovno  |
- +</fragment-block> 
-Výsledkem porovnání je vždy booleovská hodnota a to pravda nebo nepravda. Například: +  Výsledkem porovnání je vždy booleovská hodnota a to pravda nebo nepravda. 
 +---->
 <code c> <code c>
 int x,y; int x,y;
Řádek 97: Řádek 115:
 x/2 != y; //nepravda x/2 != y; //nepravda
 </code> </code>
- +<fragment-block> 
- +<WRAP center round important 100%>
-<WRAP center round important 60%>+
 Operátor ''='' neslouží pro porovnání rovnosti proměnných. Je třeba použít operátor ''==''. Operátor ''='' neslouží pro porovnání rovnosti proměnných. Je třeba použít operátor ''==''.
 </WRAP> </WRAP>
- +</fragment-block> 
 +<----
 ===== Logické operátory ===== ===== Logické operátory =====
-Logické operátory mají stejnou funkci jako spojka ve větě. Spojují několik výroků v jeden (složený výrok). Výsledkem je pravda nebo nepravda. Patří sem také operátor negace, který neguje logickou hodnotu výroku. Tedy z pravdy negací vznikne nepravda a naopak. +  * Logické operátory mají stejnou funkci jako spojka ve větě.  
 +  * Spojují několik výroků v jeden (složený výrok).  
 +  * Výsledkem je pravda nebo nepravda.  
 +  * Patří sem také operátor negace, který neguje logickou hodnotu výroku. Tedy z pravdy negací vznikne nepravda a naopak. 
 +<fragment-block>
 ^ OPERÁTOR ^ VÝZNAM ^ ^ OPERÁTOR ^ VÝZNAM ^
 | && | spojka a (and)  | | && | spojka a (and)  |
 | %%||%% | spojka nebo (or)  | | %%||%% | spojka nebo (or)  |
 | ! | negace  | | ! | negace  |
 +</fragment-block> 
 +---->
 Příklad: Mějme následující složený výrok: Příklad: Mějme následující složený výrok:
- 
 <code c> <code c>
 int x,y; int x,y;
Řádek 120: Řádek 140:
 ((x < y) && (y != x)); ((x < y) && (y != x));
 </code> </code>
-Operátor ''&&'' nám jednoduché výroky ''(x < y)'' a ''(y != x)'' spojuje v jeden složený výrok. Výslednou hodnotu výroku určíme z pravdivostních hodnot jednotlivých jednoduchých výroků. +  * Operátor ''&&'' nám jednoduché výroky ''(x < y)'' a ''(y != x)'' spojuje v jeden složený výrok.  
- +  * Výslednou hodnotu výroku určíme z pravdivostních hodnot jednotlivých jednoduchých výroků. 
-Jednoduchý výrok ''(x < y)'' dává výslednou hodnotu pravda stejně jako výrok ''(y != x)''. Výslednou hodnotou složeného výroku je tedy pravda, jelikož pravda a pravda = pravda. Podívejme se na následující pravdivostní tabulky: +  Jednoduchý výrok ''(x < y)'' dává výslednou hodnotu pravda stejně jako výrok ''(y != x)''. 
- +  * Výslednou hodnotou složeného výroku je tedy pravda, jelikož pravda a pravda = pravda.  
-^ A ^ B ^ A && B ^ +<---- 
-| 1 | 1 | 1 | +==== Pravdivostní tabulky: ==== 
-| 1 | 0 | 0 | +<fragment-block> 
-| 0 | 1 | 0 | +^ A ^ B ^  A && B   A %%||%% B  
-| 0 | 0 | 0 | +| 1 | 1 |   |   
- +| 1 | 0 |    1  
-Z této pravdivostní tabulky jasně vyplývá, že k tomu, aby byl složený výrok se spojkou ''&&'' pravdivý, musí být pravdivé i všechny jednoduché výroky ze kterých je je tento výrok složen. +| 0 | 1 |    1  
- +| 0 | 0 |    0  
-^ A ^ B ^ A %%||%% B ^ +</fragment-block> 
-| 1 | 1 | 1 | +  * Aby byl složený výrok se spojkou ''&&'' pravdivý, musí být pravdivé i všechny jednoduché výroky ze kterých je je tento výrok složen. 
-| 1 | 0 | 1 | +  * Z pravdivostní tabulky spojky ''||'' vyplývá, že stačí aby byl pravdivý pouze jeden jednoduchý výrok.
-| 0 | 1 | 1 | +
-| 0 | 0 | 0 | +
- +
-Naopak z pravdivostní tabulky spojky ''||'' vyplývá, že stačí aby byl pravdivý pouze jeden jednoduchý výrok.+
  
 === Negace === === Negace ===
Řádek 149: Řádek 165:
  
 </code> </code>
 +
 Výslednou hodnotou je nepravda a to i přesto, že výrok 2 > 1 je pravdivý. Výsledná hodnota výroku je totiž negována. Výslednou hodnotou je nepravda a to i přesto, že výrok 2 > 1 je pravdivý. Výsledná hodnota výroku je totiž negována.
  
  
 ===== Priorita operátorů ===== ===== Priorita operátorů =====
 +<fragment-block>
 <code c> <code c>
 int x; int x;
Řádek 159: Řádek 176:
 printf("%d\n",x); printf("%d\n",x);
 </code> </code>
- +</fragment-block> 
-Výsledkem je číslo 14, protože nejprve dojde k součinu čísel 3 a 4, jelikož násobení má větší prioritu než sčítání, až poté se přičte dvojka. +  Výsledkem je číslo 14, protože nejprve dojde k součinu čísel 3 a 4, jelikož násobení má větší prioritu než sčítání, až poté se přičte dvojka. 
- +  Pokud tedy chceme, aby nejdříve došlo k součtu čísel 2 a 3, pomůžeme si závorkami: 
-Pokud tedy chceme, aby nejdříve došlo k součtu čísel 2 a 3, pomůžeme si závorkami:+<fragment-block>
 <code c> <code c>
 int x; int x;
Řádek 169: Řádek 186:
 Výsledkem je nyní číslo 20. Výsledkem je nyní číslo 20.
 </code> </code>
 +</fragment-block>
  • spse/pm1/cpp-operatory.1607370070.txt.gz
  • Poslední úprava: 2024/07/07 16:48
  • (upraveno mimo DokuWiki)