Parametr funkce

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Parametr funkce je označení pro vstupní data funkce v programování.

[editovat] Formální a skutečný parametr

Tento pojem ve skutečnosti zahrnuje dvě odlišné věci:

  • Formální parametr je parametr použitý při psaní funkce, její vnitřní proměnná. Ta je vždy před zpracováním nahrazována hodnotou skutečného parametru.
  • Skutečný parametr je proměnná nebo výraz dosazený při volání funkce. Při volání funkce je jeho hodnota přiřazena formálnímu parametru.

[editovat] Způsoby předávání parametru

Navázání skutečného parametru na formální lze dosáhnout několika odlišnými způsoby. Ve většině dnešních programovacích jazyků se používají hlavně předávání parametrů hodnotou a odkazem:

  • Při předávání hodnotou (call-by-value) se těsně před zpracováním těla funkce skutečný parametr vyčíslí a výsledek se zkopíruje do lokální proměnné uvnitř volané funkce. Jakékoli změny parametru uvnitř volané funkce nemají vliv na volající funkci, neboť se pracuje s lokální kopií, předávání hodnotou tedy lze používat pouze pro vstupní parametry. Tento způsob je typický např. při vytváření aritmetických funkcí.
  • Při předávání odkazem (call-by-reference) se formální parametr uvnitř volané funkce bere jen jako jiné označení (alias) pro proměnnou předanou jako skutečný parametr, tzn. ve volané funkci se pracuje přímo s předávanou proměnnou, nevytváří se tedy kopie (což zvláště u strukturovaných proměnných znamená zpravidla úsporu času i paměti). Volaná funkce změnou parametru ovlivňuje i volající funkci (takže předávání odkazem lze používat pro výstupní či vstupně-výstupní parametry), nevýhodou však je, že parametrem může být jen proměnná a nikoli výsledek obecného výrazu. Předávání odkazem se obvykle implementuje pomocí ukazatele na předávanou proměnnou.

Někdy se používají také o něco netradičnější způsoby předávání jako např. předání hodnotou s kopií při návratu (call-by-copy-restore) nebo předání jménem (call-by-name).

[editovat] Předávání jménem

Bylo použito např. v Algolu 60. Předávání je podobné jako při předávání referencí, ovšem hodnota proměnné se vyhodnocuje v těle funkce pokaždé.

Příklad:

procedure P(X);
integer X;
begin
    write(X);
    I:=I+1;
    write(X);
end


Při zavolání funkce:

P(A[i]);

se pak vypíší prvky v poli A na místě I a I+1.

Osobní nástroje
Jmenné prostory

Varianty
Akce
Navigace
Tisk/export
Nástroje
V jiných jazycích