Aritmetické operace
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.
Odkazy
Následující kapitola: Řídící struktura IF