單元 3:數據處理 (Manipulating Data) - 學習筆記

你好,未來的 IT 專才!歡迎來到「數據處理」這一章。別擔心這聽起來很複雜——這本質上就是將原始資訊轉化為有用、可靠且易於查找的過程。想像一下,這就像整理你雜亂的房間,讓你終於能找到最喜歡的那件外套一樣!

在本單元中,我們將探討確保數據質量所需的基礎步驟,並學習電腦用來快速整理和檢索資訊的核心技術。


基礎:數據類型 (Data Types)

在我們處理數據之前,電腦需要知道它正在處理的是什麼類型的數據。分配數據類型可以告訴系統該分配多少記憶體空間,以及允許對該數據執行哪些運算。

想像一下你有三個不同的盒子:一個裝蘋果,一個裝橙,一個裝錢。你肯定不會把錢放進蘋果盒裡吧!數據類型就是這些盒子上的標籤。

  • 整數 (Integer/INT): 用於整數(沒有小數部分的數字)。
    例子:10, -5, 4000。用於計算物品數量或年齡。
  • 實數 / 浮點數 (Real / Floating Point/FLOAT): 用於包含小數或分數部分的數字。
    例子:10.5, 3.14159, -0.01。用於測量數據或貨幣計算。
  • 布林值 (Boolean/BOOL): 用於只有兩種可能狀態的數據:真 (True) 或 假 (False)(通常以 1 或 0 表示)。
    例子:IsLoggedIn(是否已登入:True)、IsActive(是否活躍:False)。用於邏輯檢查。
  • 字元 / 字串 (Character / String/CHAR/STRING): 用於文字,包括字母、符號、空格以及被當作文字處理的數字。
    例子:"Hello World", "123 Main Street", "A"。電話號碼通常儲存為字串,因為你不會對它們進行數學運算。

快速回顧:數據類型確保了記憶體的高效利用,並能防止邏輯錯誤(例如試圖將姓名與數字相加)。


第一部分:數據質量 —— 驗證 (Validation) 與 核實 (Verification)

輸出的質量完全取決於輸入的質量。這通常被總結為:垃圾進,垃圾出 (Garbage In, Garbage Out, GIGO)

我們使用兩個關鍵過程來確保數據質量:驗證和核實。學生經常混淆這兩個概念,讓我們仔細看看!

數據驗證 (Data Validation):數據是否「合理」?

數據驗證是用來檢查輸入的數據是否符合預設規則,是否合理可接受。它*不會*檢查數據是否正確(即內容是否真實),只會檢查格式或範圍是否正確。

比喻:如果你詢問某人的年齡,驗證會檢查該數字是否介於 1 到 150 之間。它不會檢查該人士是否謊報自己 50 歲!

驗證檢查的類型
  • 存在檢查 (Presence Check): 確保必填欄位已填寫(沒有留空)。
    例子:註冊表單上的使用者名稱欄位必須填入數據。
  • 範圍檢查 (Range Check): 確保數據介於上限和下限之間。
    例子:每週工作時數必須在 1 到 60 小時之間。
  • 格式檢查 (Format Check): 確保數據以特定的模式或結構輸入。
    例子:郵遞區號必須遵循 LLNN NLL 的格式(例如:SW1A 0AA)。
  • 長度檢查 (Length Check): 確保數據包含最少或最多數量的字元。
    例子:密碼長度必須至少為 8 個字元。
  • 查閱列表 (Lookup Table/Value List): 將輸入的數據與儲存在他處的預設列表進行比對。
    例子:選擇國家時,輸入內容必須與預先核准的國家列表中的選項相符。
  • 校對碼 (Check Digit): 加在長數字(如 ISBN 或條碼)末尾的一個特殊數字,由其他數字計算得出。系統在輸入時會重新計算校對碼,以確保數字輸入正確。
    例子:廣泛用於銀行業務(帳號)和產品編碼。

驗證記憶小撇步:驗證是確保數據遵循規則(範圍、格式、長度等)。


數據核實 (Data Verification):數據是否「準確」?

數據核實是用來檢查輸入的數據是否與原始來源數據相符。它確保的是準確性

