< Return to Video

Zagnieżdżone pętle for (wersja wideo)

  • 0:01 - 0:04
    Drogocenny kamień! Śliczny!
  • 0:04 - 0:08
    A od jednego kamienia
    lepszy byłby cały rząd.
  • 0:08 - 0:12
    Już wiemy, że rząd kamieni
    najlepiej zrobić za pomocą pętli.
  • 0:12 - 0:16
    Użyjmy pętli FOR, by narysować
    12 kamieni w rzędzie.
  • 0:16 - 0:19
    Od lewej do prawej, przez cały ekran.
  • 0:19 - 0:21
    Właśnie tak.
  • 0:22 - 0:26
    Piszemy: for (var i=0;
  • 0:26 - 0:29
    i < 12;
  • 0:29 - 0:30
    i++).
  • 0:31 - 0:33
    Weźmiemy ten wiersz
  • 0:33 - 0:34
    i przeniesiemy go tutaj.
  • 0:36 - 0:38
    Mamy już 12 kamieni,
  • 0:38 - 0:40
    jeden na drugim.
  • 0:40 - 0:43
    A chcemy, żeby tworzyły rząd.
  • 0:43 - 0:45
    Trzeba więc zmieniać „x”.
  • 0:45 - 0:49
    Teraz „x” wynosi 36, ale wartość
    za każdym razem ma być inna.
  • 0:49 - 0:51
    Czyli ma zależeć od „i”.
  • 0:52 - 0:56
    Możemy po prostu powiedzieć:
    „i” razy 36.
  • 0:56 - 0:58
    Najpierw jest 0,
  • 0:58 - 1:01
    potem 36, później 72 itd.
  • 1:02 - 1:04
    Super! Mamy rząd kamieni.
  • 1:04 - 1:08
    Przypomina mi to sceny z „Indiany
    Jonesa” lub „Aladyna”,
  • 1:08 - 1:11
    gdzie bohater odkrywa
    w jaskini skarb.
  • 1:11 - 1:14
    Znajduje więcej kamieni!
  • 1:14 - 1:17
    Nie jeden rząd, tylko cały stos!
  • 1:17 - 1:21
    Jak sprawić, że kamienie
  • 1:21 - 1:23
    pokryją ekran do samego dołu?
  • 1:24 - 1:28
    Możemy po prostu
    powtarzać pętlę FOR,
  • 1:28 - 1:30
    kopiować ją i wklejać,
  • 1:30 - 1:32
    za każdym razem zmieniając „y”.
  • 1:33 - 1:37
    Zmienimy na 60, potem na 90...
  • 1:37 - 1:41
    Mamy trzy rzędy kamieni.
    I dobrze!
  • 1:42 - 1:44
    Ale można się zanudzić.
  • 1:44 - 1:49
    Ciągle tylko kopiuję i wklejam,
    zmieniając jeden drobiazg.
  • 1:49 - 1:53
    Kiedyś, pisząc taki
    powtarzający się program,
  • 1:53 - 1:57
    spytalibyśmy:
    „Może warto użyć pętli?”.
  • 1:57 - 1:58
    Ale już to robimy!
  • 1:58 - 2:01
    Jak więc uniknąć tego...
  • 2:01 - 2:04
    kopiowania i wklejania raz po raz?
  • 2:04 - 2:07
    Mamy tzw. zagnieżdżone pętle FOR.
  • 2:07 - 2:09
    To pętla w pętli.
  • 2:09 - 2:12
    Zrobimy pętlę zewnętrzną,
  • 2:12 - 2:15
    która załatwi nam ruch w dół ekranu,
  • 2:15 - 2:16
    a pętla wewnętrzna
  • 2:17 - 2:19
    będzie robić to, co teraz,
  • 2:19 - 2:21
    czyli rysować kamienie w poziomie.
  • 2:21 - 2:24
    Pokażę, o co chodzi.
  • 2:24 - 2:28
    Piszemy: „for”
    i użyjemy innej zmiennej - „j”.
  • 2:28 - 2:30
    Bo „i” już używamy.
  • 2:30 - 2:32
    Zatem: for(var j=0;
  • 2:32 - 2:34
    j jest mniejsze od 13;
  • 2:34 - 2:36
    j++).
  • 2:37 - 2:39
    To będzie pętla zewnętrzna,
  • 2:39 - 2:41
    odpowiadająca za rysowanie w pionie.
  • 2:42 - 2:45
    Teraz weźmiemy jedną
    z poprzednich pętli FOR
  • 2:45 - 2:47
    i umieścimy ją tutaj.
  • 2:48 - 2:49
    Zróbmy wcięcie...
  • 2:50 - 2:52
    I skasujemy te stare.
  • 2:53 - 2:58
    Teraz mamy wszystkie kamienie
    w tym samym rzędzie.
  • 2:58 - 3:01
    Chcemy zmienić „y”.
  • 3:01 - 3:04
    Jak wcześniej,
    po kopiowaniu i wklejaniu.
  • 3:04 - 3:09
    Teraz „y” zawsze wynosi 90.
    Ma się zmieniać dla każdego rzędu.
  • 3:09 - 3:12
    Tak jak „x” jest zależny od „i”,
  • 3:12 - 3:15
    „y” ma być zależny od „j”.
  • 3:16 - 3:18
    Możemy więc...
  • 3:18 - 3:21
    zmienić to na coś takiego jak...
  • 3:22 - 3:24
    „j” razy 30.
  • 3:24 - 3:28
    Tak! Tyle kamieni!
  • 3:29 - 3:32
    Jeszcze raz omówmy to,
    co robi program.
  • 3:32 - 3:35
    Pętla zewnętrzna tworzy zmienną „j”
  • 3:35 - 3:37
    i powiększa ją do 13.
  • 3:38 - 3:41
    Przy każdym wykonaniu
    tej pętli zewnętrznej
  • 3:42 - 3:43
    uruchamia się pętla wewnętrzna.
  • 3:44 - 3:48
    Pętla ta tworzy zmienną „i”,
    która rośnie do 12.
  • 3:48 - 3:51
    Przy każdym wykonaniu
    pętli wewnętrznej rysuje się
  • 3:51 - 3:55
    obraz w pozycji „x” i „y”,
    zależnych od „i” i „j”.
  • 3:55 - 3:59
    Z tego powodu „i” zmienia się
    częściej niż „j.”
  • 3:59 - 4:04
    Żeby lepiej to zrozumieć,
    zobaczmy wartości „i” oraz „j”.
  • 4:04 - 4:08
    Teraz zrobię obraz,
  • 4:08 - 4:11
    wybiorę kolor wypełnienia
  • 4:11 - 4:13
    i użyję polecenia „text”,
  • 4:13 - 4:16
    żeby pokazać wartość „j”.
    Czyli: „textj”.
  • 4:16 - 4:20
    Umieszczę to w odpowiednim miejscu.
  • 4:21 - 4:26
    Teraz widzimy, że „j”
    zmienia się od 0 do 12.
  • 4:26 - 4:30
    To są też pozycje
    naszych rzędów kamieni.
  • 4:31 - 4:35
    Pokażmy wartości „i”.
    Zobaczmy, jak się zmieniają.
  • 4:35 - 4:39
    Dla „i” zróbmy inny kolor.
  • 4:42 - 4:46
    Wstawimy gdzieś „i”.
  • 4:46 - 4:50
    Zmienimy „x”, żeby kamienie
    rysowały się w poziomie.
  • 4:50 - 4:54
    To samo zrobimy dla „y”. Dobrze!
  • 4:54 - 4:59
    Widzimy, że „i” zmienia się
    od 0 do 11.
  • 5:00 - 5:03
    Jak mówiłam, „i”...
  • 5:03 - 5:05
    zmienia się znacznie częściej.
  • 5:05 - 5:09
    Ten fragment programu
    jest wykonywany częściej niż ten.
  • 5:09 - 5:14
    Ten - dla każdego wykonania
    tej wewnętrznej pętli FOR.
  • 5:14 - 5:18
    A ten - tylko dla każdego wykonania
    pętli zewnętrznej.
  • 5:19 - 5:22
    Mam nadzieję,
    że widząc wartości „i” i „j”
  • 5:22 - 5:26
    lepiej zrozumieliście
    działanie pętli zagnieżdżonej.
  • 5:27 - 5:29
    Niech już wrócą kamienie, są fajne!
  • 5:30 - 5:34
    Zagnieżdżone pętle FOR
    mają dużo zastosowań.
  • 5:34 - 5:37
    Pomyślmy, ile rzeczy na świecie
  • 5:37 - 5:40
    przypomina siatkę 2D:
    szachownica, kołdra,
  • 5:40 - 5:44
    gwiazdy na fladze USA,
    wzory, tapety...
  • 5:44 - 5:47
    Uruchomcie wyobraźnię,
    bawiąc się programem,
  • 5:47 - 5:49
    np. zmieniając obrazy.
  • 5:49 - 5:53
    Ja zmienię je w serduszka.
  • 5:53 - 5:59
    Żeby pokazać, jak kocham
    zagnieżdżone pętle FOR!
Title:
Zagnieżdżone pętle for (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:00

Polish subtitles

Revisions