Metody
2. Deklarace metody s výstupem a bez parametrů
Deklarace
metody s návratem (výstupem) v jazyce C# vypadá bez parametrů (bez argumentů metody) obecně takto:
návratovýDatovýTyp identifikátorMetody( )
{
//Tělo metody - zde jsou umístěny příkazy oddělené středníkem
return výstup;
}
kde:
- návratovýDatovýTyp - určuje, jaký datový typ vrací metoda jako výsledek, např. int, float apod. Pokud metoda nenavrací žádný výsledek, místo návratového datového typu píšeme klíčové slovo void
- identifikátorMetody - určuje název metody, lépe řečeno její identifikátor. Pro identifikátor platí jistá pravidla, která jsme si definovali dříve (používáme Velbloudí notaci)
- Tělo metody - je zapsáno mezi složené závorky. Příkazy uvnitř těla metody jsou řádky kódu oddělené středníkem. Tyto příkazy jsou prováděny, když je metoda spuštěna – volána. V těle metody, se mohou používat všechny objekty existující vně metody (třídní proměnné) a jejichž deklarace předcházejí deklaraci metody. Pomocí takových objektů (tzv. nelokálních objektů) může procedura komunikovat s okolím (tj. s jinými částmi programu). Uvnitř složeného příkazu jsou tzv. lokální deklarace, např. proměnných, které platí pouze pro metodu a nemají žádný účinek vně metody a ani tam nejsou známy. Lokální deklarace se často používají pro pomocné proměnné určené pro uložení mezivýsledků nebo pro řídící proměnné cyklů
- return - klíčové slovo pomocí něhož přiřazujeme výstup deklarované metodě
- výstup - výstup deklarované metody
Ilustrativní příklad SectiHodnotyBezParametru
Algoritmus SectiHodnotyBezParametru
- Popis: Vývojový diagram podprogramu navracející součet hodnot dvou lokálních proměnných
- Zadání: Zkuste vymyslet, jak byste zaznamenali v podprogramu součet hodnot dvou lokálních proměnných x a y, kde proveďte inicializaci proměnných x = 7 a y = 2. Z tohoto podprogramu bude vystupovat hodnota součtu. Tento program bude volán z hlavního programu
Jak jste si zřejmě všimli, v mezní značce podprogramu nejsou podprogramu předány žádné vstupní parametry - viz Obrázek 1. V tomto případě představuje podprogram funkci s celočíselným návratem v podobě hodnoty uložené v lokální proměnné z (tři tečky představují tělo podprogramu, tj. příkazy, výrazy, atd. uvedené ve vývojovém diagramu algoritmu SectiHodnotyBezParametru).

Obrázek 1: Deklarace podprogramu SectiHodnotyBezParametru - funkce bez vstupu a s výstupem
Na základě vývojového diagramu SectiHodnotyBezParametru vytvoříme v konzolové aplikaci program, na kterém si vysvětlíme deklaraci metody s návratem (výstupem) a bez předání parametrů.
Program SectiHodnotyBezParametru
- Popis: Metoda navracející součet hodnot dvou lokálních proměnných
- Zadání: Vymyslete, jak byste v C# naprogramovali podprogram SectiHodnotyBezParametru jako konzolovou aplikaci
- Řešení: Bude postupně probráno v následujícím textu a finální verze řešení bude zobrazeno v další kapitole
Podívejme
se na příklad zdrojového kódu metody (funkce) SectiHodnotyBezParametru, kde jsou sečteny hodnoty dvou lokálních
celočíselných proměnných x a y – viz Kód 1.
//Deklarace statické metody s celočíselným výstupem a třemi lokálními proměnnými static int SectiHodnotyBezParametru() { //Deklarace lokálních celočíselných proměnných int x; int y; int z; //Inicializace proměnných x = 7; y = 2; //Součet hodnot lokálních proměnných a uložení do proměnné z = x + y; //Návrat - výstup metody je součet hodnot lokálních proměnných - hodnota v proměnné return z; }
Kód 1: Příklad deklarace metody se třemi lokálními
proměnnými a celočíselným výstupem
Metodu jsme označili jako statickou (klíčové slovo static), protože jsme ji chtěli volat ze statické metody Main, která představuje metodu vykonávanou v programu jako první. Zatím je zbytečné vysvětlovat podstatu statické metody, protože jsme se nedostali k definici třídy (statická metoda není závislá na konkrétní instanci třídy, ale přistupujeme k ní v rámci celé třídy). Berme prozatím, že pokud voláme danou metodu ze statického metody Main, musíme označit danou metodu jako statickou klíčovým slovem static. Všechny lokální proměnné jsou datového typu int (celé číslo). Lokální proměnnou x jsme inicializovali hodnotou 7 a lokální proměnnou y jsme inicializovali hodnotou 2 přímo v části jejich deklarace. U metody chceme, aby výsledek získaný součtem obou hodnot uložených v proměnných byl předán dále do metody, která danou metodu spustila. Použijeme proto klíčové slovo return, které nám zajistí výstup součtu z metody, který je uložen v z. Datový typ výsledku musí být vždy shodný s datovým typem uváděným před názvem metody, což v našem případě vyhovuje – datový typ int.
Pro součet dvou hodnot uložených v proměnných můžeme využít úspornějšího přístupu, kdy lze ve zdrojovém kódu přímo deklarovat a inicializovat proměnné a zároveň není zapotřebí deklarovat pomocnou proměnnou z, která nám sloužila pro uložení hodnoty součtu. Výraz x
+ y lze přímo přiřadit výstupu naší metody, tzn. můžeme výraz umístit za klíčové slovo return - viz Kód 2. Výraz x
+ y bychom mohli také uzavřít do kulatých závorek.
//Deklarace statické metody s celočíselném výstupem a dvěma lokálními proměnnými static int SectiHodnotyBezParametru() { //Deklarace lokálních celočíselných proměnných včetně inicializace int x = 7, y = 2; //Návrat - výstup metody je součet hodnot lokálních proměnných return x + y; }
Kód 2: Příklad deklarace metody se dvěma lokálními
proměnnými a celočíselným výstupem