Tak jsme zpátky s naším programem.
Ten používá funkci k malování čtyř Winstonů.
Změnila jsem ho trošku.
Nyní ukazuje skutečný věk v určitém bodě života.
Brzy uvidíte proč.
Nejdříve Vám musím něco říct o Winstonovi.
Winston má závislost na koblihách.
Jí je 3x denně.
Pravděpodobně díky tomu je jeho obličej tak velký a žlutý.
Jak varovat Winstona, že jsou pro něj koblihy špatné?
Musíme tento program trochu upravit.
A to tak, aby ukázal kolik koblih snědl v každém bodě jeho života.
Například, když mu byly dva roky, což znamená, že jich snědl 3x365x2.
Zobrazíme si to pod tímto nadpisem.
Dva tisíce koblih, to je hodně koblih za dva roky.
Nyní mu je 14 let, podívejme, 3 krát 365 krát 14.
Správně, to je 15 000 koblih.
Mohli bychom nadále takto počítat, ale všimněte si určitého vzoru.
Opakuji stále můj výpočet a jedinou věc, kterou měním je počet let.
Kdykoliv vidím opakující se kód, jako je tento.
Pomyslím si, "Hm, mohu z toho udělat funkci?"
Ano určitě můžeme. Tak pojďme na to.
Definuji zde moji funkci.
Nazvu ji calcTotalDonuts = function.
Dáme jí jeden parametr a to počet let.
Je to totiž jediná věc, jenž měníme.
A to pokaždé, když děláme tento výpočet.
Uvnitř provedeme výpočet.
Tento výpočet uložíme do proměnné, takže to bude 3x 365x numYears.
Správně, nyní máme funkci.
Nahradím zde tento výraz výrazem calcTotalDonuts s parametrem 2.
Dobře, nyní nevidíme žádný celkový počet.
Co se stalo?
Naše funkce zde spočítala celkový počet.
Problém je, že o tom nikomu neřekla.
Je to jako, když se Vás učitelka na něco zeptá.
A odpověď je u Vás v hlavě.
Prostě se stydíte odpovědět.
Odpověděli jste, ale Vaše učitelka se o tom nikdy nedozví.
Pokud má funkce něco vracet, tak musí mít definovanou návratovou hodnotu.
K definování této hodnoty stačí napsat return a to co chceme ukázat.
Může to být proměnná nebo hodnota nějakého výrazu.
Pro náš příklad budeme vracet totalDonuts.
Tedy kdokoliv zavolá tuto funkci, dostane tuto odpověď.
Nyní se již naše hodnota zobrazuje.
Můžeme naší funkci zkrátit.
Nemusíme ji ukládat do proměnné.
Celý výraz vložíme do return.
Nyní je to na jednom řádku.
Dále spočítáme celkový počet koblih.
Uděláme to pomocí zavolání této funkce s počtem let.
Podívejte, je to calcTotalDonuts(25), poté calcTotalDonuts(65).
Tedy pokud by mu bylo 65 let, tak by snědl 70 000 koblih a to je dost.
Nemyslím si, že by toho byl Winston schopen.
Nyní je to funkce a je snadné měnit její části.
Například kdyby to viděl Winston a řekl:
"Páni, to je až moc. Co kdybych jedl jednu denně?"
Dobře, stačí změnit pouze jedno číslo.
Tím se vše změní.
Výsledek je 23 000. Stále dost. Možná by Winston řekl:
"Dobře, dobře, tak co kdybych jedl jen jednu týdně?"
Ano, to je již rozumné.
Stačí jen změnit 365 na 50, protože rok má 50 týdnů.
Je to lepší? 3000 koblih se zdá již jako rozumné množství.
Takže jak vidíte s funkcemi a návratovými hodnotami můžeme zachránit kód a životy.