V tomto průvodci se podíváme na něco,
co už dávno používate.
Jsou to funkce.
Kdykoli, když používáte
příkazy jako "rect", "fill" nebo "text",
voláte funkce.
A tyto funkce nakreslí,
co jim řeknete.
A co to vlastně funkce je?
Je to kus kódu, který jsme dali
dohromady a nějak jsme ho pojmenovali.
A tuto funkci můžeme
opakovaně používat.
Vezměte si třeba "rect".
Co vlastně "rect" dělá?
Jednoduše nakreslí
čtyři čáry.
To samé bychom
zvládli udělat i pomocí funkce "line".
Vidíme, že třeba pomocí 4 takových funkcí
vykreslíme obdélník.
Je ale pravda,
že obdélník budeme kreslit docela často.
A počítat pokaždé nakreslení
všech čtyř čar, to je celkem otrava.
Namísto toho
tedy máme funkci "rect".
A ta dělá to samé,
jako tyto čtyři řádky kódu.
Ale za použití
méně kódu!
Funkce "rect" je funkcí dostupnou
ve všech programech na Khan Academy.
Můžete si ale udělat
i své vlastní funkce,
které pak můžete
používat ve svých programech.
Dám vám příklad.
Řekněme, že chceme program,
který bude opakovaně kreslit Winstona.
Třeba bychom chtěli vyprávět
Winstonův životní příběh
A chtěli bychom ukázat
každou etapu jeho života.
Takhle by mohl vypadat
počáteční Winstonův kód.
Máme zde proměnné
faceX a faceY.
Ty označují střed obličeje, vůči
kterému se vykreslí oči a ústa.
V této chvíli program
vidí kód bez jakékoli funkce.
Program tedy kód spustí,
ale pouze jednou.
Zkusíme z toho teď
udělat funkci.
Princip je velmi podobný tomu,
jak se definují proměnné.
Už to vlastně skoro umíme.
Napíšeme tedy
"var drawWinston".
Tedy název bude "nakresli Winstona"
A pak napíšeme rovná se.
Ale tady namísto čísla nebo řetězce
napíšeme "function" a "prázdné závorky".
Pak napíšeme otevřenou složenou závorku,
zavřenou složenou závorku a středník.
Teď musíme vložit všechno,
co chceme ve funkci mít,
mezi složené závorky.
Čili vezmeme tento kód
a vložíme ho do naší funkce.
Pěkně to ještě odsadíme.
Takže teď tady máme proměnnou,
která obsahuje naši funkci.
V podstatě jsme tento shluk
kódu označili proto,
abychom ho později
během programu mohli přivolat.
Upravili jsme si to, abychom tento kód
mohli opakovaně používat.
Ale teď si všimněte, že
nám zmizel Winston!
Ztratili jsme ho.
Stalo se to,
že při vložení kódu do funkce
jsme našemu programu řekli:
"Tady máš nějaký kód k přivolání,
ale jenom když ti to řeknu."
Musíme tedy programu
říct, aby kód spustil.
A to znamená, že
musíme přivolat funkci.
Úplně stejně jako
s elipsami, čárami a obdélníky.
Napíšeme název funkce
"drawWinston".
Doplníme závorky.
A samozřejmě středník.
A máme Winstona!
Mně se to dost líbí!
Vám asi úplně ne, protože náš
program dělá to samé, co předtím.
Ale v čem je to teď lepší?
Smysl funkcí je ten,
že je můžeme použít opakovaně.
Tak pojďme na to.
Jednoduše zkopírujeme
a vložíme přivolání funkce.
Znovu a ještě jednou.
No, ale to pořád vypadá stejně.
Funguje to, kreslí to
několik Winstonů.
Problémem je, že jsou
všichni na tom samém místě.
Kdybychom měli rentgen,
ozářili bychom plátno
a viděli bychom tři Winstony.
Nevím jak vy, ale já
rentgen nemám.
Můžeme ale naši funkci
trochu upravit.
A pak už to vidět bude.
Jak vidíte, faceX a faceY
jsou vždy 202 a 208.
To můžeme změnit
použitím funkce "random".
Určíme náhodná čísla
od 50 do 350.
Vygeneruje mi to náhodná
čísla v tomto rozmezí.
Tady uděláme to samé.
Takže při každém přivolání
funkce se generují náhodná čísla.
Při opětovném spuštění
dostaneme náhodné Winstony.
Podle mě je to skvělý,
protože bez funkce
bychom museli napsat hromadu kódu.
Museli bychom napsat
třikrát tolik kódu.
Pořád to ale není tak
praktické, jak by to mohlo být.
My totiž nechceme
náhodné Winstony,
ale Winstony na
specifické pozici.
Takže se těšte na příště,
protože se naučíme něco o tom,
jak naší funkci předávat parametry.