歡迎來到「邏輯思考」!
你好!歡迎來到電腦科學中最令人興奮的部分之一。到目前為止,你可能已經學習過如何拆解問題或如何隱藏不必要的細節。現在,我們即將進入運算思維的「大腦」:邏輯思考 (Thinking Logically)。
邏輯思考的核心在於賦予電腦做出決策的能力。由於電腦本身並不具備真正的「智慧」,我們必須明確地告訴它們「何時」需要做決定,以及「如何」做出決定。如果起初覺得這些概念有些抽象,別擔心——我們每天都在進行邏輯決策,甚至自己都沒有意識到!
在本章中,我們將重點探討三個主要面向:
1. 識別決策點。
2. 釐清這些決策的規則。
3. 觀察這些決策如何改變程式的執行路徑。
1. 識別決策點
在任何流程中,都會有路徑分岔的時刻。在電腦科學中,我們稱之為決策點 (Decision Points)。這正是解決方案中,程式必須在兩個或多個不同行動之間做出選擇的關鍵時刻。
現實生活中的類比:早晨例行公事
想像一下你準備上學的過程:
1. 起床。
2. 往窗外看。
3. 如果正在下雨,就帶把傘。
4. 否則 (Else),就把傘留在家裡。
5. 步行去學校。
第 2 步就是你的決策點。你不可能同時執行第 3 步和第 4 步;你必須根據所看到的狀況做出選擇。
軟體中常見的決策點:
當你需要檢查某些事物時,決策點通常就會出現,例如:
• 驗證:使用者輸入的密碼正確嗎?
• 搜尋:這是清單中我要找的項目嗎?
• 遊戲邏輯:玩家的生命值歸零了嗎?
• 使用者選擇:使用者點擊了「儲存」還是「取消」?
快速回顧:
決策點是演算法中任何一個「下一步取決於是否滿足特定條件」的節點。
2. 決定邏輯條件
一旦你找出了決策點,就需要定義支配這個選擇的「規則」。我們稱之為邏輯條件 (Logical Condition)。
在電腦科學中,這些條件幾乎總是布林值 (Boolean)。這意味著條件的答案必須是真 (True) 或假 (False)(即「是」或「否」)。電腦最討厭「可能」這種模糊地帶!
如何建立條件
我們通常使用比較運算子 (Comparison Operators) 來建立這些規則:
• == (是否相等?)
• != (是否不相等?)
• > (是否大於?)
• < (是否小於?)
範例:如果你正在建立一個登入系統,邏輯條件就是:「輸入的密碼 (entered_password) 是否等於儲存的密碼 (stored_password)?」
複雜的決策 (AND, OR, NOT)
有時決策取決於多個因素。我們使用邏輯運算子 (Logical Operators) 將它們連接起來:
• AND:兩個部分都必須為真(例如:「如果我有錢 AND 商店有開……」)
• OR:至少有一個部分為真(例如:「如果是星期六 OR 星期日,我就可以睡到自然醒。」)
• NOT:反轉邏輯(例如:「如果現在 NOT 在下雨……」)
記憶小撇步:「守門員」規則
將邏輯條件想像成一位守門員。他們有一份具體的檢查清單。如果你沒有達到清單上的確切標準(條件),你就無法通過那條路徑!
重點總結:
邏輯條件是用來決定採取哪條路徑的準則。它的運算結果永遠必須是真 (True) 或假 (False)。
3. 決策如何影響程式流程
流程 (Flow) 是指指令執行的順序。若沒有邏輯,程式就是線性流程 (Linear Flow)(只會從第 1 行執行到第 2 行,再到第 3 行)。邏輯則引入了分支 (Branching)。
分支(選擇結構)
當程式到達決策點時,它會「分支」。這意味著它會根據邏輯條件的結果,遵循一套不同的指令。
流程視覺化:
在流程圖中,我們使用菱形圖案來表示決策。一條路徑進來,但有兩條路徑(真/假)出去。這清楚地展現了「流程」如何改變方向。
對程式的影響:
• 跳過程式碼:邏輯允許程式跳過不相關的指令(例如,如果你已經登入,程式就會跳過「輸入密碼」的畫面)。
• 重複(迭代):決策也控制迴圈。程式可能會決定重複某項任務,直到滿足特定條件為止(例如:「一直要求輸入密碼,直到輸入正確為止」)。
常見錯誤,務必避免:
遺漏「假 (False)」路徑:學生經常只規劃條件為真 (True) 時的情況,卻忘記告訴電腦當條件為假 (False) 時該做什麼。請務必問自己:「如果答案是『否』,會發生什麼事?」
快速回顧:
決策將流程從直線變為一系列的分支,使程式能具備動態性並應對不同的情況。
總結檢查清單
在繼續往下學習之前,請確認你已掌握邏輯思考的三個步驟:
• 識別 (Identify):我能否在問題中找出必須做出選擇的地方?(菱形圖案)。
• 決定 (Determine):我能否寫出決定結果的具體規則(條件)?(布林值)。
• 評估流程 (Evaluate Flow):我能否解釋程式路徑如何根據該決策而改變?(分支結構)。
你知道嗎? 歷史上第一個「臭蟲 (Bug)」其實是一隻真的飛蛾卡在電腦裡。即使在那時,它也導致電腦的邏輯崩潰,因為實體零件無法正確完成「真」或「假」的電路運作!
如果起初覺得有點棘手,別擔心!邏輯思考是一項技能,只要你多練習編寫小型程式,或為日常瑣事繪製流程圖,就會變得越來越容易。你一定做得到的!