Shrnutí
V této lekci jste se naučili, že:
- Funkce je pojmenovaná část kódu, kterou napíšete jednou a můžete ji spustit, kolikrát potřebujete. Když ji změníte, změna platí pro každé volání.
- Definice funkce má návratový typ, název, parametry v závorkách a tělo ve složených závorkách:
int secti(int a, int b) { ... }.voidjako návratový typ znamená, že funkce nic nevrací, a(void)v závorkách, že nic nedostává. Samotná definice nic nespustí. - Funkci zavoláte jejím názvem, argumenty v závorkách a středníkem:
vypis_caru(5);. Program začíná ve funkcimaina odtud se volají další funkce. Iprintf,strlenatoupperjsou funkce. - Překladač musí funkci znát dřív, než ji program zavolá: definujte ji nad
main, nebo nadmainnapište její prototyp, napříkladint secti(int a, int b);. Jinak dostanete chybucall to undeclared function. Hlavičkové soubory jakostdio.hobsahují prototypy funkcí z knihovny. - Parametr je proměnná v definici, argument je hodnota ve volání. Argumenty se do parametrů dosazují podle pořadí a jejich počet a typy musí k parametrům sedět.
returnvrátí hodnotu na místo volání, takže volání můžete použít jako hodnotu:int celkem = secti(2, 3) * 2;. Zároveň funkci hned ukončí. Funkce, která nenívoid, musí vrátit hodnotu ve všech případech, jinak se tady program nepřeloží. Ve funkci typuvoidjireturn;ukončí předčasně.printfhodnotu jen ukáže a program s ní dál pracovat nemůže. Funkce, která něco počítá, má výsledek vrátit a vypsání nechat na kódu, který ji zavolal.- Proměnné funkce a její parametry jsou lokální: existují jen v této funkci, a to platí i pro
main. Parametr dostane kopii argumentu, takže jeho změna nezmění proměnnou volajícího. Hodnoty se do funkce dostávají přes parametry a ven pomocíreturn. - Parametr s polem se píše
int cisla[]a funkce potřebuje ještě počet prvků jako další parametr. Funkce pracuje přímo s polem volajícího, takže její změny zůstanou. Řetězec, který funkce jen čte, jeconst char text[]a jeho konec funkce pozná podle'\0'. - Knihovna má hotové matematické funkce v
math.h:sqrt,pow,roundafabs, které vracejídouble. Funkceabspro celá čísla je vstdlib.h.
V příští lekci, o ukazatelích, zjistíte, co jsou adresy v paměti, jak může funkce změnit proměnnou kódu, který ji zavolal, a proč se pole nekopírují.
Jak psát:
Pokyny
Teď si vše procvičte. Nad main napište funkci je_sude s parametrem cislo typu int, která vrátí bool: true pro sudé číslo, jinak false (přidejte #include <stdbool.h>). Pod ni napište funkci pocet_sudych se dvěma parametry, polem cisla a jeho počtem pocet, která vrátí, kolik prvků pole je sudých. Použijte v ní je_sude. Na konci main, před return 0;, vypište výsledek pocet_sudych(cisla, POCET) s popiskem: Sudá čísla: 4.
Napište funkci prumer se stejnými dvěma parametry, která vrátí průměr prvků jako double. Pod předchozí řádek ho vypište na dvě desetinná místa: Průměr: 5.67.
Začněte programovat zdarma
12/12