Funkce (function
) nebo někdy označovány jako procedury jsou nedílnou součástí programování. Bez jejich znalosti lze říci, že nelze vytvořit žádný udržitelný velký projekt.
Funkce si lze představit jako malou část kódu, která vykonává přesně definovanou akci.
Lze také říci, že se jedná o algoritmus, jelikož funkce většinou splňuje všechny zásady algoritmu.
<aside>
💡 Před cykly je nutné si zopakovat základní části co známe o jazyku C
:
</aside>
Funkce v jazyku C
se definují podobně jako ve všech ostatních C-like
jazycích.
function
return_data_type function_name( parameter_list ) {
// kód, funkce a procedury, které chcete vykonat
}
return_data_type
− Funkce může vracet hodnotu. return_data_type
je datový typ hodnoty, kterou funkce vrací, tedy libovolný datový typ. Některé funkce provádějí požadované operace, aniž by vracely hodnotu. V takovém případě je return_data_type
klíčové slovo void
a funkce bývá označována za proceduru.function_name
− Vámi určený název funkce, v podstatě stejné jako u proměnných. Název funkce a seznam parametrů společně tvoří signaturu funkce (jak funkce vypadá). Název by se měl prezentovat akci, kterou vykonává. Takovým příkladem může být názvy up, down, drive… název volte vždy jednoznačně jako v případe proměnných.parameter_list
− Parametry jsou proměnné definované jako vstup funkce oddělené čárkou. Při volání funkce předáte parametru hodnotu. Tato hodnota se označuje jako parametr nebo argument funkce. Ve funkci si definujete u parametrů datový typ, pořadí a počet parametrů funkce. Parametry jsou nepovinné, to znamená, že funkce nemusí obsahovat žádné parametry a nebo až n parametrů.Dokonalým příkladem je funkce main()
, kterou obsahuje každý program v jazyku C
.
#include <stdio.h>
int main() {
// výpis textu
printf("Hello World!");
return 0;
}
min(...)
, max(...)
, avg(...)
..., knihovna nám zjednodušuje práci<aside> 💡 A co počet řádků ve funkci? tedy délka funkce.
Nelze říct jak by měla být funkce dlouhá, ale čím měně řádků má, tím je většinou přehlednější. Lze toho docílit používáním funkcí a procedur uvnitř dalších funkcí a procedur.
</aside>
void
funkceFunkce s návratovou hodnotou void
se často nazývají procedury!
Základní ukázkou je již zmiňovaná funkce main()
, tato funkce je základní funkcí v jazyku C
. Definice vlastních funkcí může ovšem mnoho věcí ulehčit. Bez funkci bychom museli vše psát do právě zmíněné funkce main()
, což by nebylo vůbec pohodlné skrze více a více řádků a nížkou přehlednost.
#include <stdio.h>
// definuji void - protože funkce nic nevrací
// název funkce by měl odpovídat tomu co se v ní děje
// chci předat pole znaků (name) a věk (age) pro následující použití uvnitř
void printMyData(char name[], int age) {
// použití vestavěné funkce printf po výpis dat.
printf("Ahoj, já jsem %s a je mi %d let!\\n", name, age);
}
int main() {
// volání vlstní funkce uvnitř jiné funkce, aktuálně main
printMyData("Jakub", 20); // místo proměnných to zapíši napřímo, proč bych vytvářel zbytečné proměnné navíc... když proměnné jen předává data uvnitř sebe
return 0;
}
Ukázka kódu znázorňuje definici vlastní funkce, která vypisuje data, které do ní vložíme. Konkrétně by měla vypsat data uživatele, tak jak říká název. Říkáte si proč bych to dělal? No zatím to tak nevypadá, ale co když budeme stejné data se stejným textem vypsat třeba na 4 místech v aplikaci? Ukázka kódu níže vypíše vždy to samé, jen s jiným jménem a věkem.