Return to Video

嵌入式For迴圈 (影音版)

  • 0:02 - 0:04
    一粒寶石,一粒很好的寶石!
  • 0:04 - 0:08
    但你知嗎?如果能夠把寶石串成一行總比一顆寶石好!
  • 0:08 - 0:13
    當然,我們知道一串寶石最好的排列方式是弄個迴圈
  • 0:13 - 0:16
    我們用一個 for 迴圈畫出一行 12 個寶石
  • 0:16 - 0:20
    由左至右橫跨螢幕
  • 0:20 - 0:22
    好像那樣,因此那是一個
  • 0:22 - 0:31
    for (定義新函數 i 等於 0; i 比 12 少; i ++)
  • 0:31 - 0:36
    然後我們把這條線移到這裏
  • 0:36 - 0:40
    現在我們有 12 夥寶石,但它們卻是在右方一個疊著一個
  • 0:40 - 0:43
    記住,我們要令它們在螢幕上橫向分佈
  • 0:43 - 0:46
    那就是我們得要更改 X
  • 0:46 - 0:50
    還有 36 現在就是 X,但我們想要它每次都不同
  • 0:50 - 0:52
    就是說我們要讓它因 i 而變動
  • 0:52 - 0:56
    我們可以做的是,例如 i 乘 36
  • 0:56 - 1:03
    所以第一個是 0,下一個是 36,再下一個是 72,以此類推
  • 1:03 - 1:05
    好!現在我們有了一串寶石
  • 1:05 - 1:08
    這使我想起印第安納‧瓊斯或阿拉丁裏面的場景
  • 1:08 - 1:11
    當英雄發現了地下寶藏、很多寶石時
  • 1:11 - 1:14
    但他們常常比我們現在發現更多的寶石
  • 1:14 - 1:17
    不只是一串寶石,而是一堆寶石!
  • 1:17 - 1:22
    那麼我們可以怎樣使寶石
  • 1:22 - 1:25
    佈滿整個畫面?
  • 1:25 - 1:31
    我們可以由重複 for 迴圈開始,複製、貼上
  • 1:31 - 1:35
    然後每次都更改 y
  • 1:35 - 1:38
    我們會把它改成 60,然後 90
  • 1:38 - 1:42
    現在我們有三行寶石了。酷!
  • 1:42 - 1:45
    但……這顯得有點悶,因為我做的
  • 1:45 - 1:49
    只是複製、貼上和更改 y
  • 1:49 - 1:53
    我們以往一般當我們察覺寫了一個像這個的編碼時
  • 1:53 - 1:57
    我們會說︰哦,或許我們只需要一個迴圈罷
  • 1:57 - 1:59
    但我們已經在用一個迴圈
  • 1:59 - 2:04
    有什麼辦法避免重複的複製貼上呢?
  • 2:04 - 2:10
    辦法就是我們所謂的嵌入式For迴圈
  • 2:10 - 2:12
    我們要弄一個外迴圈
  • 2:12 - 2:15
    這個迴圈就是當我們來到螢幕下方時需要注意的東西
  • 2:15 - 2:19
    然後我們內迴圈便會繼續執行它目前的指令
  • 2:19 - 2:22
    從左至右走
  • 2:22 - 2:24
    讓我告訴你這是什麼一回事
  • 2:24 - 2:30
    因此for-我們這次使用一個不同的變數,名叫 j,因為我們已使用 i
  • 2:30 - 2:37
    所以 for (定義新函數 j 等於 0; j 少於 13; j++)
  • 2:37 - 2:42
    好,這個就會成為我們的外迴圈,會執行上至下的指令
  • 2:42 - 2:48
    接下來我們把其中一個之前的 for 迴圈放進裏面
  • 2:48 - 2:53
    更正一下縮排,刪除原來的編碼,好了!
  • 2:53 - 2:59
    現在我們要做的是把它們疊起來
  • 2:59 - 3:02
    那就是要改 y,是吧?
  • 3:02 - 3:04
    我們剛才在複製貼上時已經更改了
  • 3:04 - 3:06
    所以 Y 一直是 90
  • 3:06 - 3:09
    我們想要 y 在每一行都不同
  • 3:09 - 3:16
    就如 x 取決於 i 一樣,我們要讓 y 也因 j 而改變
  • 3:16 - 3:25
    我們可以把這個改為 j 乘 30
  • 3:25 - 3:30
    好!好!很多寶石!好極!
  • 3:30 - 3:32
    那這又做了什麼
  • 3:32 - 3:38
    外迴圈弄了這個變數 j,把 j 增加至 13
  • 3:38 - 3:44
    每次執行外迴圈命令時,它也會執行內迴圈命令
  • 3:44 - 3:49
    內迴圈創造了變數 i,而 i 會增加到 12
  • 3:49 - 3:55
    每次內迴圈執行命令時,就會畫一個在 x 和 y 軸上的圖像, x 和 y 是基於終止 i 和 j
  • 3:55 - 4:00
    因此 i 比 j 更常改變
  • 4:00 - 4:05
    要更明白這個東西,不妨來把 i 和 j 的值顯示出來
  • 4:05 - 4:09
    我會在影像前後加上 //
  • 4:09 - 4:12
    然後設定一個填滿的顏色
  • 4:12 - 4:17
    我會用一個文字控制器去顯示 j 的值,輸入 j
  • 4:17 - 4:22
    然後我會把它放到這個適當的地方。好
  • 4:22 - 4:26
    我們可以看到 j 是由 0 到 12
  • 4:26 - 4:32
    這基本上就是我們一排排寶石的位置
  • 4:32 - 4:36
    我們會把 i 顯示出來,看看它如何變動
  • 4:36 - 4:43
    給 i 不同的顏色
  • 4:43 - 4:46
    我們會把 i 放到某處
  • 4:46 - 4:50
    我們更改 it’s x 使它會在畫面上橫跨螢幕
  • 4:50 - 4:55
    我們也給 y 更改
  • 4:55 - 5:00
    現在我們看到 i 是由 0 到 11
  • 5:00 - 5:05
    而 i,正如之前所說,變得更頻密
  • 5:05 - 5:09
    這一行的編碼比這一行編碼執行得更多
  • 5:09 - 5:14
    因為當這個內迴圈執行時,這一行便會執行
  • 5:14 - 5:20
    而這一行只會在外迴圈執行時執行
  • 5:20 - 5:22
    希望 i 和 j 的形象化
  • 5:22 - 5:27
    可以使你明白這些嵌入式For迴圈究竟發生了什麼事
  • 5:27 - 5:30
    現在回到我們的寶石那裏,它們是很酷的東西啊!
  • 5:30 - 5:34
    利用嵌入式For迴圈,你們可以做到很多事情
  • 5:34 - 5:37
    如果你想一想世界上所有東西都看似
  • 5:37 - 5:40
    平面網格、西洋象棋格、網格
  • 5:40 - 5:45
    星條旗上的星星、酷的圖案和背景圖畫
  • 5:45 - 5:47
    要是開始你的想像,就不如玩一下這個編碼程式
  • 5:47 - 5:50
    就嘗試改動影像
  • 5:50 - 5:54
    我會由改成心型開始
  • 5:54 - 5:58
    讓你知道我有多麼喜愛嵌入式For迴圈!喔~~
Title:
嵌入式For迴圈 (影音版)
Description:

這部影片專為提供字幕所設計。詳細內容請到:
https://www.khanacademy.org/cs/nested-for-loops-2/4838213478776832

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

Chinese, Traditional subtitles

Revisions