Funkce
-
Funkce je blok kódu, který provádí určitou operaci a lze ho volat z různých míst v programu.
-
Funkce nám umožňují opakovat blok kódu opakovaně dále v kódu. Tímto docílíme lepší přehlednosti a modularitu kódu.
-
Pseudokód funkce:
- Zde si popíšeme jednotlivé části funkce v tzv. pseudokódu.
návratový_typ název_funkce(parametry) { // Tělo funkce return návratová_hodnota; // (pokud není `void`) } - návratový_typ – Datový typ hodnoty, kterou funkce vrací (int, float, void…).
- název_funkce – Identifikátor/Název funkce.
- parametry – Vstupní argumenty, mohou být i prázdné.
- return – Ukončí funkci a vrátí hodnotu (pokud není návratový_typ void).
- void je datový typ, který označuje, že funkce nevrací žádnou hodnotu nebo že nepřijímá žádné parametry.
- Zde si popíšeme jednotlivé části funkce v tzv. pseudokódu.
-
Příklad funkce v C:
-
Zde máme příklad použití funkce. Tento program sečte 2 čísla a vypíše je do konzole.
#include <stdio.h> // Funkce sečte dvě čísla a vrátí výsledek int secti(int a, int b) { return a + b; // Vrátí součet a a b } int main() { int vysledek = secti(5, 3); // Volání funkce a přiřazení výsledku printf("Součet: %d\n", vysledek); // Výpis výsledku součtu return 0; // Ukončení programu }Součet: 8
-
-
Příklad rekurzivní funkce v C:
-
Funkce také může volat sama sebe (rekurze), například pro výpočet faktoriálu.
#include <stdio.h> // Funkce pro výpočet faktoriálu int faktorial(int n) { if (n == 0) return 1; // Základní případ: faktoriál 0 je 1 return n * faktorial(n - 1); // Volání: n * faktoriál(n-1) } int main() { printf("5! = %d\n", faktorial(5)); // Volání funkce faktorial pro 5 return 0; // Ukončení programu }5! = 120
-
Standardní knihovny, vlastní knihovny
-
Knihovna v informatice je označení pro souhrn procedur a funkcí, často také konstant a datových typů (v objektovém programování též tříd, objektů a zdrojů).
-
Knihovny usnadňují programátorovi tvorbu aplikací tím, že umožňují využití hotového kódu, použití jednou vytvořeného kódu v jiných programech.
-
Standardní knihovny
- Standardní knihovna je soubor předpřipravených funkcí, tříd a metod, které jsou součástí jazyka.
- Umožňuje rychlé a efektivní programování bez nutnosti implementovat základní funkce (např. matematické operace, práce se soubory, řetězce, datové struktury, atd.).
- Standardní knihovny jsou součástí každého kompilátoru a jsou implementovány přímo v rámci jazyka.
-
Příklad matematické knihovny v C:
#include <stdio.h> #include <math.h> // Implementace matematické knihovny int main() { // Výpočet druhé odmocniny pomocí funkce sqrt double result = sqrt(16.0); // Vypíše druhou odmocninu z 16 printf("Druhá odmocnina z 16 je: %f\n", result); return 0; // Ukončení programu }
-
Vlastní knihovny
- Vlastní knihovny jsou knihovny, které si programátor vytvoří podle specifických potřeb projektu. Tyto knihovny mohou obsahovat užitečné funkce, které opakovaně používáte ve více programech.
-
Příklad vytvoření vlastní knihovny v C:
-
- Vytvoření knihovny: (soubor vlastni_knihovna.c):
#include <stdio.h> void hello_world() { printf("Ahoj světe!\n"); }
- Vytvoření knihovny: (soubor vlastni_knihovna.c):
-
- Vytvoření hlavičkového souboru pro knihovnu: (soubor vlastni_knihovna.h):
- Hlavičkové soubory (.h) v C/C++ slouží k deklaraci funkcí, makrodefinic, konstant a typů, které se pak používají v různých částech programu. Hlavním účelem je oddělit deklarace od implementace.
#ifndef MYLIB_H #define MYLIB_H void hello_world(); #endif
-
- Použití knihovny v jiném programu: (soubor main.c):
#include <stdio.h> #include "mylib.h" // Načtení vlastní knihovny int main() { hello_world(); // Volání funkce z vlastní knihovny return 0; // ukončení programu }
- Použití knihovny v jiném programu: (soubor main.c):
-
- Vlastní knihovny jsou knihovny, které si programátor vytvoří podle specifických potřeb projektu. Tyto knihovny mohou obsahovat užitečné funkce, které opakovaně používáte ve více programech.
Pole, třídění pole
- Pole jsou datové struktury, které umožňují ukládat více hodnot stejného typu pod jedním názvem.
- Hodnoty jsou v paměti uloženy sekvenčně a přistupuje se k nim pomocí indexu.
- Prvky v poli jsou indexovány od 0.
// Příklad pole v jazyce C.
#include <stdio.h>
int main() {
int pole[5] = {1, 2, 3, 4, 5}; // Deklarace pole o 5 prvcích
printf("%d\n", pole[2]); // Vytiskne 3 (prvek na indexu 2)
return 0;
}
3
-
Příklad Bubble Sort (bublinkové třídění) v C:
-
Bubble Sort opakovaně porovnává sousední prvky a vyměňuje je, pokud jsou ve špatném pořadí.
-
Existují rychlejší algoritmy jako QuickSort, MergeSort a další.
#include <stdio.h> // Funkce pro provedení Bubble Sortu void bubbleSort(int pole[], int velikost) { // Procházíme pole (n-1) krát for (int i = 0; i < velikost - 1; i++) { // Posouváme největší prvek na konec for (int j = 0; j < velikost - i - 1; j++) { // Pokud je prvek větší než následující, vyměníme je if (pole[j] > pole[j + 1]) { // Uložíme hodnotu prvku int temp = pole[j]; // Vyměníme prvky pole[j] = pole[j + 1]; // Nastavíme druhý prvek na uloženou hodnotu pole[j + 1] = temp; } } } } // Funkce pro výpis pole void printPole(int pole[], int velikost) { // Pro každý prvek v poli for (int i = 0; i < velikost; i++) { // Vytiskneme prvek printf("%d ", pole[i]); } // Na konec řádku přidáme nový řádek printf("\n"); } int main() { // Nesetříděné pole int pole[] = {64, 34, 25, 12, 22, 11, 90}; // Zjistíme velikost pole (počet prvků) int velikost = sizeof(pole) / sizeof(pole[0]); printf("Původní pole: "); // Vytiskneme původní pole printPole(pole, velikost); // Zavoláme funkci pro seřazení pole pomocí Bubble Sortu bubbleSort(pole, velikost); printf("Setříděné pole: "); // Vytiskneme setříděné pole printPole(pole, velikost); return 0; // Ukončení programu }Původní pole: 64 34 25 12 22 11 90 Setříděné pole: 11 12 22 25 34 64 90
-
Soubory
-
V programování jsou soubory důležitým prostředkem pro ukládání a načítání dat. * Místo toho, abychom pracovali jen s daty v paměti (např. pole nebo proměnné), můžeme je uložit na disk a později znovu načíst.
-
To se hodí např. pro:
- Ukládání konfigurací,
- Práci s databázemi,
- Logování výstupů,
- Načítání datových sad atd.
-
V jazyce C se soubory pracujeme pomocí standardní knihovny <stdio.h>, která obsahuje funkce jako
fopen,fclose,fprintf,fscanf,fread,fwriteapod. -
Příklad zápisu .txt souboru v jazyce C:
// Zápis do textového souboru v jazyce C. #include <stdio.h> int main() { // Otevření souboru pro zápis FILE *soubor = fopen("soubor.txt", "w"); if (soubor == NULL) { printf("Chyba při otevírání souboru.\n"); return 1; } // Zápis textu do souboru fprintf(soubor, "Testovací zápis do txt souboru.\n"); // Uzavření souboru fclose(soubor); return 0; } -
Příklad čtení ze souboru v jazyce C:
// Čtení textového souboru po řádcích v jazyce C. #include <stdio.h> int main() { // Otevření souboru pro čtení FILE *soubor = fopen("soubor.txt", "r"); char radek[100]; if (soubor == NULL) { printf("Soubor nelze otevřít.\n"); return 1; } // Smyčka se opakuje, dokud fgets načítá řádky (dokud není konec souboru) while (fgets(radek, sizeof(radek), soubor) != NULL) { // Výpis načteného řádku printf("Načtený řádek: %s", radek); } // Uzavření souboru fclose(soubor); return 0; }
Programovací jazyky
- Programovací jazyky jsou nástroje, které umožňují lidem komunikovat s počítači a psát instrukce, které počítač vykoná.
- Existuje spousty různých programovacích jazyků a každý z nich má jiný účel, styl a optimalizaci pro konkrétní typy aplikací.
-
Rozdělení programovacích jazyků:**
- Nízké úrovně (Low-level)
- Jsou blíže strojovému kódu a umožňují přímou manipulaci s hardwarem.
- Příklady: Assembler, C
- Vysoké úrovně (High-level)
- Jsou více abstraktní a snadněji čitelné pro člověka.
- Příklady: Python, Java, C++
- Deklarativní jazyky
- Zaměřují se na popis toho, co se má provést, místo toho, jak se to má provést.
- Příklady: SQL, Prolog, HTML
- Procedurální jazyky
- Kód je organizován do funkcí nebo procedur.
- Příklady: C, Pascal
- Objektově orientované jazyky
- Pracují s objekty, které mají vlastnosti a metody.
- Příklady: C++, Java, Python
- Funkcionální jazyky
- Založené na matematických funkcích a neměnných hodnotách.
- Příklady: Haskell, Lisp
- Skriptovací jazyky
- Používají se často k automatizaci úloh a rychlému vývoji.
- Příklady: Python, JavaScript, Bash
- Nízké úrovně (Low-level)
-
Příklady použití:
- JavaScript se nejčastěji používá pro tvorbu webových stránek a interaktivních prvků na frontendu, ale s Node.js se dá využít i na backendu.

- C++ je oblíbené pro vývoj výkonných aplikací, jako jsou hry, operační systémy nebo software pro práci s hardwarem.

- Python se využívá v oblasti datové analýzy, umělé inteligence a webového vývoje (díky frameworkům jako Django nebo Flask).

- Java je vhodná pro podnikové aplikace a mobilní vývoj na Androidu.

- PHP se stále používá pro tvorbu dynamických webů a systémů jako WordPress.

- JavaScript se nejčastěji používá pro tvorbu webových stránek a interaktivních prvků na frontendu, ale s Node.js se dá využít i na backendu.