1 00:00:01,061 --> 00:00:05,708 Pomówmy o czymś, czego cały czas używacie: o funkcjach. 2 00:00:05,808 --> 00:00:09,440 Używając poleceń „rect”, „fill” czy „text”, 3 00:00:09,540 --> 00:00:14,674 przywołujecie funkcje, a one rysują to, co każecie. 4 00:00:14,774 --> 00:00:16,136 Czym jest funkcja? 5 00:00:16,236 --> 00:00:19,944 To seria poleceń, które zebraliśmy i nazwaliśmy, 6 00:00:20,044 --> 00:00:23,682 żeby później wiele razy korzystać z tego zestawu. 7 00:00:23,782 --> 00:00:26,131 Weźmy polecenie „rect”. Jak działa? 8 00:00:26,231 --> 00:00:28,419 Rysuje cztery linie. 9 00:00:28,519 --> 00:00:31,414 Moglibyśmy to osiągnąć, używając funkcji „line”. 10 00:00:31,514 --> 00:00:33,922 I mamy prostokąt. 11 00:00:34,022 --> 00:00:39,006 Ale chcemy rysować prostokąt wiele razy, 12 00:00:39,106 --> 00:00:42,327 a kiepsko byłoby za każdym razem obliczać, 13 00:00:42,427 --> 00:00:45,206 jak narysować linię od rogu do rogu. 14 00:00:45,306 --> 00:00:47,992 Ułożyliśmy więc funkcję „rect”, 15 00:00:48,092 --> 00:00:50,708 która robi to samo, 16 00:00:50,808 --> 00:00:54,540 co tamte cztery wiersze programu, ale trzeba mniej zachodu. 17 00:00:54,640 --> 00:00:56,745 Super! 18 00:00:56,845 --> 00:00:59,641 To jedna z funkcji, która działa 19 00:00:59,741 --> 00:01:02,248 we wszystkich programach w Khan Academy. 20 00:01:02,348 --> 00:01:05,242 Możecie też tworzyć własne funkcje, 21 00:01:05,343 --> 00:01:07,335 do swoich programów. 22 00:01:07,435 --> 00:01:10,746 Powiedzmy, że piszemy program 23 00:01:10,846 --> 00:01:13,873 i chcemy wiele razy rysować Winstona. 24 00:01:13,973 --> 00:01:16,744 Żeby opowiedzieć historię jego życia 25 00:01:16,844 --> 00:01:19,940 i pokazać go w każdym etapie. 26 00:01:20,040 --> 00:01:23,354 Program możemy zacząć tak: 27 00:01:23,454 --> 00:01:28,508 Zmienne „faceX” i „faceY” określą środek twarzy. 28 00:01:28,608 --> 00:01:32,621 Względem tego środka narysujemy oczy i usta. 29 00:01:32,721 --> 00:01:34,572 Na razie program widzi kod 30 00:01:34,672 --> 00:01:37,538 niebędący w żadnej funkcji, więc go uruchamia. 31 00:01:37,638 --> 00:01:39,769 Tylko raz. 32 00:01:39,869 --> 00:01:43,112 Zróbmy z tego funkcję. 33 00:01:43,212 --> 00:01:49,010 Postąpimy podobnie jak przy określaniu zmiennej. Bo to robimy! 34 00:01:49,110 --> 00:01:52,144 Piszemy „var drawWinston”. 35 00:01:52,244 --> 00:01:54,234 Nadajemy nazwę, opisową, 36 00:01:54,334 --> 00:01:59,106 wstawiamy „=”, ale zamiast pisać liczbę lub ciąg znaków, 37 00:01:59,206 --> 00:02:02,709 wpiszemy „function” (nie pomylcie się!). 38 00:02:02,809 --> 00:02:05,843 Dalej - puste nawiasy, 39 00:02:05,943 --> 00:02:08,274 otwieramy klamrę, 40 00:02:08,357 --> 00:02:10,697 zamykamy ją i wstawiamy średnik. 41 00:02:10,797 --> 00:02:14,792 Teraz umieśćmy wszystko, 42 00:02:14,892 --> 00:02:18,729 co chcemy mieć w funkcji, między klamrami. 43 00:02:18,829 --> 00:02:21,725 Weźmiemy cały ten kod, 44 00:02:21,825 --> 00:02:26,392 umieścimy go w funkcji i już! 45 00:02:26,492 --> 00:02:30,292 Mamy teraz zmienną, która zawiera funkcję. 46 00:02:30,392 --> 00:02:33,914 Nadaliśmy nazwę temu fragmentowi kodu, 47 00:02:34,014 --> 00:02:37,397 żeby w każdej chwili móc powiedzieć programowi: 48 00:02:37,497 --> 00:02:40,191 „znajdź fragment o tej nazwie i uruchom!”. 49 00:02:40,291 --> 00:02:42,977 Tę część będzie można wiele razy wykorzystywać. 50 00:02:43,551 --> 00:02:46,592 Tylko że nie ma już Winstona! 51 00:02:46,692 --> 00:02:48,890 Straciliśmy go! Gdzie jest? 52 00:02:48,990 --> 00:02:52,930 Umieszczając to w funkcji, 53 00:02:53,030 --> 00:02:55,900 powiedzieliśmy programowi: „Tu jest kod, 54 00:02:56,000 --> 00:03:00,301 który masz uruchamiać później, ale tylko kiedy ci każę”. 55 00:03:00,401 --> 00:03:03,379 Musimy nakazać to programowi, 56 00:03:03,479 --> 00:03:06,304 czyli przywołać funkcję. 57 00:03:06,404 --> 00:03:09,193 Jak w przypadku elipsy, prostokąta i prostej. 58 00:03:09,293 --> 00:03:13,432 Piszemy nazwę funkcji „drawWinston”, 59 00:03:13,532 --> 00:03:15,808 dalej nawiasy, 60 00:03:15,908 --> 00:03:19,067 oczywiście średnik i już! 61 00:03:19,167 --> 00:03:20,583 Mamy Winstona! 62 00:03:20,683 --> 00:03:24,106 Moim zdaniem to super, ale waszym - może nie, 63 00:03:24,206 --> 00:03:26,829 bo tylko kazaliśmy programowi 64 00:03:26,929 --> 00:03:29,964 zrobić to, co już zrobił. Głupio! 65 00:03:30,064 --> 00:03:32,750 W funkcjach chodzi właśnie o powtarzanie. 66 00:03:32,850 --> 00:03:34,468 Zróbmy to. 67 00:03:34,568 --> 00:03:40,783 Możemy kopiować i wklejać tę funkcję raz po raz. 68 00:03:40,883 --> 00:03:43,802 Ale wygląda to tak samo. 69 00:03:43,902 --> 00:03:45,752 Cóż... Udało się, 70 00:03:45,852 --> 00:03:48,120 program rysuje wielu Winstonów, 71 00:03:48,220 --> 00:03:50,999 ale w jednym miejscu. 72 00:03:51,099 --> 00:03:54,064 Gdybyśmy mieli rentgen w oczach, 73 00:03:54,164 --> 00:03:58,141 zobaczylibyśmy trzech Winstonów, ale ja rentgena w oczach nie mam. 74 00:03:58,241 --> 00:03:59,799 (Nie wiem, jak wy!). 75 00:03:59,899 --> 00:04:03,173 Drobna modyfikacja w funkcji 76 00:04:03,273 --> 00:04:04,443 zaraz to zmieni. 77 00:04:04,543 --> 00:04:08,663 Współrzędne „faceX” i „faceY” to zawsze 202 i 208. 78 00:04:08,763 --> 00:04:11,571 Zmienimy to, używając funkcji „random()”. 79 00:04:11,671 --> 00:04:14,630 Określmy przedział od 50 do 350. 80 00:04:14,730 --> 00:04:16,841 Funkcja wygeneruje liczbę losową 81 00:04:16,942 --> 00:04:18,862 i możemy zrobić to samo tutaj... 82 00:04:18,962 --> 00:04:23,045 Przy każdym przywołaniu funkcja generuje nową liczbę losową. 83 00:04:23,023 --> 00:04:26,106 Wciskamy „restart” i mamy losowych Winstonów. 84 00:04:26,206 --> 00:04:27,847 Super! 85 00:04:29,817 --> 00:04:31,268 Moim zdaniem to świetne. 86 00:04:31,368 --> 00:04:34,506 Gdyby nie funkcja, musielibyśmy dużo programować. 87 00:04:34,606 --> 00:04:36,740 Trzy razy więcej! 88 00:04:37,970 --> 00:04:40,750 Ale nie jest jeszcze idealnie, 89 00:04:40,850 --> 00:04:43,194 bo nie chcemy losowych Winstonów. 90 00:04:43,294 --> 00:04:46,817 Chcemy ustawiać Winstona w konkretnych miejscach. 91 00:04:46,917 --> 00:04:50,021 W następnym filmiku pomówimy o parametrach funkcji. 92 00:04:50,121 --> 00:04:54,130 I będziecie mogli właśnie to robić!