記錄 (Records):井然有序地分組數據 (課程大綱 3.2.2)
歡迎來到記錄 (Records) 的章節!你已經學過整數 (Integer) 和字串 (String) 等基本數據類型,以及陣列 (Array) 等簡單的數據結構。但如果你需要儲存複雜且相關的資訊(例如一個學生的完整資料,且每項資料的類型都不同)時,該怎麼辦呢?
這就是「記錄」派上用場的時候了!記錄是一個非常有用的結構,它讓你能夠將不同類型的資訊封裝成一個整齊的套件。掌握這個概念,是編寫結構嚴謹且強大程式的關鍵。讓我們一起深入探討吧!
究竟什麼是記錄?
記錄 (Record) 是一種基礎數據結構,旨在將一組相關的值(稱為欄位 (Fields))儲存在同一個名稱之下。你可以將整個集合視為一個實體 (Entity) 來進行操作。
類比:學生檔案夾
想像一下你正在為班級管理紙本記錄。你不會把所有的姓名、所有的成績、所有的出生日期分別堆成三堆。
相反地,你會把屬於同一個學生(例如 Sarah)的所有資訊,都放入一個標記為「Sarah」的實體檔案夾中。
記錄就是那個檔案夾(Sarah)。
裡面的不同資訊片段就是欄位 (Fields)。
關鍵組成規則
記錄最重要的特徵是,其欄位通常具有不同的數據類型。
看看我們學生記錄的欄位:
• 欄位 1: StudentID (數據類型: 整數 Integer)
• 欄位 2: Name (數據類型: 字串 String)
• 欄位 3: DateOfBirth (數據類型: 日期/時間 Date/Time)
• 欄位 4: IsEnrolled (數據類型: 布林值 Boolean)
這些不同類型的數據在邏輯上是相關的,並被分組為一個結構——即記錄。課程大綱要求你必須熟悉這種將一組值(欄位)組合成一個記錄的過程。
記錄 (Record) 是容器(實體)。
欄位 (Field) 是容器內存放單一數據片段的空間。
欄位通常具有不同的數據類型。
記錄 vs. 陣列:別搞混了!
理解記錄與陣列(你在 3.2.1 節學過)之間的差異非常重要。這往往是學生最容易混淆的地方!
陣列 (Array)(同質數據)
• 用途:儲存一組通常是相同數據類型的項目(例如:50 個考試分數的列表)。
• 存取:使用索引 (Index)(位置編號,例如 Array[3])來存取項目。
記錄 (Record)(異質數據)
• 用途:儲存一組通常具有不同數據類型的項目,但這些項目在邏輯上都與同一個實體相關(例如:學生編號 #50 的所有詳細資料)。
• 存取:使用欄位名稱(例如 StudentRecord.Name)來存取項目。
記憶小撇步: 將 Array 想成一個單欄表格,裡面有重覆的列 (Repeating Rows)(數據類型相同)。將 Record 想成表格中的單一列 (Single Row)(包含不同的欄位)。
在程式編寫中使用記錄
在程式編寫中,使用記錄前,必須先定義其結構,然後建立該結構的實例(具體的副本)來儲存數據。
步驟 1:定義記錄結構
你需要告訴程式語言這個記錄長什麼樣子——它有哪些欄位,以及每個欄位存放什麼類型的數據。
讓我們定義一個名為 Product 的基本記錄結構:
RECORD Product
ProductID: INTEGER
Name: STRING
Price: REAL/FLOAT
InStock: BOOLEAN
END RECORD
你知道嗎? 在許多現代語言如 Python 中,記錄通常是使用非物件導向的類別,或是像 `struct` (C# / VB.Net) 這樣的數據結構來實作,單純為了像課程大綱提到的那樣,方便將數據封裝在一起。
步驟 2:建立實體並指派數值
定義好結構後,你可以建立該記錄的特定實例(一個實體),並為其欄位指派數值。
我們建立兩個實體:Item1 和 Item2,兩者都基於 Product 結構。
DECLARE Item1 AS Product
DECLARE Item2 AS Product
現在,我們使用點號標記法 (Dot Notation) 來存取個別欄位並指派數據:
Item1.ProductID ASSIGN 405
Item1.Name ASSIGN "Laptop"
Item1.Price ASSIGN 899.99
Item1.InStock ASSIGN True
Item2.ProductID ASSIGN 406
Item2.Name ASSIGN "Mouse"
步驟 3:操作記錄
因為記錄被視為一個單一實體來操作,所以你現在可以將 Item1(包含所有四個相關欄位)傳遞給副程式,或是將整個 Item1 結構儲存在陣列或列表中。
例如,存取第一個項目的價格:
OUTPUT "The price is: " & Item1.Price
(這將顯示:The price is: 899.99)
這種將相關但類型不同的數據分組的能力,使記錄成為電腦科學中數據管理與物件建模不可或缺的一部分。
🔑 學習要點:記錄的核心精髓
記錄 (Record) 是一個客製化的數據套件,它將多個邏輯相關的數據片段(稱為欄位)結合成一個單一單位。與陣列不同,這些欄位可以(而且通常確實會)擁有不同的數據類型。