< Return to Video

Macierze obiektów (wersja wideo)

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

more » « less
Video Language:
English
Duration:
06:12

Polish subtitles

Revisions