2. cvičení
Stručný přehled jazyka C aneb základy jazyka C++
-
Komentáře (ignorovány překladačem, určeny pro vysvětlující text):
// jednořádkový komentář /* víceřádkový komentář */ /* jednořádkový komentář */ -
Funkce
main:int main() { // příkazy } -
Deklarace proměnné:
typ nazev;typ nazev = hodnota;
-
Základní operace s proměnnými:
- přiřazení:
promenna = konstanta;promenna1 = promenna2;
- aritmetické operace:
a + ba - ba * ba / ba % b(zbytek po celočíselném dělení číslaačíslemb)- binární operace modifikující proměnnou nalevo:
a += b(ekvivalentnía = a + b)a -= b(ekvivalentnía = a - b)a *= b(ekvivalentnía = a * b)a /= b(ekvivalentnía = a / b)a %= b(ekvivalentnía = a % b)
- unární operace modifikující danou proměnnou:
c++,++c(zvětšení hodnoty o 1, ekvivalentníc += 1)c--,--c(zvětšení hodnoty o 1, ekvivalentníc -= 1)
- porovnávání:
a == ba != ba < ba <= ba > ba >= b
- booleovské operace:
u && w(AND)u || w(OR)! w(NOT)
- priority operátorů:
- všechny unární operace mají vyšší prioritu než všechny binární operace
(tedy např.
-b < c++je ekvivalentní(-b) < (c++)a ne-(b < c)++) - priority binárních operací:
*,/,%,+,-,<,<=,>,>=,==,!=,&&,||,=,+=,-=,*=,/=,%= - podrobnosti viz Wikipedia
- všechny unární operace mají vyšší prioritu než všechny binární operace
(tedy např.
- přiřazení:
-
Podmínka:
if (podmínka) { // příkazy když je podmínka splněna } else { // příkazy když podmínka není splněna } -
Cyklus
for:for (inicializace; podmínka; modifikace) { // příkazy } -
Cyklus
while:while (podmínka) { // příkazy } -
Definice funkce:
návratový_typ název_funkce(seznam_parametrů) { // příkazy }Např.:
int max(int a, int b) { if (a >= b) return a; else return b; } -
Deklarace funkce: na rozdíl od definice funkce neobsahuje tělo funkce, ale je ukončena středníkem. Např.:
void f1();int f2();int f3(float a, int b);
Deklarace funkcí jsou důležité, pokud se několik funkcí cyklicky volá navzájem (např.
f1volá funkcif2, která volá funkcif3, která opět volá funkcif1) nebo pokud se programátorovi nechce přeuspořádávat funkce podle závislostí.
Důležité pojmy
- Globální a lokální proměnné. Proměnné deklarované uvnitř funkce nebo cyklu
nejsou přístupné zvnějšku dané funkce nebo cyklu. Obecně v každém bloku
příkazů odděleného složenými závorkami (
{a}) lze deklarovat lokální proměnné, které nejsou přístupné zvnějšku tohoto bloku.
Probrané příklady
-
Výpis sudých čísel. Program ukazuje využití cyklu
fora podmínky.#include <stdio.h> int main() { for (int i = 0; i < 100; i++) { if (i % 2 == 0) printf("%d\n", i); } return 0; }Místo cyklu
forlze ekvivalentně použít cykluswhile:#include <stdio.h> int main() { int i = 0; while (i < 100) { if (i % 2 == 0) printf("%d\n", i); i++; } return 0; }Cyklus
forje vhodné použít v případech, kdy předem známe počet opakování cyklu. Cykluswhileje obecnější a hodí se pro situace, kdy dopředu neznáme počet opakování cyklu. -
Výpis prvočísel. Program ukazuje komplikovanější strukturu vnořených cyklů.
#include <stdio.h> int main() { for (int i = 1; i < 100; i++) { int pocet_delitelu = 0; for (int j = 1; j <= i; j++) { if (i % j == 0) pocet_delitelu += 1; } if (pocet_delitelu <= 2) printf("%d\n", i); } return 0; }O něco chytřejší verze využívá toho, že čísla
jvětší než polovina číslainemohou být děliteli číslai. Stačí tedy procházet pouze čísla od 2 doi / 2.#include <stdio.h> int main() { for (int i = 1; i < 100; i++) { int pocet_delitelu = 1; for (int j = 2; j < i / 2; j++) { if (i % j == 0) pocet_delitelu += 1; } if (pocet_delitelu == 1) printf("%d\n", i); } return 0; }