CodeMonkey少兒程式設計第6章 for迴圈

icuic發表於2021-02-28

目標

  • 掌握for迴圈的使用方法
  • 理解for迴圈的巢狀

在第3章中,我們學習了times迴圈。times迴圈可以讓一段程式碼重複執行指定的次數。

本章我們將學習另一種迴圈結構——for迴圈。它同樣能讓一段程式碼重複執行,但無需指定重複的次數。

那這段程式碼會重複執行多少次呢?還記得上一章中學習的陣列嗎,for迴圈中的陣列裡有多少個物件,程式碼就會重複執行多少次。

下面讓我們開始本章的學習。

for迴圈

首先來看for迴圈的格式:

for element in array

....待重複執行的程式碼

是不是沒有看明白?哈哈,沒關係,我來解釋一下你就清楚了。

以上for迴圈結構的意思是:對於陣列(array)裡的每一個元素(element),都執行一次“待重複執行的程式碼”。也就是說,陣列裡有多少個元素,就重複執行多少次下面的程式碼。

看了上述文字你也許還是感覺很蒙,那就讓我們通過下面這個關卡來切實體驗一下for迴圈的用法吧。

challenges_for

這是我為times迴圈那一章節所設計的一個關卡,它同樣可以使用for迴圈來解決。

此關卡中有4只香蕉,它們共同組成了一個bananas陣列。這4只香蕉都是這個陣列裡的元素,分別使用bananas[0],bananas[1],bananas[2]和bananas[3]來指代它們。

如果使用for迴圈,那麼這一關的解法如下:

for b in bananas

....turnTo b

....step distanceTo b

注意,以上程式碼中的.僅用來表示空格,測試執行時請不要輸入。

根據上述所介紹的for迴圈結構用法,因為bananas陣列裡有4個元素,所以迴圈會被執行4次。每一次迴圈時,都會依次從陣列中取一個元素,將它賦值給b。

為了更深入的理解,我們在這裡將上述for迴圈展開,可以得到如下的程式碼:

b = bananas[0]

turnTo b

step distanceTo b



b = bananas[1]

turnTo b

step distanceTo b



b = bananas[2]

turnTo b

step distanceTo b



b = bananas[3]

turnTo b

step distanceTo b

怎麼樣,看了以上展開的程式碼之後,for迴圈是不是更容易理解了?

為了測試你是不是真的理解了for迴圈的用法,我們來做如下一個測試。

請在瀏覽器裡輸入 http://t.im/hnwf , 可是直接點選下方的圖片,以開啟這一測試關卡。

test_for

很明顯,面對如此多的香蕉,肯定是不能一隻只地去收集了,那樣太機械了,操作起來也不現實。所以,for迴圈這個時候就派上大用場了。

希望你能順利通關!

for的巢狀

還有一點需要注意,for迴圈是可以巢狀的。

什麼是巢狀呢?你有沒有見過俄羅斯套娃,或者是象牙球雕?

for迴圈的巢狀

對,for迴圈的巢狀就是指,在一個for迴圈的裡面,仍然是for迴圈。下面請看一下for迴圈的兩層巢狀:

for a in arrayA

....for b in arrayB

........待重複執行的程式碼段一

....待重複執行的程式碼段二

以上即是一個兩層的for迴圈,可以看到,在最外層的for迴圈裡面,包含了另一個for迴圈。

若將以上程式碼展開,可以得到以下程式碼:

a = arrayA[0]

b = arrayB[0]

程式碼段一

b = arrayB[1]

程式碼段一

b = arrayB[2]

程式碼段一

.... # 直到內層的for迴圈結束

程式碼段二

a = arrayA[1]

b = arrayB[0]

程式碼段一

b = arrayB[1]

程式碼段一

b = arrayB[2]

程式碼段一

.... # 直到內層的for迴圈結束

程式碼段二

.... # 直到外層的for迴圈結束

測試一下你是不是真正地理解了for的巢狀,請問,假設arrayA陣列中有3個元素,arrayB陣列中有5個元素,那麼,在這個兩層巢狀中,程式碼段一一共被執行了多少次?程式碼段二呢?

公佈答案啦,程式碼段一一共被執行了3x5=15次,程式碼段二一共被執行了3次。

怎麼樣,你答對了嗎?如果你的答案不正確,請再仔細思考一會兒。

75關即需要使用到for的巢狀結構,你也可以使用它來自測。

好了,for迴圈的內容就這麼多了,課後作業趕緊做起來吧!

作業

  • 故事模式61 - 75關
  • 進階模式6-1 - 6-15關

    注意,一定保證要所有關卡都拿到三顆星。

小結

  • for迴圈跟times迴圈一樣,也可以用來重複執行某一段程式碼。
  • for迴圈無需手動指定迴圈次數,具體迴圈次數由其中的陣列元素個數決定。
  • for迴圈是可以被巢狀的,即for迴圈的內部,仍然可以是for迴圈。其實,times迴圈也是可以被巢狀的。

相關文章