0:00:01.144,0:00:04.568 V tomto průvodci se podíváme na něco,[br]co už dávno používate. 0:00:04.595,0:00:05.757 Jsou to funkce. 0:00:05.952,0:00:09.352 Kdykoli, když používáte[br]příkazy jako "rect", "fill" nebo "text", 0:00:09.782,0:00:11.232 voláte funkce. 0:00:11.403,0:00:13.993 A tyto funkce nakreslí,[br]co jim řeknete. 0:00:14.744,0:00:16.384 A co to vlastně funkce je? 0:00:16.417,0:00:19.937 Je to kus kódu, který jsme dali[br]dohromady a nějak jsme ho pojmenovali. 0:00:19.937,0:00:23.107 A tuto funkci můžeme [br]opakovaně používat. 0:00:23.884,0:00:25.099 Vezměte si třeba "rect". 0:00:25.138,0:00:26.368 Co vlastně "rect" dělá? 0:00:26.372,0:00:28.392 Jednoduše nakreslí[br]čtyři čáry. 0:00:28.577,0:00:30.807 To samé bychom[br]zvládli udělat i pomocí funkce "line". 0:00:31.489,0:00:33.699 Vidíme, že třeba pomocí 4 takových funkcí[br]vykreslíme obdélník. 0:00:34.034,0:00:39.046 Je ale pravda,[br]že obdélník budeme kreslit docela často. 0:00:39.385,0:00:45.356 A počítat pokaždé nakreslení[br]všech čtyř čar, to je celkem otrava. 0:00:45.356,0:00:48.078 Namísto toho[br]tedy máme funkci "rect". 0:00:48.078,0:00:52.078 A ta dělá to samé,[br]jako tyto čtyři řádky kódu. 0:00:52.078,0:00:53.558 Ale za použití[br]méně kódu! 0:00:54.958,0:01:02.208 Funkce "rect" je funkcí dostupnou [br]ve všech programech na Khan Academy. 0:01:02.609,0:01:04.999 Můžete si ale udělat[br]i své vlastní funkce, 0:01:04.999,0:01:07.349 které pak můžete[br]používat ve svých programech. 0:01:07.557,0:01:08.487 Dám vám příklad. 0:01:08.711,0:01:13.666 Řekněme, že chceme program, [br]který bude opakovaně kreslit Winstona. 0:01:14.177,0:01:16.787 Třeba bychom chtěli vyprávět[br]Winstonův životní příběh 0:01:16.823,0:01:19.371 A chtěli bychom ukázat[br]každou etapu jeho života. 0:01:20.718,0:01:23.398 Takhle by mohl vypadat[br]počáteční Winstonův kód. 0:01:24.159,0:01:27.100 Máme zde proměnné[br]faceX a faceY. 0:01:27.100,0:01:31.940 Ty označují střed obličeje, vůči [br]kterému se vykreslí oči a ústa. 0:01:32.713,0:01:36.313 V této chvíli program [br]vidí kód bez jakékoli funkce. 0:01:36.597,0:01:39.577 Program tedy kód spustí,[br]ale pouze jednou. 0:01:40.873,0:01:42.823 Zkusíme z toho teď[br]udělat funkci. 0:01:43.397,0:01:47.727 Princip je velmi podobný tomu,[br]jak se definují proměnné. 0:01:47.727,0:01:49.057 Už to vlastně skoro umíme. 0:01:49.060,0:01:51.940 Napíšeme tedy[br]"var drawWinston". 0:01:51.940,0:01:54.490 Tedy název bude "nakresli Winstona" 0:01:54.490,0:01:56.016 A pak napíšeme rovná se. 0:01:56.016,0:02:05.551 Ale tady namísto čísla nebo řetězce[br]napíšeme "function" a "prázdné závorky". 0:02:06.131,0:02:10.844 Pak napíšeme otevřenou složenou závorku,[br]zavřenou složenou závorku a středník. 0:02:11.765,0:02:16.777 Teď musíme vložit všechno,[br]co chceme ve funkci mít, 0:02:16.777,0:02:18.887 mezi složené závorky. 0:02:18.954,0:02:23.654 Čili vezmeme tento kód[br]a vložíme ho do naší funkce. 0:02:23.654,0:02:26.709 Pěkně to ještě odsadíme. 0:02:26.709,0:02:30.218 Takže teď tady máme proměnnou,[br]která obsahuje naši funkci. 0:02:30.218,0:02:33.880 V podstatě jsme tento shluk [br]kódu označili proto, 0:02:33.880,0:02:40.079 abychom ho později[br]během programu mohli přivolat. 0:02:40.600,0:02:42.840 Upravili jsme si to, abychom tento kód[br]mohli opakovaně používat. 0:02:43.604,0:02:46.474 Ale teď si všimněte, že [br]nám zmizel Winston! 0:02:46.474,0:02:48.328 Ztratili jsme ho. 0:02:49.680,0:02:51.070 Stalo se to, 0:02:51.070,0:02:54.380 že při vložení kódu do funkce[br]jsme našemu programu řekli: 0:02:54.380,0:03:00.290 "Tady máš nějaký kód k přivolání,[br]ale jenom když ti to řeknu." 0:03:00.803,0:03:03.687 Musíme tedy programu[br]říct, aby kód spustil. 0:03:03.687,0:03:06.517 A to znamená, že[br]musíme přivolat funkci. 0:03:06.517,0:03:09.177 Úplně stejně jako[br]s elipsami, čárami a obdélníky. 0:03:09.177,0:03:13.089 Napíšeme název funkce[br]"drawWinston". 0:03:13.749,0:03:15.809 Doplníme závorky. 0:03:16.090,0:03:17.900 A samozřejmě středník. 0:03:19.305,0:03:20.798 A máme Winstona! 0:03:21.662,0:03:22.822 Mně se to dost líbí! 0:03:22.822,0:03:28.292 Vám asi úplně ne, protože náš[br]program dělá to samé, co předtím. 0:03:28.716,0:03:29.716 Ale v čem je to teď lepší? 0:03:30.141,0:03:32.576 Smysl funkcí je ten, [br]že je můžeme použít opakovaně. 0:03:33.516,0:03:34.496 Tak pojďme na to. 0:03:34.496,0:03:37.266 Jednoduše zkopírujeme[br]a vložíme přivolání funkce. 0:03:38.232,0:03:40.612 Znovu a ještě jednou. 0:03:41.817,0:03:44.017 No, ale to pořád vypadá stejně. 0:03:45.223,0:03:48.343 Funguje to, kreslí to[br]několik Winstonů. 0:03:48.343,0:03:50.883 Problémem je, že jsou[br]všichni na tom samém místě. 0:03:51.093,0:03:52.523 Kdybychom měli rentgen, 0:03:52.523,0:03:55.763 ozářili bychom plátno[br]a viděli bychom tři Winstony. 0:03:56.442,0:03:59.162 Nevím jak vy, ale já[br]rentgen nemám. 0:04:00.336,0:04:03.306 Můžeme ale naši funkci[br]trochu upravit. 0:04:03.306,0:04:04.736 A pak už to vidět bude. 0:04:04.736,0:04:08.741 Jak vidíte, faceX a faceY[br]jsou vždy 202 a 208. 0:04:08.741,0:04:11.571 To můžeme změnit[br]použitím funkce "random". 0:04:11.571,0:04:14.601 Určíme náhodná čísla[br]od 50 do 350. 0:04:14.601,0:04:16.743 Vygeneruje mi to náhodná[br]čísla v tomto rozmezí. 0:04:16.743,0:04:18.393 Tady uděláme to samé. 0:04:19.025,0:04:23.025 Takže při každém přivolání[br]funkce se generují náhodná čísla. 0:04:23.306,0:04:28.006 Při opětovném spuštění[br]dostaneme náhodné Winstony. 0:04:29.870,0:04:31.414 Podle mě je to skvělý, 0:04:31.414,0:04:34.784 protože bez funkce[br]bychom museli napsat hromadu kódu. 0:04:34.784,0:04:36.654 Museli bychom napsat[br]třikrát tolik kódu. 0:04:38.122,0:04:40.843 Pořád to ale není tak[br]praktické, jak by to mohlo být. 0:04:40.843,0:04:43.474 My totiž nechceme[br]náhodné Winstony, 0:04:43.474,0:04:46.884 ale Winstony na[br]specifické pozici. 0:04:46.920,0:04:48.140 Takže se těšte na příště, 0:04:48.140,0:04:52.140 protože se naučíme něco o tom,[br]jak naší funkci předávat parametry.