Lekce 1.17
Deklarace a pou₧φvßnφ funkcφ


p°edchozφ lekce (1.16) obsah kurzu nßsledujφcφ lekce (1.18)

V p°edchozφ lekci jsme si ukßzali, jak si nadefinovat vlastnφ p°φkaz ve form∞ podprogramu. Mnohdy by ale bylo v²hodnΘ, pokud by jsme mohli volat podprogram jako souΦßst v²razu tak, aby nßm vrßtil podprogram v²sledek, se kter²m byste ve v²razu dßle pracovali. N∞co takovΘho je sice mo₧nΘ, pou₧φvajφ se k tomu ale funkce.

Funkce je definovanß Φßst programu, kterß je volanß z v²razu a provßdφ urΦitΘ v²poΦty, p°φpadn∞ akce. P°i ukonΦenφ funkce nßm vracφ po₧adovan² v²sledek, se kter²m se ve v²razu, odkud byla funkce volßna dßle pracuje. Uve∩me si proto p°φklad deklarace a pou₧itφ funkce v programu, kter² nßm provßdφ v²poΦet mocniny zadan²m exponentem (53 = 5 x 5 x 5, v²sledek je 125).


Function Umocni(x, y)
   v = x           'p°evezmeme zßklad
   For k = 1 to y
       v = v*x     'nßsobφme opakovan∞ zßkladem
   Next
   Umocni = v      'p°edßme v²sledku funkce
End Function

Sub Main()
    ConsoleClear
    ConsoleShow
    Writeln(Umocni(2,9))  'vypφÜe hodnotu 1024
    Writeln(Umocni(3,3))  'vypφÜe hodnotu   81
    Writeln(Umocni(5,2))  'vypφÜe hodnotu  125
End Sub
Funkce se od podprogramu liÜφ sv²m zahßjenφm a ukonΦenφm, kdy je v²poΦet funkce uveden klφΦov²m slovem Function. PoΦet deklarovan²ch prom∞nn²ch v podprogramu i funkci musφ v₧dy odpovφdat poΦtu p°edßvan²ch parametr∙ ve volßnφ podprogramu, p°φpadn∞ funkci. Parametry jsou od sebe odd∞leny Φßrkou. Funkce musφ b²t v₧dy ukonΦena p°φkazem End Function.

Ve funkci je automaticky deklarovßna prom∞nnß se jmΘnem funkce. Ta slou₧φ pro p°edßnφ v²slednΘ hodnoty nad°azenΘmu programu. Uklßdßme do nφ tedy v programu hodnotu, kterou chceme p°edat volanΘmu programu. Nap°φklad:


Jmeno = v²raz
P°i programovßnφ funkcφ si musφte dßt pozor na to, abyste v rßmci funkce nepo₧adovali provedenφ stejnΘ funkce. Takov²m funkcφm se °φkß rekurzivnφ volßnφ. Vyu₧φvajφ se nap°φklad p°i v²poΦtu faktorißlu nebo znßm²ch hanojsk²ch v∞₧φ. Rekurze nejsou v systΘmu BOANANZA umo₧n∞ny.
p°edchozφ lekce (1.16) obsah kurzu nßsledujφcφ lekce (1.18)

OZOGAN, 1 Mßje 97, 460 01 Liberec
tel.,fax: (048) 52 28 338, e-mail: info@ozogan.cz