歡迎來到算法基礎!
你好!歡迎踏上 H2 計算機科學(Computing)旅程的第一步。在本章中,我們將探索程式設計的「大腦」:算法(Algorithms)。你可以把算法想像成一份簡單的食譜。就像食譜教你如何將雞蛋和麵粉變成蛋糕一樣,算法則是教導電腦如何將原始數據處理成有用的結果。如果剛開始覺得有點抽象,別擔心——看完這份筆記,你就會發現其實你每天都在使用算法!
1. 邏輯的三大支柱:順序、選擇與迭代
為了控制程式的運行方式,我們使用三個基本的「積木」。你可以將它們組合起來,創造出任何你能想像到的程式!
A. 順序(Sequence):一步接一步
順序是最簡單的結構。它的意思是電腦會按照指令的先後,從上到下依次執行,除非我們要求它跳過,否則絕不會遺漏任何一行。
例子:準備上學。
1. 起床。
2. 刷牙。
3. 穿上校服。
如果你改變了順序(例如在洗澡前先穿上校服!),事情就可能會出錯。順序至關重要!
B. 選擇(Selection):決策者
選擇允許程式根據特定的條件來決定執行哪一條路徑。我們通常會使用 IF(如果)、THEN(則)和 ELSE(否則)來處理這種情況。
比喻:雨傘的抉擇。
IF 下雨,THEN 帶把雨傘。ELSE(如果沒下雨),帶太陽眼鏡。
這讓我們的程式變得「聰明」,因為它們可以針對不同的情況作出反應。
C. 迭代(Iteration):迴圈者
迭代是指重複執行一組指令。電腦在這方面非常出色,因為它們永遠不會感到疲倦或厭煩!
例子:吃早餐的穀物片。
當碗裡還有穀物片時,繼續用勺子吃。一旦碗空了,你就停止。
記憶小撇步:想像一個「跑步機」。你會一直跑步(迭代),直到計時器歸零或是你按下停止鍵(條件)。
快速複習箱:
• 順序:按順序執行指令。
• 選擇:作出決定 (IF)。
• 迭代:重複執行 (Loops/迴圈)。
2. 理解並擬定偽代碼(Pseudocode)
當我們設計算法時,通常會使用 偽代碼。字面上的 "pseudo" 意指「假的」,所以這簡直就是「偽造的程式碼」。
為什麼要使用它呢?因為真正的程式語言(如 Python)對括號和逗號的要求非常嚴格。偽代碼讓我們能夠專注於邏輯,而不必擔心出現「語法錯誤(syntax errors)」。
如何寫好偽代碼:
1. 使用 INPUT 從使用者取得數據。
2. 使用 OUTPUT 或 PRINT 顯示結果。
3. 使用 STORE 或箭頭符號 \( \leftarrow \) 將數值存入變數中。
4. 使用清晰的名稱,例如 total_score,而不是僅用 x。
例子:判斷考試是否及格的算法。
INPUT mark
IF mark >= 50 THEN
OUTPUT "你及格了!"
ELSE
OUTPUT "再接再厲!"
ENDIF
你知道嗎? H2 教學大綱中並沒有規定偽代碼的「官方」規則書!只要你的邏輯清晰且前後一致,就能拿到分數。不過,保持與 Python 相近的邏輯通常是個安全且明智的選擇。
重點總結: 偽代碼是人類思想與電腦程式之間的橋樑。它是讓人閱讀的,而不是給機器讀的!
3. 模組化方法:分解(Decomposition)
有時候,一個問題太大了,無法一次解決。想像一下有人叫你「造一輛車」。這太讓人不知所措了!這就是 分解(Decomposition) 出場的時候了。
分解是將複雜問題拆解成更小、更易於管理的部份(模組)的過程。
現實例子:籌辦學校嘉年華。
與其讓一個人包辦所有事,不如將工作拆解:
• 模組 1:飲食攤位。
• 模組 2:遊戲與活動。
• 模組 3:門票銷售。
• 模組 4:市場推廣。
為什麼要使用模組化方法?
• 易於管理:與一個巨大的程式區塊相比,小部份更容易理解。
• 團隊合作:不同的人可以同時處理不同的模組。
• 易於測試:你可以先測試「飲食攤位」是否運作完美,再進行「遊戲」部份的測試。
常見錯誤:學生通常會嘗試一次寫完整個程式。如果程式失敗,他們會找不到錯誤出在哪裡。記住,一定要先分解!
4. 增量式方法(Incremental Approach)
增量式方法與分解略有不同。它涉及先解決問題的「迷你版本」,然後逐漸添加更多功能,直到解決整個問題為止。
比喻:畫肖像畫。
首先,你畫一個圓圈作為頭部(基本版本)。然後你加上眼睛和鼻子(擴展解決方案)。最後,你加上陰影和頭髮(完整版本)。
步驟流程:
1. 核心:先解決最基本的要求(例如:一個只能進行加法的計算機)。
2. 擴展:增加下一個功能(例如:現在它可以進行減法)。
3. 重複:持續增加,直到滿足所有要求。
鼓勵一下:如果你的程式第一個版本非常簡單,不用擔心。即使是世界上最複雜的應用程式,也是從一個小小的「1.0 版本」開始的!
快速對比:
• 分解:將大東西拆成許多小碎片。
• 增量:從一個小東西開始,把它越做越大。
章節總結 - 重點筆記
• 控制流程:使用 順序(順序)、選擇(IF)和 迭代(迴圈)來告訴電腦要做什麼以及何時做。
• 偽代碼:一種規劃程式邏輯的方法,無需擔心嚴格的語言規則。
• 分解:將大問題拆分成更小的「模組」來處理。
• 增量式方法:從簡單的解決方案開始,逐步構建完整功能。
恭喜你!你已經掌握了算法思維的基礎。現在,你已經準備好將自己的想法轉化為實際的邏輯了!