1 00:00:01,144 --> 00:00:04,568 V tomto průvodci se podíváme na něco, co už dávno používate. 2 00:00:04,595 --> 00:00:05,757 Jsou to funkce. 3 00:00:05,952 --> 00:00:09,352 Kdykoli, když používáte příkazy jako "rect", "fill" nebo "text", 4 00:00:09,782 --> 00:00:11,232 voláte funkce. 5 00:00:11,403 --> 00:00:13,993 A tyto funkce nakreslí, co jim řeknete. 6 00:00:14,744 --> 00:00:16,384 A co to vlastně funkce je? 7 00:00:16,417 --> 00:00:19,937 Je to kus kódu, který jsme dali dohromady a nějak jsme ho pojmenovali. 8 00:00:19,937 --> 00:00:23,107 A tuto funkci můžeme opakovaně používat. 9 00:00:23,884 --> 00:00:25,099 Vezměte si třeba "rect". 10 00:00:25,138 --> 00:00:26,368 Co vlastně "rect" dělá? 11 00:00:26,372 --> 00:00:28,392 Jednoduše nakreslí čtyři čáry. 12 00:00:28,577 --> 00:00:30,807 To samé bychom zvládli udělat i pomocí funkce "line". 13 00:00:31,489 --> 00:00:33,699 Vidíme, že třeba pomocí 4 takových funkcí vykreslíme obdélník. 14 00:00:34,034 --> 00:00:39,046 Je ale pravda, že obdélník budeme kreslit docela často. 15 00:00:39,385 --> 00:00:45,356 A počítat pokaždé nakreslení všech čtyř čar, to je celkem otrava. 16 00:00:45,356 --> 00:00:48,078 Namísto toho tedy máme funkci "rect". 17 00:00:48,078 --> 00:00:52,078 A ta dělá to samé, jako tyto čtyři řádky kódu. 18 00:00:52,078 --> 00:00:53,558 Ale za použití méně kódu! 19 00:00:54,958 --> 00:01:02,208 Funkce "rect" je funkcí dostupnou ve všech programech na Khan Academy. 20 00:01:02,609 --> 00:01:04,999 Můžete si ale udělat i své vlastní funkce, 21 00:01:04,999 --> 00:01:07,349 které pak můžete používat ve svých programech. 22 00:01:07,557 --> 00:01:08,487 Dám vám příklad. 23 00:01:08,711 --> 00:01:13,666 Řekněme, že chceme program, který bude opakovaně kreslit Winstona. 24 00:01:14,177 --> 00:01:16,787 Třeba bychom chtěli vyprávět Winstonův životní příběh 25 00:01:16,823 --> 00:01:19,371 A chtěli bychom ukázat každou etapu jeho života. 26 00:01:20,718 --> 00:01:23,398 Takhle by mohl vypadat počáteční Winstonův kód. 27 00:01:24,159 --> 00:01:27,100 Máme zde proměnné faceX a faceY. 28 00:01:27,100 --> 00:01:31,940 Ty označují střed obličeje, vůči kterému se vykreslí oči a ústa. 29 00:01:32,713 --> 00:01:36,313 V této chvíli program vidí kód bez jakékoli funkce. 30 00:01:36,597 --> 00:01:39,577 Program tedy kód spustí, ale pouze jednou. 31 00:01:40,873 --> 00:01:42,823 Zkusíme z toho teď udělat funkci. 32 00:01:43,397 --> 00:01:47,727 Princip je velmi podobný tomu, jak se definují proměnné. 33 00:01:47,727 --> 00:01:49,057 Už to vlastně skoro umíme. 34 00:01:49,060 --> 00:01:51,940 Napíšeme tedy "var drawWinston". 35 00:01:51,940 --> 00:01:54,490 Tedy název bude "nakresli Winstona" 36 00:01:54,490 --> 00:01:56,016 A pak napíšeme rovná se. 37 00:01:56,016 --> 00:02:05,551 Ale tady namísto čísla nebo řetězce napíšeme "function" a "prázdné závorky". 38 00:02:06,131 --> 00:02:10,844 Pak napíšeme otevřenou složenou závorku, zavřenou složenou závorku a středník. 39 00:02:11,765 --> 00:02:16,777 Teď musíme vložit všechno, co chceme ve funkci mít, 40 00:02:16,777 --> 00:02:18,887 mezi složené závorky. 41 00:02:18,954 --> 00:02:23,654 Čili vezmeme tento kód a vložíme ho do naší funkce. 42 00:02:23,654 --> 00:02:26,709 Pěkně to ještě odsadíme. 43 00:02:26,709 --> 00:02:30,218 Takže teď tady máme proměnnou, která obsahuje naši funkci. 44 00:02:30,218 --> 00:02:33,880 V podstatě jsme tento shluk kódu označili proto, 45 00:02:33,880 --> 00:02:40,079 abychom ho později během programu mohli přivolat. 46 00:02:40,600 --> 00:02:42,840 Upravili jsme si to, abychom tento kód mohli opakovaně používat. 47 00:02:43,604 --> 00:02:46,474 Ale teď si všimněte, že nám zmizel Winston! 48 00:02:46,474 --> 00:02:48,328 Ztratili jsme ho. 49 00:02:49,680 --> 00:02:51,070 Stalo se to, 50 00:02:51,070 --> 00:02:54,380 že při vložení kódu do funkce jsme našemu programu řekli: 51 00:02:54,380 --> 00:03:00,290 "Tady máš nějaký kód k přivolání, ale jenom když ti to řeknu." 52 00:03:00,803 --> 00:03:03,687 Musíme tedy programu říct, aby kód spustil. 53 00:03:03,687 --> 00:03:06,517 A to znamená, že musíme přivolat funkci. 54 00:03:06,517 --> 00:03:09,177 Úplně stejně jako s elipsami, čárami a obdélníky. 55 00:03:09,177 --> 00:03:13,089 Napíšeme název funkce "drawWinston". 56 00:03:13,749 --> 00:03:15,809 Doplníme závorky. 57 00:03:16,090 --> 00:03:17,900 A samozřejmě středník. 58 00:03:19,305 --> 00:03:20,798 A máme Winstona! 59 00:03:21,662 --> 00:03:22,822 Mně se to dost líbí! 60 00:03:22,822 --> 00:03:28,292 Vám asi úplně ne, protože náš program dělá to samé, co předtím. 61 00:03:28,716 --> 00:03:29,716 Ale v čem je to teď lepší? 62 00:03:30,141 --> 00:03:32,576 Smysl funkcí je ten, že je můžeme použít opakovaně. 63 00:03:33,516 --> 00:03:34,496 Tak pojďme na to. 64 00:03:34,496 --> 00:03:37,266 Jednoduše zkopírujeme a vložíme přivolání funkce. 65 00:03:38,232 --> 00:03:40,612 Znovu a ještě jednou. 66 00:03:41,817 --> 00:03:44,017 No, ale to pořád vypadá stejně. 67 00:03:45,223 --> 00:03:48,343 Funguje to, kreslí to několik Winstonů. 68 00:03:48,343 --> 00:03:50,883 Problémem je, že jsou všichni na tom samém místě. 69 00:03:51,093 --> 00:03:52,523 Kdybychom měli rentgen, 70 00:03:52,523 --> 00:03:55,763 ozářili bychom plátno a viděli bychom tři Winstony. 71 00:03:56,442 --> 00:03:59,162 Nevím jak vy, ale já rentgen nemám. 72 00:04:00,336 --> 00:04:03,306 Můžeme ale naši funkci trochu upravit. 73 00:04:03,306 --> 00:04:04,736 A pak už to vidět bude. 74 00:04:04,736 --> 00:04:08,741 Jak vidíte, faceX a faceY jsou vždy 202 a 208. 75 00:04:08,741 --> 00:04:11,571 To můžeme změnit použitím funkce "random". 76 00:04:11,571 --> 00:04:14,601 Určíme náhodná čísla od 50 do 350. 77 00:04:14,601 --> 00:04:16,743 Vygeneruje mi to náhodná čísla v tomto rozmezí. 78 00:04:16,743 --> 00:04:18,393 Tady uděláme to samé. 79 00:04:19,025 --> 00:04:23,025 Takže při každém přivolání funkce se generují náhodná čísla. 80 00:04:23,306 --> 00:04:28,006 Při opětovném spuštění dostaneme náhodné Winstony. 81 00:04:29,870 --> 00:04:31,414 Podle mě je to skvělý, 82 00:04:31,414 --> 00:04:34,784 protože bez funkce bychom museli napsat hromadu kódu. 83 00:04:34,784 --> 00:04:36,654 Museli bychom napsat třikrát tolik kódu. 84 00:04:38,122 --> 00:04:40,843 Pořád to ale není tak praktické, jak by to mohlo být. 85 00:04:40,843 --> 00:04:43,474 My totiž nechceme náhodné Winstony, 86 00:04:43,474 --> 00:04:46,884 ale Winstony na specifické pozici. 87 00:04:46,920 --> 00:04:48,140 Takže se těšte na příště, 88 00:04:48,140 --> 00:04:52,140 protože se naučíme něco o tom, jak naší funkci předávat parametry.