<< Cykly | Obsah | Komentáre >>
Pri skúmaní metód korytnačiek sme mohli pozorovať, že niektoré metódy nielen niečo vykonajú, ale naviac aj vrátia (vypočítajú) nejakú hodnotu. Typickým príkladom takýchto metód sú getX()
, ktorá vráti x-ovú súradnicu aktuálnej pozície korytnačky, či distanceTo(double x, double y)
, ktorá vráti vzdialenosť korytnačky k bodu na súradniciach (x, y)
. Takéto metódy vracajúce nejakú hodnotu sa zvyknú označovať aj ako funkcie. V predchádzajúcich častiach sme sa už naučili vytvárať vlastné metódy pre objekty tried rozširujúcich triedu Turtle
. Tieto metódy však len vykonali nejakú postupnosť príkazov - žiadnu hodnotu nevypočítavali a nevracali.
Spôsob, ako si vytvoriť vlastnú metódu, ktorá vracia nejakú hodnotu, je v Jave veľmi jednoduchý a skladá sa z 2 fáz:
Na definovanie toho, že metóda vracia hodnotu nejakého typu, stačí zameniť slovíčko void za typ hodnoty, ktorú metóda vracia. Ak teda chceme mať metódu, ktorá vráti hodnotu typu double, jej hlavička bude vyzerať nasledovne:
Analogicky, hlavička metódy, ktorá by mala vrátiť počet deliteľov čísla n
by mohla vyzerať takto:
Ak to zosumarizujeme, tak slovíčko void za slovom public hovorí, že metóda nevracia žiadnu hodnotu. Naopak použite označenia nejakého typu (double
, int
, float
, boolean
, ...) za slovom public hovorí, že metóda vracia hodnotu daného typu.
Ostáva nám už len povedať, ako v Jave povieme, že nejaká hodnota je tou hodnotou, ktorú má vrátiť metóda. Na to, aby sme vrátili nejakú hodnotu sa používa príkaz return:
Prirodzene, ak nejaká hodnota má byť metódou vrátená, tak musí byť takého typu, ako sme povedali (definovali) v hlavičke metódy. O príkaze return je dôležité zapamätať si, že ukončuje vykonávanie metódy, t.j. žiadne ďalšie príkazy metódy sa po ňom už nevykonávajú.
Pozrime sa na niekoľko príkladov:
Čo je dôležité si pamätať:
return
ukončuje ďalšie vykonávanie príkazov metódy.
void
, musí každé svoje vykonanie skončiť príkazom return
, t.j. vrátením hodnoty
int
nemôže vrátiť reálne číslo (double
hodnotu)
return;
možno použiť v metódach vracajúcich void na okamžité ukončenie vykonávania metódy.
Metódy vracajúce (počitajúce) nejaké hodnoty môžeme celkom dobre využiť na výpočet rôznych matematicky motivovaných úloh pracujúcich s číslami. Pri riešení takýchto úloh si poväčšine vystačíme so šikovnou kombináciou pár fínt:
c
dostaneme výrazom c % 10
(pripomíname, že %
označuje zvyšok po delení)
c
, použijeme výraz c / 10
(pripomíname, že ak oba operandy sú celé čísla, tak /
reprezentuje celočíselné delenie)
cifra
za cifry čísla c
, použijeme výraz c * 10 + cifra
a
je deliteľom čísla b
, tak otestujeme, či b % a == 0
n
jednoducho otestujeme každé celé číslo medzi 1
a n
, či náhodou nie je deliteľom čísla n
Typickou úlohou, ktorá využíva vyššie uvedené finty, je výpočet ciferného súčtu. Ciferný súčet čisla 154
je 10
, lebo 1+5+4=10
. Výpočet môže postupovať takto: postupne z čísla odtrhávame poslednú cifru (lebo tú dokážeme vybrať) a odtrhnutú cifru pripočítavame k aktuálne zapamätanému súčtu cifier. Tento postup opakujeme, kým sú nejaké cifry, t.j. kým je číslo rôzne od 0
.
V Jave by sme to naprogramovali takto:
Aritmetické výrazy naberajú na svojej sile, ak už vieme používať aj zložitejšie algebraické operácie ako sú napríklad sínus, odmocnina, mocnina, zaokrúhlenie, absolútna hodnota, logaritmus a podobne. Všetky tieto operácie sú už samozrejme vytvorené. Zoznam všetkých takýchto operácií si môžete pozrieť v dokumentácii triedy Math. Okrem metód tu môžeme nájsť aj dve konštanty: Ludolfovo číslo Math.PI
a Eulerovo číslo Math.E
. Použitie je jednoduché. Povedzme, že chceme vypočítať vzdialenosť dvoch bodov v dvojrozmernom priestore podľa Pytagorovej vety.
Použijeme metódu na odmocninu Math.sqrt
a metódu na mocninu Math.pow
.