歡迎來到程式編寫基礎!
在本章中,我們將深入探討電腦科學的核心:程式編寫 (Programming)。在這裡,你將學習如何向電腦發出指令以解決問題。你可以把程式設計師想像成編寫食譜的廚師;如果指令清晰且順序正確,成品就會很完美。如果指令一團糟,「蛋糕」(或程式)就不會成功!
如果有些術語起初聽起來像外語,別擔心,我們會將所有內容拆解成簡單易懂的小步驟。
2.2.1 程式碼的建構模組
變數 (Variables) 與常數 (Constants)
當我們編寫程式時,需要儲存數據以便日後使用。我們使用變數和常數來完成這項工作。
類比:想像一個儲物箱。
- 變數 (Variable) 是一個內容可以改變的盒子。例如,遊戲中標記為「分數 (score)」的盒子,它從 0 開始,然後變為 10。
- 常數 (Constant) 是一個一旦放入東西就密封起來的盒子。例如,\( \pi \) 的值 (3.141) 或地球的「重力 (Gravity)」。在程式運行期間,這些值始終保持不變。
賦值 (Assignments)、輸入 (Inputs) 與輸出 (Outputs)
為了使我們的程式具有互動性,我們使用這三種操作:
1. 輸入 (Input): 從使用者那裡獲取數據(例如:詢問他們的名字)。
2. 輸出 (Output): 向使用者顯示數據(例如:在螢幕上列印「Hello」)。
3. 賦值 (Assignment): 使用 = 符號為變數指定一個值。
範例:score = 10(這意味著「變數 score 現在儲存了 10 這個值」)。
程式編寫結構 (Programming Constructs)
程式的執行流程有三種方式,你必須掌握:
- 順序 (Sequence): 指令按特定的順序逐一執行。
- 選擇 (Selection): 程式使用 IF 陳述式來做出決策,這就像是路口的分岔。
- 迭代 (Iteration): 這只是迴圈 (Loops) 的高級說法。我們重複執行程式碼,直到任務完成為止。
快速回顧:
- 計數控制迴圈 (Count-controlled loops): 重複指定的次數(例如:FOR i = 1 to 10)。
- 條件控制迴圈 (Condition-controlled loops): 當某個條件為真時重複執行(例如:WHILE lives > 0)。
運算子 (Operators):編碼中的數學
你需要為了考試認清這些運算子:
算術運算子 (Arithmetic Operators):
- + (加)
- - (減)
- * (乘)
- / (除)
- ^ (指數 / 冪運算)
- MOD: 除法後的餘數(例如:\( 10 \text{ MOD } 3 = 1 \))。
- DIV: 除法後的整數商(例如:\( 10 \text{ DIV } 3 = 3 \))。
比較運算子 (Comparison Operators):
- == (等於)
- != (不等於)
- < (小於)
- <= (小於或等於)
- > (大於)
- >= (大於或等於)
重點歸納: 程式是通過順序、選擇和迭代建構的。使用變數來儲存會變化的數據,使用常數來儲存不會變化的數據。
2.2.2 數據類型 (Data Types)
每一項數據都有一個「類型」,告訴電腦如何處理該數據。
- 整數 (Integer): 整數(例如:5, -10, 0)。
- 實數 (Real 或 Float): 帶有小數點的數字(例如:15.5, -0.01)。
- 布林值 (Boolean): 只有兩個值:True(真)或 False(假)。
- 字元 (Character): 單個字母、數字或符號(例如:'A', '!', '3')。
- 字串 (String): 一連串的字元組合(例如:"Hello World")。
強制類型轉換 (Casting)
有時我們需要將數據從一種類型轉換為另一種,這稱為強制類型轉換 (Casting)。
範例: 如果使用者輸入「18」,電腦會將其視為字串。為了對它進行數學運算,我們必須將其轉換 (Cast) 為整數。
常見錯誤: 忘記你不能將字串與整數相加!除非你將字串 "5" 轉換為數字 5,否則 "5" + 5 會導致錯誤。
2.2.3 進階程式編寫技術
字串操作 (String Manipulation)
我們主要可以用兩種方式操作字串:
1. 串接 (Concatenation): 將兩個字串合併在一起(例如:"Foot" + "ball" = "Football")。
2. 切片 (Slicing): 從字串中截取一段(例如:取 "Computer" 的前三個字母得到 "Com")。
陣列 (Arrays / Lists)
陣列是一種靜態結構,用於在一個名稱下儲存多個相同數據類型的項目。
- 一維陣列 (1D Array): 就像單排儲物櫃,每個儲物櫃都有一個索引 (index)(通常從 0 開始)。
- 二維陣列 (2D Array): 就像表格或試算表,你需要兩個座標(行和列)才能找到一個項目。
記憶小撇步:永遠記住,電腦從 0 開始計數,而不是 1!
檔案處理 (File Handling)
程式通常需要在關閉後儲存數據,我們使用外部檔案來做到這一點:
- 開啟 (Open): 準備好檔案以供使用。
- 讀取 (Read): 將檔案中的數據讀入程式。
- 寫入 (Write): 將數據從程式存入檔案。
- 關閉 (Close): 儲存更改並確保檔案完整性。
子程式 (Sub Programs):函數 (Functions) 與程序 (Procedures)
與其重複編寫相同的程式碼 100 次,不如將其封裝在一個子程式中並給它命名。
- 程序 (Procedures): 執行一項任務。
- 函數 (Functions): 執行一項任務並將值返回 (RETURN) 給主程式。
作用域 (Scope - 本地與全域):
- 全域變數 (Global Variables): 可被整個程式看到並使用。
- 本地變數 (Local Variables): 僅在建立它們的子程式內部「存活」。使用本地變數能讓程式碼更簡潔並避免錯誤!
結構化查詢語言 (SQL)
SQL 用於搜尋資料庫。你只需要知道三個關鍵字:
- SELECT: 你想要哪些欄位(行)?
- FROM: 你在查看哪個表格?
- WHERE: 條件是什麼?(例如:WHERE Price > 10)
範例:SELECT Name FROM Students WHERE Grade == 'A'
你知道嗎? 你使用的大多數應用程式,如 Instagram 或 Spotify,都使用類似 SQL 的語言在巨大的資料庫中搜尋你的照片或歌曲!
重點歸納: 使用子程式讓你的程式碼「模組化」(拆分為不同部分)。使用 SQL 在表格中尋找特定數據。
總複習
1. 順序、選擇和迭代是程式執行的三種方式。
2. 變數會變;常數不會。
3. MOD 算出餘數,DIV 算出整數商。
4. 強制類型轉換 (Casting) 可改變數據類型(例如:字串轉整數)。
5. 函數有返回值;程序沒有。
6. SQL 使用 SELECT, FROM 和 WHERE 來尋找數據。