C je minimalistický jazyk. Poskytuje pouze základní programovací nástroje. Máte proměnné, smyčky a řízení toku. To je vše. Pokud potřebujete číst vstup z klávesnice nebo zobrazovat data na obrazovce, C pro to nemá vestavěné funkce. Musíte je napsat sami nebo použít knihovny.
To je důvod, proč jsou knihovny v C tak důležité. Jedná se o části kódu, které programátoři extrahují ze svých projektů, aby je bylo možné znovu použít. Je pravděpodobné, že jste již použili standardní I/O knihovnu nebo stdio, aniž byste o tom přemýšleli. Ale kromě toho existují knihovny pro práci s matematikou, strunami a časem. Můžete si také vytvořit vlastní.
Rozdělení kódu do modulů usnadňuje testování, ladění a porozumění. To také umožňuje opětovné použití logiky v různých programech. Podívejme se, jak vzít monolitický skript a přeměnit část jeho kódu na přenosnou funkci.
Získávání logiky z monolitu
Zvažte následující program C. Vyplní pole náhodnými čísly, seřadí je pomocí algoritmu bublinového třídění a vytiskne výsledky.
Logika řazení je zde skryta uvnitř main. Aby to bylo znovu použitelné, musíme extrahovat bublinové třídění.
Vytvořte základní funkci
V tomto příkladu jsou pole a a konstanta MAX globální. To znamená, že funkce řazení nutně nevyžaduje parametry pro přístup k nim. Dobrá programátorská praxe však diktuje použití lokálních proměnných pro čítače smyček (x, y, t ), aby byla funkce samostatná.
Zde je refaktorovaný kód. Logiku třídění jsme izolovali do funkce bubble_sort.
Počet prvků předáváte bubble_sort místo pevně zakódovaného MAX. Funguje to. Ale kód je stále vázán na globální pole a.
Zobecnění pro skutečnou znovupoužitelnost
Funkce je skutečně znovu použitelná pouze tehdy, pokud nezávisí na globálním stavu. bubble_sort můžeme zobecnit ještě dále předáním samotného pole jako parametru.
Změňte podpis funkce na:
To říká kompilátoru, aby přijal pole celých čísel libovolné velikosti. Tělo funkce bubble_sort se nemění. Musíte pouze aktualizovat hovor v main :
Všimněte si, že ve volání funkce nepoužíváme &a. Možná očekáváte předání adresy, protože řazení modifikuje pole, ale v C jsou pole převedena na ukazatele, když

















