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) { ... }. void jako 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 funkci main a odtud se volají další funkce. I printf, strlen a toupper jsou funkce.
  • Překladač musí funkci znát dřív, než ji program zavolá: definujte ji nad main, nebo nad main napište její prototyp, například int secti(int a, int b);. Jinak dostanete chybu call to undeclared function. Hlavičkové soubory jako stdio.h obsahují 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.
  • return vrá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 typu void ji return; ukončí předčasně.
  • printf hodnotu 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, je const char text[] a jeho konec funkce pozná podle '\0'.
  • Knihovna má hotové matematické funkce v math.h: sqrt, pow, round a fabs, které vracejí double. Funkce abs pro celá čísla je v stdlib.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í.

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

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

12/12