簡介:你的數據工具箱
歡迎來到電腦科學中最基礎的章節之一:數據類型與數據結構!
別擔心,這聽起來很複雜,其實它們只是關於如何整理資訊而已。
想像你在為旅行收拾行李。你不會把湯倒進鞋盒裡,也不會把細小的耳環放進裝衣服的巨大行李箱。你會為不同的物品選擇合適的容器。
在程式編寫中,數據類型(Data types)就是我們用來儲存不同資訊(數字、字母、真/假值)的容器。而數據結構(Data structures)則是我們如何將這些容器有效地分組。掌握這些技巧,是寫出高效且強大程式的關鍵!
重點速讀
數據類型告訴電腦某筆數據屬於什麼類型(數字、文字等),這樣電腦才能知道需要分配多少記憶體空間,以及可以對這些數據執行哪些運算。
第一節:必備的基礎數據類型
這五種基礎類型是你所有程式項目的基石,你必須要徹底搞懂它們!
1. 整數 (Integer, INT)
最簡單的數字類型。
定義: 沒有小數或分數部分的整數(包括正數、負數或零)。
- 例子: 5, 100, -12, 0
- 應用場景: 計算物品數量(如學生人數)、列表索引 (indexing),或儲存年齡。
2. 實數或浮點數 (Real or Floating Point, FLOAT)
通常簡稱為「浮點數」。這些數字因為需要包含精度,所以會佔用更多記憶體。
- 定義: 包含小數點或分數部分的數字。
- 例子: 3.14, -0.5, 99.99, 1.0
- 應用場景: 儲存測量數值(如身高或溫度)、貨幣,或需要高精度的運算。
🚨 常見錯誤提醒: 學生經常混淆整數和浮點數。如果你在計算金錢,請務必使用實數 (Real),因為 £10.50 不是整數!
3. 字元 (Character, CHAR)
單一的符號。
- 定義: 任何單一個字母、數字、標點符號或符號。
- 例子: 'A', 'z', '5', '!', '$'。(請注意,它們通常會用單引號包起來。)
4. 字串 (String, STR)
儲存文字最常用的方式。
- 定義: 一連串或一組字元。字串本質上就是將許多字元排在一起。
- 例子: "Hello World", "CS101", "My name is John"。(請注意,它們通常會用雙引號包起來。)
- 你知道嗎? 即使你在字串中輸入 "123",電腦也會將其視為文字,而不是你可以進行數學運算的數字。
5. 布林值 (Boolean, BOOL)
最簡單、最極致的選擇!布林值對於程式的邏輯判斷至關重要。
- 定義: 一種只能儲存兩個值之一的類型:True(真) 或 False(假)。
- 應用場景: 檢查條件(例如:燈亮著嗎?)、管理程式流程(IF/THEN 語句)。
記憶小撇步:記住這些類型
試著記住每個常見類型開頭的首字母:Integer (整數), Float (浮點數), Character (字元), String (字串), Boolean (布林值)。
第二節:數據結構——將數據分組
當你有成千上萬筆數據時,你不能只是把它們儲存在個別的變數中。你需要結構來整齊地組織它們。我們將專注於兩種關鍵結構:陣列 (Arrays) 和 記錄 (Records)。
1. 陣列 (Arrays)(相同類型數據的列表)
把陣列想像成一個整齊、有編號的鴿子籠,每一個格子都必須放入完全相同類型的物品(例如:全部是數字,或全部是名稱)。
- 定義: 一種用於儲存固定大小、屬於相同數據類型序列的數據結構。
- 索引 (Indexing): 每個元素都透過索引(一個數字位置)來存取。在大多數程式語言中,索引通常從 0 開始。
1.1 一維 (1D) 陣列
一個簡單的直線或列表。
類比: 一張簡單的購物清單,每個項目都是字串(文字)。
如果我們有一個名為 Scores 的陣列,儲存了 4 個整數:
Scores = [ 85, 92, 78, 99 ]
- Scores[0] = 85(索引 0 的分數)
- Scores[3] = 99(索引 3 的分數)
要找到第二個元素,你得看索引 1(因為我們從 0 開始數)。
1.2 二維 (2D) 陣列
二維陣列是「陣列的陣列」。它就像一個網格、表格或試算表,需要兩個索引才能定位一個元素:行 (Row) 索引和列 (Column) 索引。
類比: 西洋棋盤或教室裡的座位表。
考慮一個小型座位表陣列(3 行,4 列):
| (R0, C0) | (R0, C1) | (R0, C2) | (R0, C3) |
| (R1, C0) | (R1, C1) | (R1, C2) | (R1, C3) |
| (R2, C0) | (R2, C1) | (R2, C2) | (R2, C3) |
要存取特定座位,你需要兩個座標:
如果我們要找第二行、第三列的項目,我們會找 ArrayName[1][2](記得索引從 0 開始)。
陣列重點: 陣列非常適合儲存大量同類型的數據(全是數字,或全是字串)。
2. 記錄 (Record)(混合不同類型數據)
陣列有侷限性,因為它們只能容納同一種類型的數據。如果你需要儲存關於單一個體(如一名學生)的相關資訊,而這些資訊數據類型各不相同,該怎麼辦?
這就是記錄 (Record)(有時稱為結構或 'struct')派上用場的時候。
- 定義: 一種數據結構,允許你將相關的數據項(數據類型可能不同)組合在一起。
- 欄位 (Fields): 記錄內個別的數據項稱為欄位或屬性。
類比: 身份證或手機裡的聯絡人資訊。它包含了文字、數字,甚至可能還有一個圖片標記。
例子:定義一個學生記錄
我們定義一個名為 StudentInfo 的結構,包含幾個欄位:
Record StudentInfo:
Name: String
Age: Integer
GradeAverage: Real
IsEnrolled: Boolean
要建立一個名為 Sam 的學生並存取其數據,你可以使用點記法 (dot notation):
- Sam.Name 會返回一個字串(例如:"Sam Jones")
- Sam.Age 會返回一個整數(例如:16)
- Sam.IsEnrolled 會返回一個布林值(例如:True)
比較:陣列 vs. 記錄
理解兩者的區別非常重要!
| 特性 | 陣列 (Array) | 記錄 (Record) |
|---|---|---|
| 數據類型 | 必須全部為相同類型(例如:全是整數)。 | 可以是不同類型(例如:字串、整數、實數)。 |
| 用途 | 儲存物品清單或序列。 | 儲存描述單一個體(如個人)的屬性/欄位。 |
| 存取方法 | 透過數字索引存取(例如:Array[3])。 | 透過欄位名稱存取(例如:Record.Name)。 |
如果起初覺得有點棘手,別擔心。 試著練習畫出一維和二維陣列的圖表,並標記索引。一旦你理解了結構,編程邏輯就會變得簡單多了!
章節複習:關鍵詞總結
- 整數 (Integer): 整數(無小數)。
- 實數/浮點數 (Real/Float): 帶有小數的數字。
- 字串 (String): 一連串字元(文字)。
- 布林值 (Boolean): True 或 False 值。
- 陣列 (Array, 1D/2D): 儲存多個相同數據類型的項目,透過數字索引存取。
- 記錄 (Record): 儲存相關的數據項,這些數據項可以是不同數據類型,透過欄位名稱存取。
現在,你已經具備了為程式挑戰中遇到的任何數據選擇正確儲存方案的基本知識!繼續練習,祝你好運!