歡迎來到解難的世界!
你有沒有試過砌一套複雜的 LEGO,或是第一次嘗試焗蛋糕?你肯定不會隨便把材料混合在一起就期望它會成功,對吧?你需要遵循一個計劃!在電腦科學中,我們也是這樣做的。在程式設計師輸入任何一行代碼之前,他們都會遵循特定的步驟,以確保能用最好的方法解決問題。
在這些筆記中,我們將學習解難程序與技巧。學完之後,你會發現程式設計與其說是「打字」,不如說是「思考」!
別擔心,如果有些詞彙看起來很艱深,我們將會把它們拆解成容易理解的小概念!
解難的 6 大階段
把這些階段想像成路線圖,如果你錯過了一個轉彎,就可能會迷路!以下是每一位程式設計師都會使用的六個步驟:
1. 定義問題 (Problem Definition)
定義:找出究竟需要解決什麼問題。如果你連問題是什麼都不知道,就沒辦法修正它!
目標:用簡單的文字清晰地說明問題。
比喻:在蓋房子之前,你需要先決定是要蓋一間小木屋還是摩天大樓。
2. 分析問題 (Problem Analysis)
定義:仔細審視問題,看看你有什麼資訊,以及你想要什麼結果。
目標:識別輸入 (Inputs)(放入什麼)和輸出 (Outputs)(產出什麼)。
比喻:如果你在製作奶昔,水果和牛奶就是輸入;而美味的奶昔就是輸出。
3. 設計演算法 (Algorithm Design)
定義:為了解決問題,編寫一個步驟詳盡的計劃或「食譜」。
目標:寫出一套任何人(或電腦)都可以跟隨的邏輯路徑。
小貼士:我們通常會在這個階段使用流程圖或「偽代碼」(Pseudocode,即簡單的日常英文說明)。
4. 程式編寫 (Program Coding)
定義:將你的演算法(計劃)轉換成電腦能理解的語言(如 Python、Scratch 或 C++)。
目標:將你的構思轉化為實際可運作的程式。
比喻:這就像廚師終於根據食譜開始烹飪餐點一樣。
5. 程式偵錯與測試 (Program Debugging and Testing)
定義:檢查程式是否有錯誤(稱為臭蟲/Bugs),並確保它每次都能正確運作。
目標:在人們開始使用軟件之前,找出錯誤並加以修復。
你知道嗎?「Bug」(臭蟲)這個詞源於 1947 年,當時有一隻飛蛾真的卡在早期的電腦裡面!
6. 程式文件編寫 (Program Documentation)
定義:撰寫關於程式如何運作以及如何使用的說明和指引。
目標:幫助其他人(或未來的你自己)理解你的代碼。
比喻:這就像新電器附帶的說明書一樣。
記憶小技巧:要記住這 6 個階段,試試這個句子:
Dogs Always Drink Cold Tasty Drinks
(Definition 定義, Analysis 分析, Design 設計, Coding 編碼, Testing 測試, Documentation 文件編寫)
快速複習:哪一個階段像「食譜」?(答案:設計演算法)。哪一個階段是關於修復錯誤的?(答案:偵錯)。
拆解問題:IPO 模型
當我們處於分析問題階段時,我們會使用一個非常有用的工具,稱為 IPO 模型。它代表 Input(輸入)、Process(處理)和 Output(輸出)。
幾乎每個電腦程式都遵循這個簡單的流程:
1. 輸入:進入程式的數據(例如:數字、文字或滑鼠點擊)。
2. 處理:電腦將輸入轉換為有用資訊的動作(例如:將數字加起來)。
3. 輸出:電腦最後顯示或給出的結果(例如:螢幕上的答案)。
例子:計數機程式
想像你想製作一個將兩個數字相加的程式。
- 輸入:你輸入的兩個數字(例如 \(5\) 和 \(3\))。
- 處理:電腦執行加法運算 (\(5 + 3 = 8\))。
- 輸出:數字 \(8\) 出現在你的螢幕上。
重點總結:當你開始一個項目時,一定要問自己:「我需要給電腦什麼(輸入),以及我想要得到什麼結果(輸出)?」
現實生活例子:製作「成績檢查器」
讓我們看看這些階段如何應用於現實任務:製作一個讓學生知道自己測驗是否及格的程式。
1. 定義:建立一個工具來幫助學生檢查考試成績。
2. 分析:
輸入:學生的分數(例如 \(45\))。
輸出:顯示「及格」或「不及格」的訊息。
3. 設計:如果分數是 \(50\) 分或以上,顯示「及格」。否則,顯示「不及格」。
4. 編碼:將「如果-那麼」(If-Then) 邏輯輸入到程式語言中。
5. 測試:嘗試輸入 \(100\)(應顯示及格)、\(20\)(應顯示不及格)以及 \(-5\)(應顯示錯誤!)。
6. 文件編寫:寫下筆記:「此程式由 [你的名字] 於 2023 年編寫。及格分數設定為 50 分。」
常見錯誤,記得避開!
- 直接跳到編碼:很多同學想馬上開始寫代碼。千萬不要!如果你沒有計劃(演算法),你會更快感到卡住和沮喪。
- 忘記測試:程式能「運行」並不代表它就是對的。務必用不同的數字進行測試,確保邏輯萬無一失。
- 忽略文件編寫:你可能會以為自己下個月還記得程式是如何運作的,但你多半會忘記!一定要隨手為自己寫下小筆記。
總結檢查清單
準備好迎接測試了嗎?檢查一下你知道:
[ ] 解難的 6 個階段及順序。
[ ] 「輸入」和「輸出」的意思。
[ ] 為什麼我們需要「演算法」(計劃)。
[ ] 什麼是「臭蟲」(Bug)(程式中的錯誤)。
[ ] 為什麼「文件編寫」對他人很有幫助。
做得好!你已經掌握了世界上所有 App、遊戲和網站背後最根本的思考過程!