歡迎來到程式設計的世界!
你有沒有想過你最愛的應用程式是如何「思考」的?這並非魔法,一切都歸功於程式結構(Constructs)。你可以把程式結構想像成編寫程式碼的積木。就像食譜有步驟、配料和決策(例如「烤 20 分鐘或烤到金黃色為止」),程式也是利用這些邏輯結構來解決問題的。
在本章中,我們將學習如何識別這些積木,並運用它們來編寫出令人驚嘆的程式。如果一開始覺得內容很多,不用擔心;一旦你掌握了當中的規律,編程就會像看地圖一樣自然!
1. 基礎配料:變數與常數
在我們做任何事之前,需要先儲存資料。我們主要使用兩種類型的容器:
• 變數(Variables):這些是程式執行期間,數值可以改變的容器。想像一下電子遊戲中的「分數」框;它從 0 開始,然後不斷增加。
• 常數(Constants):這些是數值保持不變的容器。試想 \( \pi \) (Pi) 的數值,或是遊戲中的「重力」設定。我們使用常數是為了讓程式碼更易讀,並防止意外的變動。
初始化與賦值
• 初始化(Initialisation):這是你第一次為變數賦予數值。就像買了一個新資料夾,並放入第一張紙一樣。
• 賦值(Assignment):這是你設定(或更改)變數數值的過程。在許多程式語言中,我們使用 \( = \) 符號來進行賦值。例如: \( Score = Score + 10 \)。
重點複習:
• 變數:可以改變(例如:玩家速度)。
• 常數:保持不變(例如:最大生命值)。
• 賦值:將數值存入容器中。
2. 執行順序:指令序列
序列(Sequence)是最基本的程式結構。它意味著電腦會從上到下,一個接一個地執行指令。順序很重要!
比喻:想想你的晨間日常。如果你在穿襪子之前先穿鞋子,那肯定會很麻煩!編程也是一樣的道理。
3. 作出抉擇:選擇結構
有時候,程式需要在不同的路徑之間做出選擇。我們稱之為選擇(Selection)。這通常涉及 IF 語句。
現實生活例子:
如果(IF)正在下雨,那麼(THEN)就帶傘。否則(ELSE),就戴太陽眼鏡。
在編程中,我們使用關係運算子來做出這些決定:
• \( == \)(等於)
• \( != \)(不等於)
• \( > \)(大於)
• \( < \)(小於)
常見錯誤:許多學生在想要表達「是否等於」時,錯誤地使用了單個 \( = \) 符號。請記住: \( = \) 是用來賦值的,而 \( == \) 才是用來比較兩個數值!
4. 重複執行:重複與迭代
電腦非常擅長一遍又一遍地執行枯燥的任務而不會感到疲倦。我們使用迴圈(Loops)來處理這些任務。你需要認識三種主要的類型:
計數控制迴圈(重複)
當你明確知道想要重複執行多少次時使用。
例子:「拍手 5 次。」
在程式碼中,這通常表現為 FOR 迴圈。
條件控制迴圈(重複)
當你想要持續執行,直到某個條件改變為止時使用。你可能不確定需要執行多久。
例子:「持續奔跑直到抵達終點線。」
在程式碼中,這通常表現為 WHILE 迴圈。
數據結構的迭代
這是一種特殊的迴圈,會檢查集合(例如清單或陣列)中的每一個項目。
例子:「檢查花名冊上的每一位學生名字。」
你知道嗎?使用迴圈可以讓你的程式碼簡潔許多。與其寫 100 次「打印 'Hello'」,你只需在迴圈中寫一次即可!
5. 與電腦對話:輸入與輸出
如果程式無法與我們溝通,它的用途就不大了!
• 輸入(Input):使用者提供給程式的資料(例如輸入你的用戶名稱)。
• 輸出(Output):程式顯示給使用者看的資訊(例如在螢幕上打印「遊戲結束」)。
6. 程式小幫手:副程式與參數
隨著程式變得龐大,結構會變得混亂。我們使用副程式(Subprograms)(也稱為函式或程序)將程式碼歸納為可重覆使用的區塊。
比喻:想像你有一個「小小兵」,他非常清楚如何製作三明治。與其每次你肚子餓時都要解釋每一個步驟(拿麵包、塗牛油、塗果醬),你只需要大喊「製作三明治!」即可。
• 參數(Parameters):這些是你給予副程式的特定「選項」。對於三明治副程式,參數可能是果醬的口味。「製作三明治(草莓口味)」與「製作三明治(覆盆子口味)」。
7. 編寫優質程式碼:黃金法則
當你編寫程式碼區塊或副程式時,目標應為單一入口與單一出口。這意味著程式碼應該從頂部開始,並在底部結束。盡量避免從迴圈或副程式的中間「跳出」,這會讓你的程式碼更容易進行除錯(修正錯誤)!
考試重點摘要:
1. 序列:按順序執行的指令。
2. 選擇:IF 語句(做出選擇)。
3. 重複:FOR 迴圈(計數控制)與 WHILE 迴圈(條件控制)。
4. 變數會改變;常數則不會。
5. 副程式使程式碼可重複使用且更易於管理。
如果一開始覺得這些概念很困難,別擔心!學習這些結構的最佳方式就是嘗試親手編寫。從小程式開始,很快地,你就能像堆積木一樣,建立出複雜的程式。