Macierze obiektów (wersja wideo)
-
0:01 - 0:04Dowiadujmy się dalej, co można
zrobić z obiektami. -
0:04 - 0:08Sięgnijmy do programu
z filmiku o funkcjach. -
0:08 - 0:11Ma on funkcję „drawWinston”,
-
0:11 - 0:15która umie narysować Winstona
w danym „x” i „y”... -
0:15 - 0:18Tutaj przywołujemy tę funkcję
cztery razy, -
0:18 - 0:21zawsze z innymi współrzędnymi.
-
0:22 - 0:25Znacie mnie. Gdy patrzę na te cztery
rysunki Winstona, -
0:25 - 0:28tak podobne do siebie,
-
0:28 - 0:32myślę tylko, że dużo lepiej
byłoby użyć pętli. -
0:33 - 0:36I przywołać funkcję raz,
wewnątrz pętli, -
0:36 - 0:39zmieniając „x” i „y”
w każdym powtórzeniu pętli. -
0:40 - 0:44W tym celu musimy znaleźć sposób
na przechowywanie pozycji „x” i „y”, -
0:44 - 0:48w tablicy, żebyśmy mieli
do nich dostep. -
0:48 - 0:50Mamy dwa zestawy wartości,
-
0:50 - 0:52więc moglibyśmy zrobić dwie tablice.
-
0:52 - 0:56Jedną dla pozycji „x”,
drugą dla pozycji „y”. -
0:56 - 1:02Dajmy pozycje „x”:
99, 294, 101 i 294... -
1:02 - 1:08a pozycje „y”
to 117, 117, 316, 316. -
1:09 - 1:12Teraz możemy zrobić tu pętlę,
-
1:12 - 1:14pisząc: for-loop var i = 0;
-
1:14 - 1:18i < xPositions.length; i++
-
1:19 - 1:21Przejdziemy przez każdy
element „xPositions”, -
1:21 - 1:25i napiszemy:
drawWinston(xPositions[i], -
1:26 - 1:29yPositions[i]);
-
1:31 - 1:35Sprawdźmy, czy to działa.
Skasujmy... -
1:35 - 1:36Udało się!
-
1:36 - 1:39Możemy to przywołać.
-
1:39 - 1:41Jedna linijka programu
rysuje Winstona -
1:41 - 1:45w każdej pozycji
z tablicy „xPositions”. -
1:45 - 1:49Możemy dodawać więcej.
Powiedzmy od 10. -
1:49 - 1:54Potem dodajemy 1, i 1, i 1...
-
1:54 - 1:58a później 100, i 1...
-
1:58 - 2:02Zrobił się tu bałagan.
-
2:02 - 2:06Niedobrze, bo trudno mi zobaczyć,
-
2:06 - 2:08który „x” odnosi się do którego „y”.
-
2:08 - 2:13A ja chcę na pierwszy
rzut oka widzieć -
2:13 - 2:17pary x-y, zamiast pilnować,
-
2:17 - 2:21żeby były idealnie ustawione
w pionie, np. tak. -
2:22 - 2:27Chcę znaleźć inny sposób
przechowywania tych pozycji. -
2:27 - 2:31Możemy przechowywać je
jako obiekty. -
2:31 - 2:36Każda pozycja to dwie
informacje: „x” i „y”. -
2:36 - 2:40Możemy zrobić obiekt
o właściwościach „x” i „y.” -
2:40 - 2:45Możemy mieć tablice obiektów
z pozycjami „x” i „y”. -
2:45 - 2:46Zróbmy to więc.
-
2:46 - 2:48Napiszemy: „var positions”
-
2:49 - 2:51równa się... i to też będzie tablica.
-
2:52 - 2:56Ale każdy element, zamiast być
liczbą, będzie obiektem. -
2:56 - 2:59Mamy klamry...
-
2:59 - 3:05I napiszemy „x:99” i „y:117”.
-
3:05 - 3:08Mamy tu jedną z naszych pozycji,
-
3:09 - 3:14a drugą dodamy tutaj.
-
3:14 - 3:19Dobrze; „x” wyniesie 294, 117,
-
3:19 - 3:22dalej 101,
-
3:23 - 3:24dalej 316,
-
3:25 - 3:30a na koniec 294 i 316.
-
3:31 - 3:35I jest tablica obiektów,
-
3:35 - 3:38z których każdy
ma właściwości „x” i „y”. -
3:39 - 3:41Teraz za pomocą pętli FOR
-
3:41 - 3:45wypiszemy każdy obiekt
tablicy „positions”. -
3:45 - 3:49Następnie przekażemy obiekt.
-
3:49 - 3:54Na razie przekazujemy cały obiekt,
a chcemy przekazać wartości „x” i „y”. -
3:54 - 3:59Potrzebujemy zatem
positions[i].X i positions[i].Y. -
3:59 - 4:00Hura!
-
4:01 - 4:04Możemy skasować te stare,
zaśmiecone tablice. -
4:04 - 4:08Teraz wygląda to znacznie ładniej,
-
4:08 - 4:13a program jest prostszy do czytania.
Im łatwiej, tym lepiej! -
4:13 - 4:17I łatwiej jest dodawać nowe obiekty.
Jeśli chcę dodać 1... -
4:17 - 4:19Dodam tę parę.
-
4:19 - 4:23Powiedzmy, że „x” to 200,
„y” też... -
4:23 - 4:26i pośrodku pojawi się Winston.
-
4:26 - 4:28Fajnie!
-
4:28 - 4:32A teraz pokażę wam
coś jeszcze lepszego. -
4:32 - 4:37Zauważcie, że nasza funkcja
przyjmuje dwie liczby -
4:37 - 4:39i korzysta z nich.
-
4:39 - 4:42Możemy zmienić funkcję tak,
że będzie oczekiwać obiektu -
4:42 - 4:45i weźmie z niego „x” oraz „y”.
-
4:45 - 4:50To znaczy, że możemy
zabrać stąd obiekt. -
4:50 - 4:51Spróbujmy.
-
4:51 - 4:54Zabieramy obiekt, teraz nie działa.
-
4:54 - 4:58Bo nasza funkcja
oczekuje dwóch obiektów, -
4:58 - 5:00a dostaje tylko jeden.
Zmienimy to więc. -
5:00 - 5:03Damy tu „facePosition”,
-
5:03 - 5:07ale widać komunikat o błędzie,
bo FaceX nie jest zdefiniowane. -
5:07 - 5:11Wcześniej „faceX” było argumentem,
-
5:11 - 5:13lecz teraz nie istnieje.
Mamy tylko obiekt. -
5:14 - 5:17Możemy zapisać pozycję „x”
-
5:17 - 5:21z obiektu wewnątrz zmiennej „faceX”.
-
5:21 - 5:23Mamy więc obiekt,
-
5:23 - 5:25wiemy, że ma właściwość „x”,
-
5:25 - 5:28i będziemy go przechowywać
w zmiennej „faceX”. -
5:28 - 5:33To samo możemy zrobić z „y”:
„faceY = facePosition.y”. -
5:34 - 5:38I proszę! A reszta funkcji
używa „faceX” i „faceY”. -
5:38 - 5:42Trzeba to dobrze zapisać.
„xx” nie zadziała, -
5:42 - 5:46bo tego nie ma tutaj,
w naszej tablicy obiektów. -
5:46 - 5:48Musi pasować!
-
5:48 - 5:52Wspaniale: teraz możecie mieć
tablice obiektów, -
5:52 - 5:54funkcje przyjmujące obiekty,
-
5:54 - 5:58i przekonacie się,
że programy są świetne -
5:58 - 6:00w organizacji danych.
-
6:00 - 6:04Zwłaszcza że często chcemy
łączyć „x” z „y”. -
6:04 - 6:09Tablice obiektów przydadzą się
podczas rysowania i animacji. -
6:09 - 6:11Korzystajcie z nich
i bawcie się dobrze!
- Title:
- Macierze obiektów (wersja wideo)
- Description:
-
To tylko zapis naszych interaktywnych sesji poświęconych kodowaniu, stworzony by ułatwić ich przełożenie na inne języki. Polecamy obejrzenie tych sesji bezpośrednio pod adresem: https://pl.khanacademy.org/cs/programming/
- Video Language:
- English
- Duration:
- 06:12
Lech Mankiewicz edited Polish subtitles for Arrays of Objects (Video Version) | ||
Lech Mankiewicz edited Polish subtitles for Arrays of Objects (Video Version) |