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