歡迎來到程序導向編程 (Procedural-Oriented Programming)!
你好!今天我們要深入探討程序導向編程。你可以把它想像成編程界的「食譜」。就像廚師按照一系列步驟來烘焙蛋糕一樣,程序導向的程式也是按照一套指令來完成任務。
這種方法是計算機科學中最重要的基礎之一。它能幫助我們將龐大且令人望而生畏的問題,拆解成細小、易於處理的部分。別擔心,即使現在聽起來有點技術性——讀完這些筆記後,你會發現這其實是一種保持程式條理清晰的聰明方法!
1. 什麼是結構化編程 (Structured Programming)?
結構化編程是編寫程序導向程式的一種特定方式。其主要目標是使代碼更易於閱讀、測試和修正。它依賴於你可能已經熟悉的這三個基本構建模塊:
1. 順序 (Sequence):按照特定順序執行操作。
2. 選擇 (Selection):做出決策(如 if 語句)。
3. 迭代 (Iteration):重複執行任務(如 for 或 while 循環)。
在結構化方法中,我們使用由上而下設計 (Top-down design)。這意味著我們從程式要實現的「宏觀願景」開始,不斷將其拆解成越來越小的子任務,直到它們簡單到足以輕鬆編寫為止。
日常類比:籌備生日派對
如果有人叫你去「籌備派對」,你可能會感到無從下手。運用結構化方法,你會將其拆解:
• 任務 1:整理賓客名單。
• 任務 2:採購食物。
• 任務 3:安排音樂。
然後,你進一步拆解這些任務。「採購食物」變成了「製作購物清單」和「去超市購物」。這正是我們設計程序導向程式的方法!
快速回顧:結構化方法
• 使用由上而下設計。
• 將問題拆解成子任務。
• 使程式不僅對電腦,對人類來說也更易於理解。
2. 使用層次結構圖 (Hierarchy Charts) 進行設計
在動手寫代碼之前,我們需要一張地圖。在計算機科學中,我們使用層次結構圖來展示程式的結構。
層次結構圖看起來像家譜。最高層是「老闆」任務,下方則是「員工」子任務。
重點提示:層次結構圖顯示了任務內容及其相互關係,但它並不顯示執行順序,也不顯示內部的邏輯(如循環)。
如何閱讀層次結構圖:
1. 頂層 (Top Level) 代表整個程式。
2. 第二層 (Second Level) 展示主要模塊(程式的大塊組成部分)。
3. 底層 (Lower Levels) 將這些模塊進一步拆解成更小的程序或函數。
關鍵總結
層次結構圖是程式設計的工具。它們幫助開發人員將複雜的系統拆解為更小、更簡單的模塊並視覺化。
3. 子程序 (Subroutines) 的威力
在程序導向編程中,我們將代碼放入子程序(包括程序 (Procedures) 和 函數 (Functions))。將子程序想像成一個執行特定工作的「微型程式」。
為什麼要使用子程序?
• 可重用性 (Reusability):代碼只需編寫一次,但你可以隨意多次調用它。
• 測試更簡單:你可以一次測試一個小型程序,確保其運作完美後,再將其加入主程式中。
• 團隊合作:在現實中,不同的程式設計師可以同時開發不同的子程序。
你知道嗎?
通過使用子程序,你可以減少主程式的「長度」,使其更容易閱讀。這就像一本沒有章節的 500 頁書籍,與一本整齊劃分為各個章節的書籍之間的區別!
4. 數據組織:局部變量 vs 全局變量
當我們使用子程序時,必須決定數據(變量)應該存放在哪裡,這稱為作用域 (Scope)。
全局變量 (Global Variables):
它們在程式的最頂端聲明。程式的任何部分都可以查看並修改它們。
類比:大街上的廣告牌。城裡每個人都能看到它並在上面塗寫。
局部變量 (Local Variables):
它們是在特定子程序內部聲明的。它們僅在該子程序運行時存在。程式的其他部分根本不知道它們的存在!
類比:臥室裡的私人日記。只有你在那個房間裡時才能看見它。
為什麼局部變量(通常)更好:
使用局部變量是一種良好習慣,因為:
1. 它們防止了程式其他部分對數據的「意外」修改。
2. 它們節省內存(因為電腦在子程序結束後會刪除它們)。
3. 它們使子程序保持獨立性,意味著你可以將子程序複製到不同的項目中,它依然能運作!
避免常見錯誤
不要過度依賴全局變量。如果你的程式出現 Bug,而全局變量的數值出錯,你必須檢查每一行代碼才能找出在哪裡被修改。而使用局部變量,你只需要檢查它所屬的那個子程序即可!
5. 結構化方法的優勢
總結一下,為什麼我們要費心進行這些結構設計?以下是你在考試中需要記住的關鍵優勢:
• 可讀性 (Readability):代碼經過組織並使用具意義的名稱,使他人更容易理解。
• 可維護性 (Maintainability):如果規則發生變化(例如稅率變動),你只需要更新處理該計算的特定模塊。
• 降低複雜性 (Reduced Complexity):將問題拆解,能減輕程式設計師的壓力。
• 可靠性 (Reliability):由於模塊更小,它們更容易進行徹底的調試和測試。
記憶法:「程序導向編程的 4 個 R」
要記住這些好處,可以參考:
1. Readability(可讀性:易於查看)
2. Reliability(可靠性:較少的 Bug)
3. Reusability(可重用性:寫一次,用多次)
4. Repairability(可維修性:易於修復/維護)
關鍵總結
結構化方法的核心在於效率與組織。它將一團混亂的「意大利麵條式代碼」轉變為整潔、模塊化的系統,不僅易於構建,也易於管理。
如果起初覺得這些概念比較抽象,不用擔心!隨著你多練習編寫子程序和繪製層次結構圖,這種「結構化」的思考方式會變得越來越自然。編程愉快!