ccpp:functions

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:

  • S návratovou hodnotou Taková funkce má uvedený typ návratové hodnoty (výsledku) a musí vždy uvnitř svého těla vracet hodnotu stejného datového typu pomocí příkazu return hodnota;
  • Bez návratové hodnoty Takové funkci říkáme procedura. Návratovým typem takové funkce je z pravidla void. Procedura nemusí volat příkaz return. Pokud chceme proceduru předčasně ukončit, příkaz return se volá bez hodnoty - return;

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:

  • hlavička funkce
  • tělo funkce (implementace)

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 definuje:

  • identifikátor - název funkce
  • seznam parametrů - formální parametry
  • typ návratové hodnoty

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.

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

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, ...);
// 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);
}
// Hlavička souboru
 
void pozdrav() {
  puts("Ahoj");
}
 
int main(int argc, char *argv[]) {
  pozdrav();
}
  • ccpp/functions.txt
  • Poslední úprava: 2022/04/20 11:15
  • autor: bures