歡迎來到數據類型與結構的世界!
在本章中,我們將學習電腦如何儲存和組織資訊。將程式想像成一位正在準備食譜的大廚:指令就是程式碼 (code),而食材則是數據 (data)。要成為一名出色的程式設計師,你需要精確地了解你正在處理哪些「食材」,並學會如何妥善儲存它們,以免造成混亂!
1. 變數與常數
在探討具體的數據類型之前,我們必須知道該將它們放在哪裡。在程式設計中,我們使用「容器」來存放資訊。
變數 (Variables)
變數是電腦記憶體中的一個位置,用來儲存數據。變數最重要的特點是,其數值在程式執行期間可以更改。
例子:在電子遊戲中,你的「分數」就是一個變數。它從 0 開始,並隨著你的遊玩而增加。
常數 (Constants)
常數同樣是記憶體中的一個位置,但一旦你存入數值,它就無法更改。在整個程式執行過程中,它將保持不變。
例子:圓周率 (\( \pi \)) 的數值,或遊戲中的關卡總數。
快速重溫:
變數 (Variable) = 可以改變(就像你的年齡)。
常數 (Constant) = 保持不變(就像你的出生日期)。
2. 基本數據類型 (Primitive Data Types)
每一項數據都有一個「類型」,告訴電腦如何處理它。以下是你需要掌握的四種「基本」類型:
1. 整數 (Integer): 沒有小數點的整數。它們可以是正數或負數。
例子:10, -5, 0, 42
2. 實數 (Real 或 Float): 帶有小數點的數字。
例子:3.14, -0.5, 10.0
3. 布林值 (Boolean): 此類型只有兩個值:True(真)或 False(假)。可以把它想像成電燈開關。
例子:IsGameOver = True
4. 字元 (Character 或 Char): 單一字母、數字或符號。
例子:'A', '!', '3'
記憶小撇步:記住 I.R.B.C.(I Read Big Comics),即 Integer(整數)、Real(實數)、Boolean(布林值)、Character(字元)!
關鍵重點:選擇正確的數據類型可以節省記憶體並防止錯誤。你不會試圖對一個布林值進行數學運算,也不會用整數來儲存像 £1.99 這樣的價格!
3. 結構化數據類型 (Structured Data Types)
有時候,單一數據項是不夠的,我們需要方法將數據組合在一起。這些被稱為結構化數據類型。
字串 (Strings)
字串是一組連結在一起的字元集合。我們通常將它們放在引號內。雖然它們看起來像單詞,但電腦將其視為一串連續的字元「鏈」。
例子:"Hello World" 或 "Computer Science123"
陣列 (Arrays - 一維)
陣列是一個列表,其中的項目全都是相同的數據類型,並儲存在同一個名稱下。
比喻:將一維陣列想像成一個雞蛋盒。每個格子都有一個索引編號(從 0 開始!),而你可以在每個格子裡放一個項目。
陣列 (Arrays - 二維)
二維陣列就像一個包含行和列的表格。要找到某個數據,你需要兩個坐標。
比喻:將二維陣列想像成電影院座位表或棋盤。要找到一個座位,你需要行號和座位編號。
記錄 (Records)
記錄允許你儲存一組相關的數據項,它們可以屬於不同的數據類型。
例子:「學生 (Student)」記錄可能包含:
- FirstName (字串)
- Age (整數)
- AttendancePercent (實數)
常見錯誤:忘記陣列通常是從 0 開始計算,而不是 1!這被稱為從零開始索引 (zero-indexing)。
4. 字串操作 (String Manipulation)
程式經常需要更改或「操作」字串。以下是你在 Paper 2 中會用到的四種主要工具:
1. 長度 (Length): 找出字串中有多少個字元(包括空格!)。
例子:"Cat" 的長度是 3。
2. 位置 (Position): 找出特定字元在哪裡。記得從 0 開始數!
例子:在字串 "Apple" 中,'p' 的位置是 1。
3. 子字串 (Substring): 從較長的字串中提取較小的一部分。
例子:從 "Strawberry" 提取子字串以得到 "Berry"。
4. 大小寫轉換 (Case Conversion): 將文字全部改為大寫 (UPPERCASE) 或全部改為小寫 (lowercase)。
用途:檢查用戶輸入的是 "YES"、"yes" 還是 "Yes"——你可以先將它們全部轉換為小寫,這樣就很容易檢查了!
你知道嗎?電腦將 'A' 和 'a' 視為完全不同的東西,因為它們擁有不同的底層二進位代碼!
章節總結
檢查清單:你能否...
- 解釋變數與常數的區別?
- 識別 Integer(整數)、Real(實數)、Boolean(布林值) 和 Char(字元) 類型?
- 解釋陣列存放相同類型的項目,而記錄可以存放不同類型?
- 計算一段文字的長度或找到其子字串?
如果覺得要記的東西太多,別擔心。練習編寫更多使用這些類型的程式,你會慢慢感到得心應手!