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 20:06] jendaspse:pm1:cpp-operatory [2024/07/07 16:48] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 17: Řá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".
  
 <---- <----
Řádek 26: Řá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>
 int x,y,w,z; int x,y,w,z;
Řádek 40: Řá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 52: Řádek 57:
 | / | dělení  | | / | dělení  |
 | % | modulo (zbytek po dělení)  | | % | modulo (zbytek po dělení)  |
 +</fragment-block>
 +---->
  
-----> +<fragment-block>
-Příklad:+
 <code c> <code c>
 int x; int x;
Řádek 61: Řádek 67:
 // output: "1" // output: "1"
 </code> </code>
- +</fragment-block> 
-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. +  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)''.+  Tímto způsobem lze například snadno zjistit, zda je číslo sudé nebo liché ''(19 % 2 = 1; 22 % 2 = 0)''.
 <---- <----
  
Řádek 70: Řádek 76:
 ==== 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 85: Řá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 97: Řá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.+  Výsledkem porovnání je vždy booleovská hodnota a to pravda nebo nepravda.
 ----> ---->
 <code c> <code c>
Řádek 109: Řá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:
Řádek 132: Řá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)''. 
-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. +  * Výslednou hodnotou složeného výroku je tedy pravda, jelikož pravda a pravda = pravda. 
 <---- <----
 ==== Pravdivostní tabulky: ==== ==== Pravdivostní tabulky: ====
- +<fragment-block> 
-^ A ^ B ^ A && B ^ +^ A ^ B ^  A && B   A %%||%% B  
-| 1 | 1 | 1 | +| 1 | 1 |    1  
-| 1 | 0 | 0 | +| 1 | 0 |    1  
-| 0 | 1 | 0 | +| 0 | 1 |    1  
-| 0 | 0 | 0 | +| 0 | 0 |    0  
- +</fragment-block> 
-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. +  * 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. 
- +  * Z pravdivostní tabulky spojky ''||'' vyplývá, že stačí aby byl pravdivý pouze jeden jednoduchý výrok.
-^ A ^ B ^ A %%||%% B ^ +
-| 1 | 1 | 1 | +
-| 1 | 0 | 1 | +
-| 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 164: Řá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 174: Řá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 184: Řádek 186:
 Výsledkem je nyní číslo 20. Výsledkem je nyní číslo 20.
 </code> </code>
 +</fragment-block>
  • spse/pm1/cpp-operatory.1607371576.txt.gz
  • Poslední úprava: 2024/07/07 16:48
  • (upraveno mimo DokuWiki)