簡介:歡迎來到邏輯思維的世界!

你有沒有試過站在十字路口,苦惱該走哪一條路?或者你需要決定是多睡五分鐘,還是起床準備上學?在計算機科學中,我們稱之為邏輯思維 (Thinking Logically)

電腦雖然運算速度驚人,但它們其實並不「聰明」。它們無法「感覺」哪一個選擇才是正確的,因此需要我們提供一套清晰明確的規則。在這一章中,我們將學習如何精確地辨識電腦何時需要進行選擇、它如何運用邏輯做出決定,以及這些決定如何改變程式運行的「路徑」。別擔心這聽起來有點抽象,一旦你掌握了當中的規律,這就像跟著食譜做菜一樣簡單!

1. 辨識決策點 (Decision Points)

邏輯思維的第一步是找出哪裡需要進行決策。在程式中,決策點就像是「路叉口」。根據問題答案的不同,程式會執行不同的操作。

決策點通常出現在程式遇到不確定狀態時。例如,在遊戲中,程式在檢查分數之前,並不知道玩家是否已經獲勝。

現實生活類比:想像一下電影院的自動售票機,它需要做出一個決定:「顧客是否未滿 18 歲?」
如果是 YES (是),則收取兒童票價。
如果是 NO (否),則收取成人票價。

程式中常見的決策點:
• 登入時檢查密碼是否正確。
• 決定玩家是否有足夠的「魔力值」(mana) 來施展法術。
• 保安系統檢查感應器是否偵測到移動。

快速回顧:決策點是指解決方案中,程式路徑根據某個條件分岔成兩條或多條路線的任何時刻。

2. 確定邏輯條件 (Logical Conditions)

現在我們知道決策在何處發生,接下來我們需要知道電腦如何做出這些決定。這正是透過邏輯條件來完成的。

條件是一個結果為 TRUE (真)FALSE (假) 的陳述句(這被稱為布林邏輯 (Boolean Logic))。電腦會評估這個條件,而評估結果決定了程式會走哪一條路。

邏輯工具:比較運算子 (Comparison Operators)

為了建立這些條件,我們會使用簡單的數學符號:
等於: \( == \)
不等於: \( != \)
大於: \( > \)
小於: \( < \)
大於或等於: \( >= \)
小於或等於: \( <= \)

範例:如果我們正在為恆溫器設計程式,條件可能是: \( current\_temp < target\_temp \)。如果結果為 TRUE,加熱器就會啟動!

記憶小撇步:把邏輯條件想像成一個「守門人」。守門人會問一個「是/否」的問題。只有當答案是「是」(True) 時,你才能通過大門。

常見錯誤:千萬別搞混賦值運算子 (\( = \)) 和比較運算子 (\( == \))。使用 \( = \) 來設定一個值(例如 \( x = 5 \)),而使用 \( == \) 來檢查兩者是否相等。

3. 決策如何影響程式流程 (Program Flow)

程式的「流程」是指執行指令的順序。當我們加入決策後,就不再只是單純的順序結構 (Sequence)(一行接一行執行),而是開始使用分支結構 (Branching)(也稱為選擇結構 Selection)。

分支結構允許程式跳過某些與當前情況無關的代碼區塊。如果「用戶是管理員」的條件為 FALSE,程式就會完全略過允許刪除用戶的代碼。這能讓程式更有效率且更安全。

視覺化流程

我們經常使用流程圖來觀察運作方式。流程圖中的菱形代表決策點。從菱形會延伸出兩支箭頭:一支代表「True」,另一支代表「False」。

巢狀決策 (Nested Decisions) 的影響:
有時候,一個決策會導向另一個決策,這稱為「巢狀」。
範例:
1. 用戶是否已登入?(如果是,則進行第 2 步)
2. 用戶是否為管理員?(如果是,則顯示刪除按鈕)

你知道嗎?這種邏輯流程正是讓電子遊戲中的「AI」看起來很聰明的原因。敵人角色並不是真的在「思考」;它只是在遵循一個龐大的邏輯決策樹:「我看得到玩家嗎? -> 如果是,玩家在射程內嗎? -> 如果是,攻擊!」

總結:重點回顧

1. 決策點:這是代碼中程式必須做出路徑選擇的位置。尋找「如果」(if) 的情境來辨識它們。

2. 邏輯條件:這是用來做出選擇的規則。它們的運算結果必須是布林值(True 或 False)。

3. 程式流程:決策會改變程式的路徑。分支結構確保電腦只執行當前情況下必要的代碼。

給你的鼓勵:邏輯就像拼圖。一旦你確認了「如果」以及「那麼」的邏輯,剩下的程式結構就會自然而然地連結起來。加油,你一定可以做到的!