比喻:核實就是將購物收據上的數字與你貨架上看到的標價進行比對。

核實的方法
  • 雙重輸入 (Double Entry): 數據被輸入兩次,通常由兩位不同的人輸入,或是由同一人被要求重新輸入。電腦會比較這兩次輸入的數據。如果相符,就假定數據準確。
    常見錯誤:如果兩次輸入都犯了同樣的打字錯誤,雙重輸入將無法檢測出來。
  • 視覺檢查 (Visual Check): 人手將螢幕上顯示的數據與原始來源文件進行比較(例如將掃描表格與原始紙本文件對照)。
    優點:對於小型數據集簡單有效,但對於大量數據而言,速度慢且容易出現人為錯誤。

關鍵總結:驗證確保數據「合理」;核實確保數據「正確」。


第二部分:數據處理 —— 組織與檢索

數據輸入並完成驗證後,我們通常需要對其進行組織,使其發揮作用。最關鍵的兩種處理操作是排序和搜尋。

數據排序 (Sorting)

排序是將數據記錄按特定順序排列的過程,可以是升序(A-Z, 1-10)或降序(Z-A, 10-1)。

為什麼要排序? 這不僅讓人類閱讀報表時更加輕鬆,更重要的是,它能讓電腦搜尋數據的速度大幅提升。

你知道嗎? 資料庫通常允許你按多個欄位進行排序(例如:先按姓氏排序,若姓氏相同,再按名字排序)。


數據搜尋 (Searching)

搜尋是在大量記錄集合中尋找特定數據的過程。

線性搜尋 (Linear Search / Sequential Search)

這是最簡單的搜尋技術。它會從數據集的開頭開始,檢查每一個項目,直到找到目標項目或到達列表末尾為止。

  • 過程:
    1. 從第一個項目開始。
    2. 這是我們要找的項目嗎?
    3. 如果是,停止。
    4. 如果不是,移動到下一個項目並重複第 2 步。
  • 優點: 適用於未排序的數據。
  • 缺點: 對於大型數據集非常慢,特別是當目標項目位於列表末尾或根本不存在時。
二分搜尋 (Binary Search)

二分搜尋是一種非常高效的搜尋演算法,但它有一個至關重要的前提條件:

前提:數據必須先經過排序。

比喻:二分搜尋就像在字典中查找單詞。你不會從頭到尾翻閱每一頁,而是直接跳到中間!

二分搜尋的工作原理是重複地將可能包含目標項目的列表部分減半。

二分搜尋的步驟(分治法 Divide and Conquer):

  1. 找到列表的中間項目
  2. 將中間項目與目標項目比較:
    • 如果兩者相符,搜尋完成。
    • 如果目標項目小於中間項目,忽略上半部分列表(以及中間項目)。
    • 如果目標項目大於中間項目,忽略下半部分列表(以及中間項目)。
  3. 在剩餘的列表部分重複此過程(從第 1 步開始),直到找到該項目或列表被檢查完畢。

關鍵優點:速度極快,特別是在大型列表中,因為它在每次比較中都會剔除一半的可能項目。

關鍵缺點:需要初始數據集已排序,這需要花費額外的時間。


索引 (Indexing)

有時候,我們需要快速搜尋,但又不想每次加入新記錄時都重新對整個大型資料庫進行物理排序。這就是索引 (Indexing) 發揮作用的地方。

索引是一個獨立的、結構化的列表,包含主鍵值 (Primary Key) 和指標 (Pointer,即記憶體位址),告訴系統完整的記錄儲存在哪裡。

比喻:教科書後的索引列出了關鍵字(主鍵)和頁碼(指標)。你利用索引快速找到資訊,而不需要閱讀書中的每一頁。

  • 過程: 系統不再搜尋龐大的主數據檔案,而是搜尋體積更小且已排序的索引檔案。
  • 優點: 檢索速度更快,因為索引檔案更小且專為搜尋優化(通常使用二分搜尋技術)。主數據檔案保持原樣且無需排序,從而允許更快速地插入和更新新記錄。

關鍵總結:排序使得二分搜尋變得可能且高效。索引則能在不物理重新組織整個數據集的情況下,實現快速檢索。