歡迎來到「變數」的奇妙世界!
你有沒有玩過一些電腦遊戲,裡面的角色可以賺取分數、失去生命值,或者要跟倒數計時器比賽?如果有,你其實已經見識過變數(Variables)的威力了!如果一開始覺得有點神秘,不用擔心——讀完這份筆記後,你就會徹底明白電腦程式是如何記住資訊,並掌握遊戲中發生的一切!
在這一章,你會發現甚麼是變數、如何在編程中建立和使用變數,以及如何避開初學者最常遇到的編程陷阱!
1. 甚麼是變數(Variable)?
在電腦編程中,變數是電腦記憶體中一個已命名的空間,用來儲存一個可以在程式運行期間改變的數值(Value)。
可以把它想像成一塊「迷你白板」:
想像你有一塊小白板,頂部貼著寫有「得分」的標籤。遊戲開始時,你在白板上寫上 0。當你收集到一個金幣時,你擦掉 0 並寫上 1。這塊白板一次只能顯示一個數字。這塊小白板就是你的變數!
必須記住的核心詞彙:
• 變數(Variable): 記憶體中帶有名稱的儲存空間。
• 數值(Value): 目前儲存在變數裡面的具體資訊(例如一個數字或一個詞語)。
如何為你的變數命名
建立變數時,必須給它一個清晰、有意義的名稱。一個好的名稱能讓任何閱讀你程式碼的人一眼看出裡面儲存了甚麼資訊。
• 好名稱: score(得分)、timer(計時器)、player_lives(玩家生命值)
• 不佳名稱: x、stuff、thing1(這些名稱令人困惑,因為根本看不出裡面儲存了甚麼!)
• 重要規則: 變數名稱中不能包含空格。
重點歸納: 變數能保存一項在程式運行時可以改變的資訊(數值),而且必須擁有一個清晰合理的名稱!
2. 變數的種類
根據程式需要記錄的內容,變數可以儲存不同種類的數值。
數值變數(Numeric Variables)
這類變數用來儲存數字。每當你需要計數、計算或追蹤數量時就會用到。
例子: 遊戲中的得分(100)、剩餘生命值(3),或倒數計時器的剩餘秒數(60)。
字串變數(String Variables)
這類變數用來儲存文字,例如字母、詞語或句子。
例子: 玩家的用戶名稱("PixelHero")或角色的對話內容。
全域變數(Global)與區域變數(Local)
• 全域變數(Global Variables): 整個專案中的所有角色或圖案都可以看見、使用和修改它。
• 區域變數(Local Variables): 只屬於某一個特定角色,其他角色無法直接修改它。
重點歸納: 數值變數儲存數字,字串變數儲存文字;變數可以是所有角色共用的(全域),也可以是某個角色專屬的(區域)。
3. 使用變數的四大黃金步驟
在圖像化積木編程(例如 Scratch)中建立專案時,使用變數通常遵循四個簡單步驟:
步驟一:建立(宣告 Creation / Declaration)
這是指建立一個新變數並給它一個有意義的名稱(例如:點擊「建立一個變數」並輸入 score)。
步驟二:初始化(設定初始值 Initialization)
這是指在程式剛開始運行時,給變數設定第一個數值。例如:當綠旗被點擊時,將 score 設為 0。
步驟三:更新(改變數值 Updating)
程式運行期間,你需要修改變數中儲存的數值。例如:每當玩家收集到一顆星星時,將 score 改變 1。
步驟四:使用(讀取數值 Using)
你的程式會檢查該數值來作出決定,或在畫面上顯示資訊。例如:如果 \(score = 10\),就說出「你贏了!」
簡易記憶小秘訣: 記住 C-I-U-U 記憶法——Create(建立)、Initialize(初始化)、Update(更新)、Use(使用)!
重點歸納: 永遠要先建立變數,在開頭設定初始值,在事件發生時更新它,並在遊戲中運用它來做決策!
4. 常見陷阱與錯誤(除錯超能力!)
即使是編程高手有時也會在變數上犯錯。以下是幾個最常見的誤解,一定要多加留意:
1. 「大箱子」誤解
錯誤概念: 以為變數是一個大箱子,可以一次過同時儲存很多項物品。
事實真相: 變數一次只能儲存一個數值!當你放入一個新數值時,舊的數值就會被完全擦掉並取代。
2. 混淆「設為(Set)」與「改變(Change)」
錯誤概念: 當你想增加分數時,卻寫了將 score 設為 1。
出錯原因: 如果每次收集金幣時都「設為 1」,分數就會永遠停留在 1!要讓它像 \(1, 2, 3, \dots\) 這樣累加,你必須使用將 score 改變 1。
3. 「名稱有魔力」的迷思
錯誤概念: 以為只要把變數命名為 timer(計時器),電腦就會自動知道要怎樣做。
事實真相: 電腦並不明白人類語言的意思。單單把變數命名為 timer,它並不會自動倒數。你身為程式員,必須親自編寫程式碼,讓它的數值每秒減少!
4. 忘記重設(初始化錯誤)
錯誤概念: 忘記在遊戲開始時加入將 score 設為 0。
出錯原因: 當玩家點擊綠旗開始新遊戲時,分數依然會保留上一局累積的分數,而不會重新由 0 開始!
5. 數學與編程中「等號」的差別
在數學課上,寫出 \(x = x + 1\) 是不合理的,因為一個數字不可能等於自己加一。
但在電腦編程中,\(x = x + 1\) 是一個非常常見的指令!它的意思是:「取出 \(x\) 目前的數值,加上 1,然後把結果儲存為 \(x\) 的最新數值!」
重點歸納: 記住「設為」是指定一個確切的數值,「改變」是在現有數值上加減,而且單靠名稱是不會自動執行功能的!
5. 本章重點快速複習
• 變數是記憶體中已命名的儲存空間,用來保存單一數值,該數值在程式運行時可以改變。
• 數值變數儲存數字(得分、計時器);字串變數儲存文字(玩家名稱)。
• 變數名稱必須有意義且不能包含空格。
• 程式開始時務必初始化變數(例如:將 score 設為 0)。
• 使用「改變」來增加/減少數值;使用「設為」來指定開始或重設的確切數值。