Funkce

Funkce v programovacích jazycích mají různé fory a vlastností, ale všechny mají určitý vstup a výstup. Důvody zavedení funkcí jsou zejména:

  • zvýšení přehlednosti kódu,
  • znovupoužití kódu,
  • jednodušší úpravy a opravy prováděné na jednom místě,
  • zjednodušení ladění.

Funkce jsou hlavními „stavebními kameny“ každého programu. Funkce nejčastěji používáme k uzavření části kódu (několika instrukcí, či algoritmu) do speciálně pojmenovaného bloku, který napíšeme jednou a potom jej můžeme opakovaně volat a využívat. Princip, která nám říká, abycho nepsali týtéž věci vícekrát má v programování vlastní pojmenování a označuje se jako DRY (don't repeat yourself).

Funkce v programovacím jazyce není tou samou věcí, jak ji chápou matematici. Pohled na funkci jako matematickou funkce se uplatňuje zejména ve funkcionálním paradigmatu.

Vstup funkce

Vstupní data funkce nazýváme argumenty a výstup návratovou hodnotou. Samotná funkce pak tyto argumenty zpracovává a využívá ve výpočetním procesu. Důležitá úloha argumentů funkcí je, že nám umožňují neduplikovat podobný kód. Bylo by zbytečné psát funkce, které se liší jenom v hodnotě proměnné. Jako např.

function dveNadruhou() {
    return 2*2;
}
function petNadruhou() {
    return 5*5;
}

K tomuto účelu mají funkce argumenty, které ji zobecňují (generalizují).

function nadruhou(x) {
    return x*x;
}

Druhy funkcí

Často rozlišujeme různé druhy funkcí

Procedura

Jde o funkci, která nemá nemá návratovou hodnotu hodnotu popř. vrací typ reprezentující nic (void).

Metoda

V objektovém programování se funkce v objektu nazývají metody. Tyto funkce mají přístup ke členským proměnným objektu.

Predikátová funkce

Pojmenování vychází z logiky, kde pracujeme s výroky o kterých můžeme rozhodnout zda platí nebo neplatí. Funkce, jejiž návratový hodnota je typu boolean (true/false) tedy dává odpověď typu Ano a Ne.

Příkladem jsou funkce ve standardních knihovnách isalpha a isdigit.

Vlastnosti funkcí

Čistá funkce

Častěji se setkáte s označení pure function. Jde o funkci, která produkuje na zadaný vstup vždy stejný výsledek a nemá vedlejší efekty (side-efekty). Příkladem funkce se side-efektem je např.

  • funkce printChar vypisující postupně znaky z bufferu
  • funkce, modifikující globální proměnnou
  • operátor inkrementace a dekrementace, ++i

V čistě funkcionálním jazyku jako je třeba Haskell jsou všechny funkce čisté.

Funkce vyššího řádu

Je funkce, která dělá alespoň jednu z následujících vlastností:

  • dovoluje mít funkci jako argument,
  • funkci může mít jako návratovou hodnotu.

Všechny ostatní funkce jsou funkce prvního řádu.


Podobné


Související