Obsah

Funkce (podprogram)

Funkce představuje ucelenou část programu, která se dá opakovaně volat z jiných částí programu. Funkce má přiřazený vlastní identifikátor, vstupní parametry a typ návratové hodnoty.

Nejzákladnější dva typy funkcí jsou:

Deklarace funkce

Deklaraci funkce provádíme na globální úrovni souboru se zdrojovým kódem. To znamená na stejné úrovni, jako je definovaná funkce main. Funkce musí být vždy deklarována před tím, než dojde k jejímu volání (zdrojový kód se zpracovává shora dolů). Funkci nelze deklarovat uvnitř jiné funkce.

Deklaraci funkce lze rozdělit na 2 základí části:

V některých případech je možné provést dopřednou deklaraci hlavičky funkce a implementaci uvést až později ve zdrojovém kódu. Viz příklady.

Hlavička funkce

Hlavička funkce definuje:

Tělo funkce

Tělo je tvořeno vlastním kódem funkce/procedury ve složených závorkách (blok). Pokud se jedná o funkci, která má definovaný jiný typ návratové hodnoty než void, tak musí všechny možné průchody danýmkódem končit voláním return hodnota;, kde datový typ hodnoty musí odpovídat typu návratové hodnoty v hlavičce.

Syntaxe definice funkce s návratovou hodnotou

typ_návratové_hodnoty identifikátor(typ param1, typ param2, ...) {
  // Tělo funkce
  prikaz1;
  prikaz2;
  ...
  return hodnota;
}

Volání funkce

Funkce se volá svým identifikátorem, za kterým následuje kulatá závorka se seznamem skutečných parametrů. Pokud funkce vrací výsledek (není typu void), je po jejím vykonání nahrazeno volání výsledkem.

identifikátor(param1, param2, ...);

Ukázky

Funkce absolutní hodnota

// Hlavička souboru
 
double absolutniHodnota(double cislo) {
  if (cislo < 0)
    return -cislo;
  return cislo;
}
 
int main(int argc, char *argv[]) {
  double vysl = absolutniHodnota(-42.5);
  printf("%f\n", vysl);
}

Procedura pro pozdravení

// Hlavička souboru
 
void pozdrav() {
  puts("Ahoj");
}
 
int main(int argc, char *argv[]) {
  pozdrav();
}