歡迎來到健壯與安全的程式設計世界!

你有沒有遇過這樣的應用程式:才剛輸錯一點東西就馬上當機?又或者是一個不需要密碼就能登入的網站?這些都是脆弱(fragile)程式的例子。在本章中,我們要學習如何做到相反的事:健壯(robust)安全(secure)的程式設計。

健壯是指你的程式非常「強韌」,即使輸入了預期之外的資料也不會崩潰。安全則是指你的程式能保護數據,防止未經授權的人存取。別擔心有些詞彙聽起來很專業,我們會一步步拆解給你聽!

1. 資料驗證 (Data Validation):數位守門員

資料驗證是電腦進行的一項檢查,用來確保輸入的資料是合理(sensible)合乎預期(reasonable)的。想像一下夜店門口的保全:他們會檢查你是否在名單上、年齡是否達標,才決定放不放你進去。

它並不能證明資料是正確的(你可能會謊報年齡!),但它能檢查資料是否符合規則。以下是你在 AQA 考試中必須知道的三種簡單檢查方式:

A. 長度檢查 (Length Check)

這會檢查資料是否達到最少的字元數。
例子:密碼長度必須至少為 8 個字元。如果你只輸入 "123",程式就會拒絕。

B. 存在檢查 (Presence Check)

這只是簡單檢查字串是否為空 (empty)。它確保使用者沒有在沒輸入任何東西的情況下直接按下「Enter」。
例子:註冊新帳號時,你不可以把「姓氏」欄位留空。

C. 範圍檢查 (Range Check)

這會檢查數字或數值是否在給定的範圍內
例子:如果程式要求評分介於 1 到 10 之間,範圍檢查會阻止你輸入 11 或 -1。

重點複習:驗證是為了確保程式在處理資料前,這些資料是合理的。這能防止程式在稍後執行時當機!

核心觀念:驗證 = 合理的資料。(長度、存在、範圍)。

2. 驗證 (Authentication):你是誰?

驗證 (Authentication) 是確認使用者身份 (identity) 的過程。簡單來說,就是確保登入的人確實是他所聲稱的那個人。

考試時,你只需要知道如何編寫一個使用使用者名稱 (username)密碼 (password) 的簡單程式流程即可。

你知道嗎?在這個階段,你只需要考慮明文 (plain text) 的帳號與密碼。這意味著我們暫時不需要擔心複雜的加密技術(把密碼亂碼化)!

簡單的驗證步驟: 1. 要求使用者輸入使用者名稱。
2. 要求使用者輸入密碼。
3. 檢查使用者名稱與密碼是否與系統中儲存的資料相符。
4. 如果相符,就讓他們登入!如果不符,則顯示錯誤訊息。

核心觀念:驗證透過使用者名稱與密碼來證明身份。

3. 測試:找出「程式錯誤 (Bugs)」

沒有程式設計師能第一次寫程式就完美無缺。測試 (Testing) 是執行程式以找出錯誤(bugs)並確保其符合需求的過程。

測試時,我們會使用不同類型的測試資料 (test data) 來觀察程式的反應。想像我們正在測試一個只接受 1 到 10 之間數字的程式,我們會用到以下資料:

正常 (Typical) 資料

這是預期內的資料,理應被接受。
例子:5 或 7。

邊界 (Extreme) 資料

這是處於允許範圍邊緣 (limit) 的資料。它包含了有效範圍的最極端數值,以及範圍外第一個無效的數值。
例子:如果範圍是 1 到 10,邊界資料將會是 0, 1, 10, 和 11。

錯誤 (Erroneous) 資料

這是型態錯誤 (wrong type) 或完全不該被接受的資料。
例子:輸入 "banana" 而不是數字,或輸入像 @ 這樣的符號。

記憶小撇步:記住 N.B.E. 就對了!
Normal(正常) - 運作正常。
Boundary(邊界) - 處於邊緣。
Erroneous(錯誤) - 預期會出錯!

核心觀念:測試使用正常、邊界和錯誤資料來尋找並修正錯誤。

4. 錯誤類型:為什麼它無法運作?

當程式無法運作時,通常歸咎於兩種類型的錯誤。理解兩者的差異對考試非常有幫助!

語法錯誤 (Syntax Errors)

語法錯誤是程式碼中的「文法」錯誤。程式語言有非常嚴格的規則。如果你忘記括號、拼錯指令,或是漏掉冒號,電腦就無法理解該怎麼執行。

重要:只要有語法錯誤,程式將完全無法執行
例子:寫成 prnt("Hello") 而不是 print("Hello")

邏輯錯誤 (Logic Errors)

邏輯錯誤是程式設計思維上的錯誤。程式可以正常執行而不會當機,但會給出錯誤的結果

例子:你想計算 10 + 10,但不小心輸入了 10 * 10。電腦會給你 100 而不是 20。它完全按照你的指示執行,只是你的「邏輯」錯了!

比喻時間!
語法錯誤就像用一種不存在的語言寫句子。沒人聽得懂你在說什麼。
邏輯錯誤就像給人錯誤的指路資訊去電影院。對方可以完美地照著你的指示走,但最後卻走到公園去了!

核心觀念:語法錯誤會阻止程式執行。邏輯錯誤讓程式執行但產生錯誤的輸出。

快速複習欄

資料驗證:檢查資料是否合理(長度、存在、範圍)。
驗證:檢查使用者身份(使用者名稱/密碼)。
測試資料:正常(典型)、邊界(邊緣)、錯誤(錯誤類型)。
語法錯誤:「文法」錯誤;程式無法啟動。
邏輯錯誤:計算或步驟錯誤;程式給出錯誤答案。

如果剛開始覺得很複雜也別擔心!只要多練習寫寫小程式,並用奇怪的資料去「弄壞」它,你會發現找出這些錯誤變得越來越容易!