歡迎來到程式中的「重複」世界!
你有沒有試過重複做同一件事?例如拍手十次、刷乾淨每一顆牙齒,或者一步一步走到遊樂場?在日常生活中,我們經常重複各種動作。電腦同樣非常擅長重複執行指令!
在本學習指南中,你將會學會如何利用重複(Repetition)讓程式碼變得更聰明、更簡潔、更有效率。剛開始接觸編程時覺得有點難?不用擔心,我們會一步一步為你詳細拆解。
重點摘要:重複結構讓我們可以向電腦發出指令,多次執行同一個動作,而不需要一遍又一遍寫出相同的程式碼。
必學關鍵詞彙
在開始之前,我們先來認識四個重要的電腦科詞彙:
• 算法 / 演算法(Algorithm):用來解決問題或完成任務的一組明確、有序的步驟或規則。
• 重複 / 循環(Repetition / Loop):在算法或程式中重複執行一組指令的過程。
• 過程 / 子程序(Procedure):一組已命名的指令(通常包含循環),可以儲存起來並多次調用。
• 除錯(Debug):當程式無法按預期運作時,找出並修正錯誤(bugs)的過程。
為甚麼要用重複結構,而不是一長串順序指令?
試想像你想指示機械人向前走四步。你可以寫出這樣一個簡單的順序(Sequence)指令:
向前走
向前走
向前走
向前走
這樣做確實可行,但如果機械人需要向前走 \(100\) 步呢?寫 \(100\) 次「向前走」既費時失事,又會讓整個屏幕密密麻麻!相反,我們可以把單一指令放進循環(Loop)之中:
重複 \(4\) 次:
向前走
你知道嗎?使用循環不僅能讓程式碼保持整潔,在出錯時進行除錯也會變得容易得多!
三種主要循環類型
在第二學習階段(KS2)的電腦課中,我們會根據程式的需要使用三種主要的循環:
1. 計數控制循環(Count-Controlled Loops)
計數控制循環會將一組程式碼重複執行預先設定的特定次數。在程式開始前,你已經明確告訴電腦要重複多少次。
• 生活例子:做 \(5\) 次開合跳。
• 在 Scratch 中:使用 重複 (10) 次 積木。
• 在 Logo 中:使用 REPEAT 4 [ ... ] 指令。
2. 無限循環(Infinite Loops)
無限循環會不休止地重複執行指令,沒有終點,直到有人手動停止程式為止(例如按下 Scratch 中的紅色停止按鈕)。
• 生活例子:時鐘不斷滴答滴答地走動。
• 在 Scratch 中:使用 重複無限次 積木。
• 重要規則:放在無限循環後面的任何程式積木都永遠不會被執行,因為這個循環永不結束!
3. 條件控制循環(Condition-Controlled Loops)
條件控制循環會持續重複執行指令,直到某個特定事件或條件發生才會停下來。
• 生活例子:持續攪拌熱朱古力,直到所有朱古力粉完全溶解。
• 在 Scratch 中:使用 重複直到 <碰到邊緣?> 積木。
重點摘要:當你知道確切次數時,使用計數控制循環;想程式不停運作時,使用無限循環;而需要等待特定條件發生時,則使用條件控制循環。
繪畫幾何圖形:\(360^\circ\) 的神奇法則
運用重複結構最有趣的玩法之一,就是利用海龜繪圖(Turtle Graphics)來繪製正多邊形(例如在 Logo 中,或在 Scratch 中使用畫筆積木)。
要畫出任何正多邊形(所有邊長和內角都相等的圖形),電腦角色需要向前移動並在轉角處轉向。當完成整個圖形時,角色正好在原地自轉了一整圈,即 \(360^\circ\)。
外角旋轉法則:
\(\text{邊數(重複次數)} \times \text{旋轉角度} = 360^\circ\)
要計算正確的旋轉角度,只需將 \(360^\circ\) 除以邊數:
\(\text{旋轉角度} = \frac{360^\circ}{\text{邊數}}\)
一起來看看例子:
繪畫正方形:
• 正方形有 \(4\) 條邊。
• 計算旋轉角度:\(360^\circ \div 4 = 90^\circ\)。
• 指令:重複 \(4\) 次:移動 \(100\) 步,向右轉 \(90^\circ\)。
• 驗算:\(4 \times 90^\circ = 360^\circ\)。
繪畫等邊三角形:
• 等邊三角形有 \(3\) 條邊。
• 計算旋轉角度:\(360^\circ \div 3 = 120^\circ\)。
• 指令:重複 \(3\) 次:移動 \(100\) 步,向右轉 \(120^\circ\)。
• 驗算:\(3 \times 120^\circ = 360^\circ\)。
重點摘要:謹記確保「重複次數」乘「旋轉角度」等於 \(360^\circ\),這樣才能畫出完美閉合的圖形!
常用編程環境:Logo 與 Scratch
你可以透過不同的編程工具來建立循環:
• Logo(純文字編程):輸入文字指令來控制海龜移動。例如:
REPEAT 4 [FORWARD 100 RIGHT 90]
• Scratch(圖像化積木編程):把視覺化程式積木拼接在一起,例如把動作積木嵌入黃色的重複或重複無限次積木中。
小心陷阱!常見錯誤與注意事項
即使是最優秀的電腦科學家也會犯錯。以下是四個常見的程式錯誤(Bugs),大家要多加留意:
1. 「重複只適用於數數」的誤解
錯誤觀念:以為重複結構只能用在數學計算或數字計數上。
正確概念:重複結構適用於任何動作!你可以重複切換造型來製作動畫、重複播放音效,或者重複移動讓角色在屏幕上來回巡邏。
2. 差一錯誤(Off-by-One Errors)
錯誤觀念:輸入了錯誤的重複次數(例如畫正方形時只重複了 \(3\) 次而不是 \(4\) 次)。
解決方法:檢查你畫出的圖形!如果缺了一條邊,請數一數循環設定的重複次數,確保它與圖形的邊數完全相符。
3. 混淆「順序」與「循環」
錯誤觀念:把相同的積木連續堆疊四次,並稱之為循環。
正確概念:單純堆疊積木只是一串長順序。真正的循環必須使用重複積木或 REPEAT 指令把動作包裹起來。
4. 無限循環陷阱
錯誤觀念:把程式積木放在重複無限次積木的下方,然後疑惑為甚麼它們不會執行。
解決方法:無限循環永遠不會停止。如果你希望後面的程式碼能夠執行,請改用計數控制循環或條件控制循環。
快速複習清單
快來動動腦筋,回答以下問題測試自己的理解:
• 甚麼是循環?(重複執行某段程式碼的指令)
• 哪一種循環會永無止境地運行?(無限循環 / 重複無限次積木)
• 哪一種循環會在運行指定次數後停止?(計數控制循環)
• 哪一種循環需要等待特定事件發生才會停止?(條件控制循環)
• 繪畫幾何圖形時,旋轉角度乘以重複次數必須等於多少度?(\(360^\circ\))