Pomówmy o czymś, czego cały czas używacie: o funkcjach. Używając poleceń „rect”, „fill” czy „text”, przywołujecie funkcje, a one rysują to, co każecie. Czym jest funkcja? To seria poleceń, które zebraliśmy i nazwaliśmy, żeby później wiele razy korzystać z tego zestawu. Weźmy polecenie „rect”. Jak działa? Rysuje cztery linie. Moglibyśmy to osiągnąć, używając funkcji „line”. I mamy prostokąt. Ale chcemy rysować prostokąt wiele razy, a kiepsko byłoby za każdym razem obliczać, jak narysować linię od rogu do rogu. Ułożyliśmy więc funkcję „rect”, która robi to samo, co tamte cztery wiersze programu, ale trzeba mniej zachodu. Super! To jedna z funkcji, która działa we wszystkich programach w Khan Academy. Możecie też tworzyć własne funkcje, do swoich programów. Powiedzmy, że piszemy program i chcemy wiele razy rysować Winstona. Żeby opowiedzieć historię jego życia i pokazać go w każdym etapie. Program możemy zacząć tak: Zmienne „faceX” i „faceY” określą środek twarzy. Względem tego środka narysujemy oczy i usta. Na razie program widzi kod niebędący w żadnej funkcji, więc go uruchamia. Tylko raz. Zróbmy z tego funkcję. Postąpimy podobnie jak przy określaniu zmiennej. Bo to robimy! Piszemy „var drawWinston”. Nadajemy nazwę, opisową, wstawiamy „=”, ale zamiast pisać liczbę lub ciąg znaków, wpiszemy „function” (nie pomylcie się!). Dalej - puste nawiasy, otwieramy klamrę, zamykamy ją i wstawiamy średnik. Teraz umieśćmy wszystko, co chcemy mieć w funkcji, między klamrami. Weźmiemy cały ten kod, umieścimy go w funkcji i już! Mamy teraz zmienną, która zawiera funkcję. Nadaliśmy nazwę temu fragmentowi kodu, żeby w każdej chwili móc powiedzieć programowi: „znajdź fragment o tej nazwie i uruchom!”. Tę część będzie można wiele razy wykorzystywać. Tylko że nie ma już Winstona! Straciliśmy go! Gdzie jest? Umieszczając to w funkcji, powiedzieliśmy programowi: „Tu jest kod, który masz uruchamiać później, ale tylko kiedy ci każę”. Musimy nakazać to programowi, czyli przywołać funkcję. Jak w przypadku elipsy, prostokąta i prostej. Piszemy nazwę funkcji „drawWinston”, dalej nawiasy, oczywiście średnik i już! Mamy Winstona! Moim zdaniem to super, ale waszym - może nie, bo tylko kazaliśmy programowi zrobić to, co już zrobił. Głupio! W funkcjach chodzi właśnie o powtarzanie. Zróbmy to. Możemy kopiować i wklejać tę funkcję raz po raz. Ale wygląda to tak samo. Cóż... Udało się, program rysuje wielu Winstonów, ale w jednym miejscu. Gdybyśmy mieli rentgen w oczach, zobaczylibyśmy trzech Winstonów, ale ja rentgena w oczach nie mam. (Nie wiem, jak wy!). Drobna modyfikacja w funkcji zaraz to zmieni. Współrzędne „faceX” i „faceY” to zawsze 202 i 208. Zmienimy to, używając funkcji „random()”. Określmy przedział od 50 do 350. Funkcja wygeneruje liczbę losową i możemy zrobić to samo tutaj... Przy każdym przywołaniu funkcja generuje nową liczbę losową. Wciskamy „restart” i mamy losowych Winstonów. Super! Moim zdaniem to świetne. Gdyby nie funkcja, musielibyśmy dużo programować. Trzy razy więcej! Ale nie jest jeszcze idealnie, bo nie chcemy losowych Winstonów. Chcemy ustawiać Winstona w konkretnych miejscach. W następnym filmiku pomówimy o parametrach funkcji. I będziecie mogli właśnie to robić!