Funkce a její parametry
C++ 11

image_printTisk

V tomto článku si blíže vysvětlíme pojem funkce v C++, seznámíme se s jejím syntaktickým zápisem včetně zápisu formálních parametrů a dále bude vysvětleno, jak se z funkcí provádí vracení hodnot.

Význam funkcí v jakémkoliv programovacím jazyce by měl čtenář intuitivně chápat jako “podprogramy”. Z nich se pak hierarchicky skládají další “podprogramy” na vyšší abstraktní úrovni až po hlavní, již zmíněnou funkci main sloužící jako vstupní bod programu. Toto je základní myšlenka strukturovaného programování. Podrobnější vysvětlení tohoto tématu je ale nad rámec těchto stránek.

Ukažme si nyní na příkladu, jak se syntakticky zapisuje nějaká funkce.

int mocnina(int argument, int exponent) {
    // Vlastní kód funkce
}

Definice funkce na výše uvedeném příkladu začíná uvedením datového typu návratové hodnoty. Po něm následuje identifikátor reprezentující název funkce. Za identifikátorem bývá zpravidla v kulatých závorkách uveden seznam formálních parametrů oddělených čárkami. Deklarace formálního parametru se skládá opět z jeho datového typu a názvu. Za seznamem formálních parametrů se pak již nachází ve složených závorkách vlastní blok výkonného kódu funkce.

Jsou samozřejmě situace, kdy nepotřebujeme vracet z funkce žádnou hodnotu. V takovém případě se uvádí na místě datového typu návratové hodnoty klíčové slovo void. Toto slovo je v jazyce C++ ve své podstatě chápáno významově jako “žádná hodnota” či “bez hodnoty”. Ukažme si takto definovanou funkci na následujícím příkladě.

void podprogram() {
    // Vlastní kód
}

Na příkladu je funkce nevracející žádnou hodnotu s názvem podprogram. Dále stojí za povšimnutí, že pokud funkce nemá žádné formální parametry, je nutné uvést jen kulaté závorky bez jakéhokoliv obsahu.

Nyní přejdeme ke dvěma tématům, a to je vracení hodnot z funkcí a jejich volání z funkcí jim nadřazených. K ukončení běhu funkce slouží příkaz return. Pak dle toho, jestli je funkce deklarována s návratovým typem void nebo ne, uvedeme za klíčovým slovem return výraz odpovídající návratovému typu, anebo v případě deklarace void jen středník. Ukažme si použití příkazu return na příkladu.

#include <iostream>
using namespace std;

int mocnina(int argument, int exponent) {
    int vysledek = 1;
    for(int i = 0; i < exponent; i++) {
        vysledek *= argument;
    }
    return vysledek;
}

int main() {
    int argument, exponent;
    cout << "Zadejte argument mocniny:";
    cin >> argument;
    cout << "Zadejte exponent:";
    cin >> exponent;

    int vysledek = mocnina(argument, exponent);

    cout << "Výsledek mocniny je: " << vysledek << endl;

    return 0;
}

Na příkladu je funkce jménem mocnina, která, jak již její název napovídá, provádí výpočet mocniny celočíselných argumentů. Posledním příkazem této funkce je právě vrácení výsledku pomocí příkazu return. V hlavní funkcí main napřed získáme vstup od uživatele a pak vyvoláme výpočet zavoláním funkce mocnina. Pro vyvolání funkce stačí zapsat jen její název a v kulatých závorkách uvedeme seznam výrazů, po jejichž vyhodnocení jsou výsledky předány na vstup volané funkci jako hodnoty formálních parametrů. V závěru příkladu je výsledek volané funkce přiřazen do proměnné vysledek a vypsán na textovou konzoli.

Na závěr ještě doplníme informaci, že lze u deklarace funkce definovat i výchozí hodnoty formálních parametrů. V takovém případě pak není nutné při volání dané funkce uvádět hodnotu pro daný parametr, neboť je po té použita definovaná výchozí hodnota. Je důležité mít ale na paměti, že výchozí hodnoty formálních parametrů lze definovat jen od konce seznamu uvedených v definici funkce, stejně tak jako lze vynechávat hodnoty argumentů funkce při jejím volání jen na konci. Ukažme si vše na příkladu.

// Korektní definice
int f1(int a, int b = 1) {

}
// CHYBA: parametr c nemá výchozí hodnotu
int f2(int a, int b = 1, int c) {

}

V případě funkce f1 je definice korektní. V případě funkce f2 chybí výchozí hodnota pro parametr c. Důvodem je, že při volání funkce f2 s jedním parametrem by překladač “nevěděl”, jakou hodnotu pro parametr c použít.

Ukažme si nyní jeden reálný příklad pro výchozí hodnoty parametrů funkcí.

TODO PŘÍKLAD PRO VÝCHOZÍ PARAMETRY

image_printTisk
Funkce a její parametry
C++ 11
Ohodnoťte tento článek

Související články

  • Reference V tomto článku si vysvětlíme nový prvek jazyka C++, a to jsou reference. Jejich funkce je obdobná jako u ukazatelů, jsou tu avšak určité rozdíly, které je třeba mít na paměti. Jak […]
  • Lambda funkce Tento článek popisuje nový syntaktický zápis funkcí a různých operací. Tento zápis se nazývá lambda funkce nebo lambda výrazy a je primárně určen pro předávání operací jako argument do […]
  • Metody předávání hodnot argumentů funkcím Tento článek pojednává o způsobech či metodách, jak lze předávat hodnoty argumentů volaným funkcím. V zásadě existují dva přístupy. Prvním je předání hodnotou, druhým je předání […]
  • Komentáře Tento článek pojednává o způsobu zápisu komentářů ve zdrojových kódech jazyka C++. Budou popsány oba druhy komentářů, tedy jednořádkové i jejich víceřádková varianta. Použití […]
  • Aritmetické operátory Tento článek by měl čtenáři nastínit používání základních aritmetických operátorů v jazyce C++. Je dobré upozornit, že C++ disponuje širší sadou operátorů, než se třeba pojednává ve […]
  • Organizace dat v paměti RAM Tento článek poskytuje teoretický úvod do způsobu uspořádání paměti aplikace. Seznámíme se s jednotlivými bloky paměti a jejich významem a dále bude výklad stručně doplněn o téma […]