歡迎來到程式設計結構:程式碼的基石!

哈囉,未來的電腦科學家們!你們即將進入程式設計中最重要的一個章節:結構(Constructs)。你可以把結構想像成編寫任何電腦程式所需的關鍵工具或成分,無論是簡單的計算機程式,還是複雜的電子遊戲,都離不開它們。

在本章中,我們將學習如何以邏輯方式組織指令。一旦你掌握了這三種結構,你就幾乎可以寫出任何想像得到的程式!別擔心,如果起初覺得有些困難,我們會一步一步地拆解每個概念。


三大核心程式設計結構

每個結構化程式都依賴三種基本方式來控制執行的流程:

  1. 順序(Sequence)(執行的順序)
  2. 選擇(Selection)(決策判斷)
  3. 迭代(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 語句

對於根據單一變數可能有多種結果的情況(例如從選單中選擇一個選項),使用 CASESWITCH 會比多個 IF...ELSE IF... 語句看起來整潔許多。

範例(偽代碼):

INPUT choice
CASE OF choice
1: OUTPUT "你選擇了選項 A"
2: OUTPUT "你選擇了選項 B"
OTHERWISE: OUTPUT "無效的選擇"
END CASE

快速複習:選擇

選擇結構使用布林條件(真/假)來決定執行哪些指令。關鍵結構包括 IF...THEN...ELSECASE


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。(必要步驟。)
  • 選擇: 根據條件(真/假)選擇路徑。(決策點。)
  • 迭代: 重複一系列指令,直到滿足條件或達到計數。(效率與重複。)

做得好!理解這些概念,讓你準備好編寫強大且具邏輯性的演算法了!