歡迎來到編程技術(Programming Techniques)!

在本章中,我們將從「思考」問題轉向實際「構建」解決方案。你可以把這些技術想像成你的「編程工具箱」。就像建築工人蓋房子不僅僅需要一把槌子一樣,程式設計師也需要這些特定的工具來編寫高效、易讀且穩定運行的代碼。

如果有些術語起初聽起來比較深奧,請不用擔心——我們會用你熟悉的日常生活例子來為你拆解!

1. 三大支柱:編程結構(Programming Constructs)

幾乎每一個編寫出來的程式,都是由三個基本的「積木」構成的。這些被稱為編程結構。它們控制著程式流程(即指令執行的先後順序)。

A. 順序(Sequence)

這是最簡單的結構。順序意味著電腦會按照指令編寫的確切順序,由上而下逐一執行。

例子:泡一杯茶。1. 燒開水。2. 把茶包放入杯中。3. 倒水。你不可能在燒開水之前先把水倒出來!

B. 分支(Branching / Selection)

分支是指程式需要做出決定的時候。它會檢查一個條件(通常使用 IF 語句),然後決定走哪條路。

例子:如果(IF)下雨,那麼(THEN)帶把傘,否則(ELSE)就把傘留在家裡。

C. 迭代(Iteration / Looping)

迭代意味著重複執行某段程式碼。主要有兩種類型:
1. 計數控制(Count-controlled):重複特定次數(例如 FOR 迴圈)。
2. 條件控制(Condition-controlled):重複執行直到滿足某個條件為止(例如 WHILE 迴圈)。

例子:只要你的杯子還沒滿,就繼續倒水。

快速回顧:
順序:按步驟執行。
分支:做決策(IF)。
迭代:重複任務(迴圈)。

2. 變數:區域(Local)與全域(Global)

在編程中,我們使用變數來儲存數據。然而,你建立變數的位置決定了它可以在哪裡被使用,這被稱為變數的作用域(Scope)

區域變數(Local Variables)

區域變數是在程式的特定部分(如函數或程序)內部宣告的。它只在程式執行該部分時存在。就像只有在同一個房間內的人才能看到的「私密」筆記。

為什麼要用它? 它們能節省記憶體,並防止程式的其他部分意外更改數據。

全域變數(Global Variables)

全域變數是在程式最開頭宣告的,它可以被程式的任何部分讀取和更改。就像學校走廊上的「公用」佈告欄。

風險:雖然它們看起來很方便,但使用過多的全域變數是一個壞習慣!這會讓排查錯誤(bugs)變得非常困難,因為程式的任何地方都可能在你不知情的情況下更改了該變數的值。

記憶小竅門:區域是私有的(Private),全域是公開的(Public)。

3. 模組化(Modularity):函數與程序

當程式變得龐大時,會變得雜亂無章。模組化就是將大型程式分解成更小、更易於管理的區塊,這些區塊被稱為子程序(Sub-routines)

程序(Procedures)與函數(Functions)

程序(Procedures):執行特定任務,但不會將數值回傳給主程式的程式碼區塊。
函數(Functions):執行特定任務,且總是會回傳一個值給呼叫它的程式部分的程式碼區塊。

比喻:程序就像廚師,他煮好了飯並放在櫃檯上。函數就像計算機;你給它數字,它會「回傳」計算結果給你。

重點總結:模組化使程式碼更容易測試、更容易閱讀,並讓你能夠重複使用程式碼,而不必重複輸入!

4. 參數傳遞(Parameter Passing):傳遞火炬

當我們使用子程序時,通常需要傳送訊息給它。這些資訊是通過參數傳遞的。有兩種傳遞方式,這是考試中非常熱門的題目!

A. 傳值(Passing by Value)

程式會製作一份數據的副本,並將該副本傳送給子程序。原始數據保持安全且不變。

例子:你給朋友一份你的家庭作業影本。如果他們在影本上亂畫,你的原始版本仍然是完美的。

B. 傳址(Passing by Reference)

程式會傳送原始數據的記憶體位址。這意味著子程序是在觀察實際的數據,而不是副本。

例子:你給朋友一把儲物櫃的鑰匙。如果他們進去並改變了裡面的東西,你儲物櫃裡的原始物品就真的被改變了。

常見錯誤:學生經常忘記傳值(By Value)會保護原始數據,而傳址(By Reference)允許子程序更改原始變數。

5. 使用 IDE(整合開發環境)

IDE 是你用來編寫程式碼的軟體(如 PyCharm、IDLE 或 Visual Studio)。它不僅僅是一個文字編輯器;它是一個強大的工具,旨在幫助你更快地編寫程式碼並找出錯誤。

IDE 的主要功能:

程式碼編輯器:「語法高亮(Syntax Highlighting)」(為關鍵字上色)等功能使程式碼更易於閱讀。
錯誤診斷/偵錯(Debugging):它會精確指出你在哪裡犯了錯,並允許你逐行執行程式碼以查找 bug。
執行環境:讓你只需點擊一下按鈕,即可立即測試你的程式。
自動完成:在你輸入時建議變數名稱或指令(就像手機上的預測文字輸入一樣!)。

你知道嗎?在 IDE 出現之前,程式設計師必須在基本的文字檔中編寫程式碼,並手動執行單獨的「編譯器」程式。如果發生錯誤,他們必須猜測是哪一行程式碼引起的!

最終複習清單

在完成本章之前,請確保你能夠:
• 在程式碼中辨識順序(Sequence)、分支(Branching)迭代(Iteration)
• 解釋為什麼區域變數通常優於全域變數
• 定義程序(Procedure)函數(Function)之間的區別(它是否回傳值?)。
• 解釋參數傳值(By Value)傳址(By Reference)之間的區別。
• 至少列舉出三項幫助程式設計師的 IDE 功能。

如果覺得傳址(By Reference)有點棘手也不用擔心——這是本節中最進階的概念之一!只要記住:傳值 = 複製一份,傳址 = 操作原始本。