Volání funkcí

Aby se funkce provedla, musíte ji zavolat: napíšete její název, za něj závorky a středník. Volání funkce je příkaz. Funkce voláte z těla main:

#include <stdio.h>

void pozdrav(void) {
    printf("Ahoj!\n");
    printf("Hezký den!\n");
}

int main(void) {
    pozdrav();
    return 0;
}

Tento program vypíše:

Ahoj!
Hezký den!

Když program při provádění main narazí na volání funkce, skočí do funkce a provede její tělo shora dolů. Pak se vrátí a pokračuje příkazem za voláním. Funkci můžete zavolat, kolikrát chcete:

#include <stdio.h>

void pozdrav(void) {
    printf("Ahoj!\n");
}

int main(void) {
    printf("Začátek\n");
    pozdrav();
    pozdrav();
    printf("Konec\n");
    return 0;
}

Tento program vypíše:

Začátek
Ahoj!
Ahoj!
Konec

Program začne v main: vypíše Začátek, dvakrát provede tělo funkce pozdrav a nakonec vypíše Konec. Funkce, kterou nikdo nezavolá, se neprovede nikdy.

Volání funkcí pro vás vlastně není nic nového. I printf je funkce a každé printf("Ahoj!\n");, které jste napsali, je volání: název funkce, závorky a středník. Stejně tak strlen(jmeno) nebo toupper(pismeno) z lekce o řetězcích. Tyto funkce za vás napsal někdo jiný. Jak se o nich překladač dozví, uvidíte později v této lekci.

Pozor na dvě časté chyby:

  • Chybějící závorky. pozdrav; bez závorek funkci nezavolá. Program se přeloží, ale funkce se neprovede a nic nevypíše.
  • Jiný název. Název ve volání musí být přesně stejný jako v definici, včetně velkých a malých písmen. Když v prvním programu volání změníte na Pozdrav();, program se nepřeloží a chybová hláška začíná takto:
main.c:9:5: error: call to undeclared function 'Pozdrav'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    9 |     Pozdrav();
      |     ^
main.c:9:5: note: did you mean 'pozdrav'?

„Call to undeclared function“ znamená, že program volá funkci, kterou překladač nezná (undeclared, tedy neohlášenou). Zbytku prvního řádku porozumíte v dalším cvičení. Řádek s note (poznámka) je užitečná rada: nemysleli jste pozdrav?

Pokyny

V main zavolejte funkci vypis_gratulaci místo obou komentářů. Program pak vypíše totéž co dlouhý program v minulém cvičení, ale main je mnohem kratší.

Hra dostane třetí úroveň. Na konci main, před return 0;, vypište Úroveň 3 dokončena a ještě jednou zavolejte vypis_gratulaci.

Do těla funkce vypis_gratulaci přidejte mezi Výborně! a poslední řádek ještě jeden příkaz, který vypíše Získali jste hvězdu. Program spusťte: zpráva se změnila po všech třech úrovních. Kód jste změnili na jednom místě a všechna tři volání dělají něco nového. Přesně k tomu jsou funkce dobré.

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

2/12