V předchozí kapitole jsme si ukazali sčítání. V programování můžeme použít i další operátory

Operátor Název Ukázka Výsledek
+ sčítání 2 + 5 7
- odečítání 2 - 5 -3
* násobení 2 * 5 10
/ dělení 4 / 2 2
% modulo (zbytek po dělení) 10 % 3 1

Pokud jste se ještě nesetkali s operátorem modulo, tak to funguje následovně.

Pokud chci spočítat 10 % 3, tak se udělá 10 / 3, což je výsledek 3 a zbytek 1. A tento zbytek 1 je právě výsledek operace modulo.

x y x % y
0 3 0
1 3 1
2 3 2
3 3 0
4 3 1
5 3 2
6 3 0
7 3 1
8 3 2
9 3 0
10 3 1

Pro negativní čísla pak platí

x y x % y
-1 3 -1
-2 3 -2
-3 3 0
-4 3 -1
-5 3 -2
-6 3 0
-7 3 -1
-8 3 -2
-9 3 0
-10 3 -1

Velmi často se používá modulo ke zjištění, zda je číslo sudé. Mějme číslo X, u kterého chceme zjistit, zda je sudé nebo liché. Pokud uděláme

x % 2

Tak pokud je výsledek 0, tak víme, že je číslo sudé. V opačném případě je číslo liché.

Dělení

Velký pozor je potřeba dát v jazyku C na dělení. Pokud máme

5 / 2

Tak bychom mohli čekat, že výsledek bude 2.5. V jazyce C ale platí, že pokud jsou obě hodnoty operace dělení datového typu int, tak i výsledek je int. V jazyce C tedy platí, že výsledek je 2 (a ne 2.5). Označujeme to jako celočíselné dělení.

Pokud bychom chtěli dostat výsledek 2.5 museli bychom jednu z hodnot nastavit jako desetinné. To se v C dá udělat několik způsoby. Všechny tyto způsoby způsobí, že výsledek bude 2.5 datového typu double.

5.0 / 2
5 / 2.0
5.0 / 2.0

Proč to funguje? Protože pokud použijeme číslo s tečkou, tak ho označíme jako datový typ double, což je datový typ pro desetinná čísla. Používáme ho podobně jako datový typ int. Definice proměnné vypadá

double x = 5.0;

Pokud použijeme tvar s desetinnou tečkou, tak se vždy jedná o double. Dále platí, že pokud je jedno z čísel při dělení datového typu double, tak výsledek bude také typu double.

Unární mínus

Mínus můžeme použít mezi dvěma hodnotami 10 - 3. Pokud máme dvě hodnoty a mezi nimi je operátor, tak takovému operátoru říkáme, že je to binární operátor (pracuje s dvěma hodnotama).

Pokud operátor pracuje s jednou hodnotou, tak o takovém operátoru mluvíme jako o unárním operátoru.

Ukázka může být

x * -y

nebo

5 * -3

V tomto případě je mínus použito jako unární (pracuje jenom s jednou hodnotou/proměnnou a ne s dvěma).

Jak udělat z kladné proměnné zápornou a ze záporné kladnout? Buď můžeme udělat

x = -1 * x;

nebo zkráceně

x = -x;

Úkoly na procvičení

Úkol 1

Napište funkci, která bude mít 2 parametry typu int a vytiskne jejich součet.

Klikni pro zobrazení možného řešení
#include <stdio.h>

void secti(int x, int y) {
    printf("%i\n", x + y);
}

int main()
{
    secti(1, 2);
    return 0;
}

Úkol 2

Napište funkci, která bude mít 2 parametry typu int a vytiskne jejich součet.

Klikni pro zobrazení možného řešení
#include <stdio.h>

void secti(int x, int y) {
    printf("%i\n", x + y);
}

int main()
{
    secti(1, 2);
    return 0;
}

Fun fact

Programátoři nemají Oskary ani Nobelovy ceny, ale mají Turingovu cenu podle Alana Turinga (1912 - 1954), který je považován za zakladatele moderní informatiky. O části jeho životě bylo natočeno spoustu filmů. Mezi nejpopulárnější patří například Kód Enigmy.

Více o Alanovi Turingovi například zde.

Turing

Odkazy

Následující kapitola: Řídící struktura IF

GitHub diskuze k této kapitole

Zpátky na přehled

Předchozí kapitola: Debugger