0:00:01.061,0:00:05.708 Pomówmy o czymś, czego[br]cały czas używacie: o funkcjach. 0:00:05.808,0:00:09.440 Używając poleceń[br]„rect”, „fill” czy „text”, 0:00:09.540,0:00:14.674 przywołujecie funkcje,[br]a one rysują to, co każecie. 0:00:14.774,0:00:16.136 Czym jest funkcja? 0:00:16.236,0:00:19.944 To seria poleceń,[br]które zebraliśmy i nazwaliśmy, 0:00:20.044,0:00:23.682 żeby później wiele razy[br]korzystać z tego zestawu. 0:00:23.782,0:00:26.131 Weźmy polecenie „rect”. Jak działa? 0:00:26.231,0:00:28.419 Rysuje cztery linie. 0:00:28.519,0:00:31.414 Moglibyśmy to osiągnąć,[br]używając funkcji „line”. 0:00:31.514,0:00:33.922 I mamy prostokąt. 0:00:34.022,0:00:39.006 Ale chcemy rysować prostokąt[br]wiele razy, 0:00:39.106,0:00:42.327 a kiepsko byłoby[br]za każdym razem obliczać, 0:00:42.427,0:00:45.206 jak narysować linię od rogu[br]do rogu. 0:00:45.306,0:00:47.992 Ułożyliśmy więc funkcję „rect”, 0:00:48.092,0:00:50.708 która robi to samo, 0:00:50.808,0:00:54.540 co tamte cztery wiersze programu,[br]ale trzeba mniej zachodu. 0:00:54.640,0:00:56.745 Super! 0:00:56.845,0:00:59.641 To jedna z funkcji, która działa 0:00:59.741,0:01:02.248 we wszystkich programach[br]w Khan Academy. 0:01:02.348,0:01:05.242 Możecie też tworzyć własne funkcje, 0:01:05.343,0:01:07.335 do swoich programów. 0:01:07.435,0:01:10.746 Powiedzmy, że piszemy program 0:01:10.846,0:01:13.873 i chcemy wiele razy[br]rysować Winstona. 0:01:13.973,0:01:16.744 Żeby opowiedzieć historię jego życia 0:01:16.844,0:01:19.940 i pokazać go w każdym etapie. 0:01:20.040,0:01:23.354 Program możemy zacząć tak: 0:01:23.454,0:01:28.508 Zmienne „faceX” i „faceY”[br]określą środek twarzy. 0:01:28.608,0:01:32.621 Względem tego środka[br]narysujemy oczy i usta. 0:01:32.721,0:01:34.572 Na razie program widzi kod 0:01:34.672,0:01:37.538 niebędący w żadnej funkcji,[br]więc go uruchamia. 0:01:37.638,0:01:39.769 Tylko raz. 0:01:39.869,0:01:43.112 Zróbmy z tego funkcję. 0:01:43.212,0:01:49.010 Postąpimy podobnie jak przy[br]określaniu zmiennej. Bo to robimy! 0:01:49.110,0:01:52.144 Piszemy „var drawWinston”. 0:01:52.244,0:01:54.234 Nadajemy nazwę, opisową, 0:01:54.334,0:01:59.106 wstawiamy „=”, ale zamiast[br]pisać liczbę lub ciąg znaków, 0:01:59.206,0:02:02.709 wpiszemy „function”[br](nie pomylcie się!). 0:02:02.809,0:02:05.843 Dalej - puste nawiasy, 0:02:05.943,0:02:08.274 otwieramy klamrę, 0:02:08.357,0:02:10.697 zamykamy ją i wstawiamy średnik. 0:02:10.797,0:02:14.792 Teraz umieśćmy wszystko, 0:02:14.892,0:02:18.729 co chcemy mieć w funkcji,[br]między klamrami. 0:02:18.829,0:02:21.725 Weźmiemy cały ten kod, 0:02:21.825,0:02:26.392 umieścimy go w funkcji i już! 0:02:26.492,0:02:30.292 Mamy teraz zmienną,[br]która zawiera funkcję. 0:02:30.392,0:02:33.914 Nadaliśmy nazwę[br]temu fragmentowi kodu, 0:02:34.014,0:02:37.397 żeby w każdej chwili[br]móc powiedzieć programowi: 0:02:37.497,0:02:40.191 „znajdź fragment[br]o tej nazwie i uruchom!”. 0:02:40.291,0:02:42.977 Tę część będzie można[br]wiele razy wykorzystywać. 0:02:43.551,0:02:46.592 Tylko że nie ma już Winstona! 0:02:46.692,0:02:48.890 Straciliśmy go! Gdzie jest? 0:02:48.990,0:02:52.930 Umieszczając to w funkcji, 0:02:53.030,0:02:55.900 powiedzieliśmy programowi:[br]„Tu jest kod, 0:02:56.000,0:03:00.301 który masz uruchamiać później,[br]ale tylko kiedy ci każę”. 0:03:00.401,0:03:03.379 Musimy nakazać to programowi, 0:03:03.479,0:03:06.304 czyli przywołać funkcję. 0:03:06.404,0:03:09.193 Jak w przypadku elipsy,[br]prostokąta i prostej. 0:03:09.293,0:03:13.432 Piszemy nazwę funkcji[br]„drawWinston”, 0:03:13.532,0:03:15.808 dalej nawiasy, 0:03:15.908,0:03:19.067 oczywiście średnik i już! 0:03:19.167,0:03:20.583 Mamy Winstona! 0:03:20.683,0:03:24.106 Moim zdaniem to super,[br]ale waszym - może nie, 0:03:24.206,0:03:26.829 bo tylko kazaliśmy programowi 0:03:26.929,0:03:29.964 zrobić to, co już zrobił. Głupio! 0:03:30.064,0:03:32.750 W funkcjach chodzi[br]właśnie o powtarzanie. 0:03:32.850,0:03:34.468 Zróbmy to. 0:03:34.568,0:03:40.783 Możemy kopiować i wklejać[br]tę funkcję raz po raz. 0:03:40.883,0:03:43.802 Ale wygląda to tak samo. 0:03:43.902,0:03:45.752 Cóż... Udało się, 0:03:45.852,0:03:48.120 program rysuje wielu Winstonów, 0:03:48.220,0:03:50.999 ale w jednym miejscu. 0:03:51.099,0:03:54.064 Gdybyśmy mieli rentgen w oczach, 0:03:54.164,0:03:58.141 zobaczylibyśmy trzech Winstonów,[br]ale ja rentgena w oczach nie mam. 0:03:58.241,0:03:59.799 (Nie wiem, jak wy!). 0:03:59.899,0:04:03.173 Drobna modyfikacja w funkcji 0:04:03.273,0:04:04.443 zaraz to zmieni. 0:04:04.543,0:04:08.663 Współrzędne „faceX” i „faceY”[br]to zawsze 202 i 208. 0:04:08.763,0:04:11.571 Zmienimy to, używając[br]funkcji „random()”. 0:04:11.671,0:04:14.630 Określmy przedział od 50 do 350. 0:04:14.730,0:04:16.841 Funkcja wygeneruje liczbę losową 0:04:16.942,0:04:18.862 i możemy zrobić to samo tutaj... 0:04:18.962,0:04:23.045 Przy każdym przywołaniu funkcja[br]generuje nową liczbę losową. 0:04:23.023,0:04:26.106 Wciskamy „restart”[br]i mamy losowych Winstonów. 0:04:26.206,0:04:27.847 Super! 0:04:29.817,0:04:31.268 Moim zdaniem to świetne. 0:04:31.368,0:04:34.506 Gdyby nie funkcja, musielibyśmy[br]dużo programować. 0:04:34.606,0:04:36.740 Trzy razy więcej! 0:04:37.970,0:04:40.750 Ale nie jest jeszcze idealnie, 0:04:40.850,0:04:43.194 bo nie chcemy[br]losowych Winstonów. 0:04:43.294,0:04:46.817 Chcemy ustawiać Winstona[br]w konkretnych miejscach. 0:04:46.917,0:04:50.021 W następnym filmiku[br]pomówimy o parametrach funkcji. 0:04:50.121,0:04:54.130 I będziecie mogli[br]właśnie to robić!