歡迎來到程式設計結構:程式碼的基石!
哈囉,未來的電腦科學家們!你們即將進入程式設計中最重要的一個章節:結構(Constructs)。你可以把結構想像成編寫任何電腦程式所需的關鍵工具或成分,無論是簡單的計算機程式,還是複雜的電子遊戲,都離不開它們。
在本章中,我們將學習如何以邏輯方式組織指令。一旦你掌握了這三種結構,你就幾乎可以寫出任何想像得到的程式!別擔心,如果起初覺得有些困難,我們會一步一步地拆解每個概念。
三大核心程式設計結構
每個結構化程式都依賴三種基本方式來控制執行的流程:
- 順序(Sequence)(執行的順序)
- 選擇(Selection)(決策判斷)
- 迭代(Iteration)(重複執行/迴圈)
1. 順序:按部就班執行
順序是最簡單的結構,也是所有程式設計的基礎。
什麼是順序?
順序是指程式碼中的指令會嚴格按照它們出現的先後順序,一個接著一個地執行。
想像一下食譜: 你必須先切菜(步驟 1),*然後*才能把它們放進烤箱(步驟 2)。如果你弄亂了順序,食譜就會失敗!
順序在程式碼中是如何運作的
在程式設計中,順序通常涉及以下基本操作:
- 輸入資料(例如:詢問使用者的名字)
- 處理資料(例如:計算總分)
- 輸出資料(例如:顯示結果)
範例(偽代碼):
1. INPUT score1
2. INPUT score2
3. CALCULATE total = score1 + score2
4. OUTPUT total
如果電腦試圖在第 1、2 步之前執行第 3 步,它就沒有所需的數值,程式就會崩潰。
快速複習:順序
重點總結: 順序是預設的路徑。每條指令都精確地執行一次,由上而下。
2. 選擇:作出決策 (IF...THEN...ELSE)
如果程式每次都做同樣的事,那它就不會太實用。選擇結構讓程式能根據是否符合特定條件,來選擇不同的執行路徑。
條件與布林邏輯的角色
選擇依賴於條件(Condition),這是一個結果只能是「真」(True)或「假」(False)的語句。這種「真/假」的結果被稱為布林(Boolean)值。
類比: 當你起床時,你會看看窗外。條件: 現在在下雨嗎?(真或假)。
比較運算子
為了檢查條件,我們使用比較運算子:
- \(=\) 或 \(==\) :等於(用於比較兩件事物是否相同)
- \(\ne\) 或 \(<>\) :不等於
- \(>\) :大於
- \(<\) :小於
- \(\ge\) :大於或等於
- \(\le\) :小於或等於
記憶小撇步: 把大於/小於符號想像成一隻飢餓的鱷魚;它總是想吃掉比較大的那個數字!
IF...THEN...ELSE 結構
選擇結構最常見的形式是 IF...THEN...ELSE 語句。
結構:
IF [條件為 TRUE] THEN
// 如果符合條件,執行此區塊
ELSE
// 如果不符合條件,執行此區塊
END IF
範例(偽代碼):
INPUT age
IF age >= 18 THEN
OUTPUT "你是成年人。"
ELSE
OUTPUT "你是未成年人。"
END IF
巢狀選擇
有時候,我們需要在另一個決策*之內*再做決策。這稱為巢狀選擇(Nested selection)。
範例: 如果正在下雨,那麼檢查你是否有雨傘。如果有,就帶上它。否則就穿雨衣。
Case/Switch 語句
對於根據單一變數可能有多種結果的情況(例如從選單中選擇一個選項),使用 CASE 或 SWITCH 會比多個 IF...ELSE IF... 語句看起來整潔許多。
範例(偽代碼):
INPUT choice
CASE OF choice
1: OUTPUT "你選擇了選項 A"
2: OUTPUT "你選擇了選項 B"
OTHERWISE: OUTPUT "無效的選擇"
END CASE
快速複習:選擇
選擇結構使用布林條件(真/假)來決定執行哪些指令。關鍵結構包括 IF...THEN...ELSE 和 CASE。
3. 迭代:重複指令 (迴圈)
如果你需要電腦執行同一個任務幾百次甚至幾千次怎麼辦?重複寫指令會很冗長且容易出錯。這時就是迭代(Iteration),也就是迴圈(Loop),派上用場的時候了!
迭代能節省時間,讓程式碼更簡潔,它是程式設計中最強大的工具之一。
類型 1:計數控制迴圈 (FOR 迴圈)
當你在迴圈開始前,就能明確知道需要重複多少次時,就會使用計數控制迴圈。
偽代碼範例: FOR...TO...NEXT
FOR count = 1 TO 10
OUTPUT "Hello"
NEXT count
這段程式碼會準確地印出 "Hello" 10 次。變數 count 控制著迴圈,並會自動增加(遞增),直到達到結束值(10)。
類型 2:條件控制迴圈
條件控制迴圈會無限期地運行,直到特定條件變為真或假為止。我們事先並不知道它會運行多少次。
類比: 跑步直到你聽到鈴聲響起。你不知道需要跑多久,只知道當滿足條件(聽到鈴聲)時就停止。
a) WHILE 迴圈(在開頭檢查條件)
WHILE 迴圈在執行迴圈內的指令之前會先檢查條件。如果條件一開始就是假的,迴圈內的程式碼就永遠不會執行。
偽代碼範例:
SET password = "Secret"
INPUT guess
WHILE guess != password
OUTPUT "再試一次。"
INPUT guess
END WHILE
OUTPUT "存取成功。"
迴圈會持續執行,只要(while)猜測不正確。
常見錯誤:無限迴圈!
如果 WHILE 迴圈內的條件永遠不會改變以使其變為假,迴圈就會永遠運行下去,導致程式崩潰或凍結。請務必確保迴圈內有東西會改變條件!
b) REPEAT UNTIL 迴圈(在結尾檢查條件)
REPEAT UNTIL 迴圈會在檢查條件前,先執行指令至少一次。迴圈會持續重複,直到(until)條件變為真。
偽代碼範例:
REPEAT
INPUT user_input
UNTIL user_input >= 0
OUTPUT "輸入了有效的正數。"
在這個範例中,程式至少必須要求輸入一次,即使使用者立即輸入了正數。
你知道嗎?(WHILE 與 REPEAT UNTIL 的差別)
關鍵差異在於,如果條件一開始就是假的,WHILE 迴圈可能會執行 0 次,而 REPEAT UNTIL 迴圈則至少會執行 1 次。
快速複習:迭代
迭代能有效地重複指令。
1. 計數控制 (FOR): 已知重複次數。
2. 條件控制 (WHILE/REPEAT): 當滿足特定條件時停止。
程式設計結構最終總結
你現在已經掌握了結構化程式設計的三大支柱。你遇到的每一個程式,無論使用什麼語言(Python、Java 等),都離不開這三種結構:
- 順序: 直線式執行。做 A,然後做 B,最後做 C。(必要步驟。)
- 選擇: 根據條件(真/假)選擇路徑。(決策點。)
- 迭代: 重複一系列指令,直到滿足條件或達到計數。(效率與重複。)
做得好!理解這些概念,讓你準備好編寫強大且具邏輯性的演算法了!