Definice funkcí
V této lekci se naučíte psát vlastní funkce. Začněme problémem. Hra po každé dokončené úrovni vypíše stejnou zprávu. Program v editoru to dělá pro dvě úrovně:
#include <stdio.h>
int main(void) {
printf("Úroveň 1 dokončena\n");
printf("==========\n");
printf("Výborně!\n");
printf("==========\n");
printf("Úroveň 2 dokončena\n");
printf("==========\n");
printf("Výborně!\n");
printf("==========\n");
return 0;
}Funguje to, ale stejné tři řádky jsou v programu dvakrát. Skutečná hra má sto úrovní. Představte si, že tyto řádky píšete stokrát! A kdybyste chtěli zprávu změnit, museli byste ji měnit na sto místech a jedno byste určitě přehlédli.
Programátoři se snaží kód neopakovat. Část, která se opakuje, napíší jen jednou, dají jí název a pak ji používají všude, kde ji potřebují. Takové pojmenované části kódu se říká funkce. Dobrý název navíc říká, co kód dělá, takže se program lépe čte.
Jednu funkci ve skutečnosti píšete už od první lekce: main. Řádkem int main(void) { začíná definice funkce s názvem main a příkazy mezi složenými závorkami jsou její tělo. Když program spustíte, začne se provádět právě funkce main. Vlastní funkci definujete podobně:
void pozdrav(void) {
printf("Ahoj!\n");
printf("Hezký den!\n");
}Definice funkce má tyto části:
void(anglicky prázdný) je návratový typ. Říká, že funkce nevrací žádnou hodnotu. Jen něco udělá: tady vypíše dva řádky. Funkce, které hodnotu vracejí, budete psát později v této lekci.- Název funkce, tady
pozdrav. Platí pro něj stejná pravidla jako pro názvy proměnných: písmena bez diakritiky, číslice a_, žádné mezery a záleží na velkých a malých písmenech. Víceslovné názvy píšeme s podtržítky (snake_case), napříkladvypis_gratulaci. Vyberte název, který říká, co funkce dělá. - Závorky se slovem
voiduvnitř. Tadyvoidznamená, že funkce nedostává žádné hodnoty. Co dalšího může být v závorkách, zjistíte za chvíli. - Tělo funkce ve složených závorkách
{ }, odsazené o 4 mezery stejně jako tělomain. Obsahuje příkazy, které funkce provede.
Funkci napište nad main, ne dovnitř. V jazyce C nemůže být definice funkce uvnitř jiné funkce. Když ji napíšete do těla main, program se nepřeloží a překladač ohlásí chybu error: function definition is not allowed here (definice funkce tady není povolená).
Když program s novou funkcí spustíte, vypíše pořád jen to, co vypisuje main. To není chyba! Definice jen říká, co má funkce dělat, podobně jako recept zapsaný v kuchařce: zatím nikdo nic neuvařil. V dalším cvičení funkci spustíte.
Jak psát:
Pokyny
Nad main, místo komentáře, definujte funkci void vypis_gratulaci(void). Její tělo vypíše tři řádky zprávy: ==========, Výborně! a ==========. Pak program spusťte: vypíše pořád totéž co předtím, protože funkci zatím nikdo nezavolal. Tak to má být.
Začněte programovat zdarma
1/12