變數
一個名字,指著一個會變的東西。 · ⏱ 約 25 分鐘
你會學到三件事
- 程式裡的變數,和數學的未知數哪裡不一樣
- 名字可以怎麼取——規則(不守會編不過)和慣例(不守別人會看不懂)
- 為什麼「看得懂」比「打得快」重要
開始之前
數學課解過這種題目:
x + 3 = 10 求 x
那個 x 是未知數:它的值已經定了,只是你還不知道是多少。
你在做的事叫「求解」——把那個一直都在的答案找出來。
上一課寫的 int age = 16; 看起來很像,而它是另一件事。
int age = 16;
age = 17; // 這在數學上是矛盾的
程式裡的變數不是「還不知道」,是「現在裝著什麼」。 它會變,
而且是你叫它變的。
🔴 先自己試一次,一分鐘就好:
① 點下面那顆按鈕 —— 畫布上已經幫你放好 int age = 16; 與一行印出
② 在中間插一行:age = age + 1;
③ 按執行
猜一下會印出什麼,再按。⚠️ 猜錯比猜對值錢。
到編輯器試試看:先試試看:age 能不能等於 age + 1
🟢 先把編輯器打開,跟著下面一起做:跟著做
一、三個差別
|
數學的未知數 |
程式的變數 |
| 值 |
已經定了,等你找出來 |
你放什麼就是什麼 |
| 會不會變 |
不會 |
會,而且會變很多次 |
= 的意思 |
兩邊相等 |
把右邊放進左邊 |
第三個差別第 6 課會整整講一節。現在只要知道:= 讀成「放進去」,
所以 age = 17; 讀成「把 17 放進 age」,不矛盾。
積木盤上那一顆就是這樣寫的:「把 … 設成 …」
——它的名字本身就在說「這不是相等,是放進去」。
🟢 有一個比喻很好用:變數是一個貼了名字的盒子。
┌──────┐
│ 16 │ ← 裡面裝的東西(值),可以換
└──────┘
age ← 貼在外面的名字,不會換
⚠️ 而那個盒子有大小——那是上一課的型別。int 的盒子只裝得下整數。
二、名字可以怎麼取:規則
這幾條是編譯器在管的。不守,程式跑不起來:
| 規則 |
例子 |
| 只能用英文字母、數字、底線 |
score2 ✅ score-2 ❌ |
| 不能用數字開頭 |
n1 ✅ 1n ❌ |
| 大小寫不同就是不同的名字 |
age 和 Age 是兩個變數 |
| 不能用 C++ 自己的字 |
int、if、return… ❌ |
⚠️ 第三條最會咬人:宣告 int score; 之後寫 Score = 90;,
電腦會說「我不認得 Score」,而你看了半天覺得明明就寫了。
三、慣例:編譯器不管,而人會看
下面這些不守也編得過。它們存在的理由只有一個:讓人看得懂。
這一節的程式碼不用打,看一眼就好。
🚫 這一段是反例——課文在說不要這樣寫,別照著拉。
1int a; // ❌ 一個字母,三行之後你就忘了它是什麼2int scr; // ❌ 省下兩個字母,換來每次都要想一下3int score; // 🟢 看到名字就知道它裝什麼
取名字的判準只有一句:三天後的你看得懂嗎。
其他幾條大家都在用的:
| 慣例 |
寫法 |
| 多個字用駝峰 |
totalScore、maxValue |
| 不會變的東西全大寫 |
MAX_SIZE |
計數用 i、j、k |
⚠️ 這是例外——迴圈的編號大家都這樣寫,反而好懂 |
| 布林用是非題的口氣 |
isEmpty、hasNext |
🔴 為什麼這件事值得一整節:你寫的程式,讀的次數遠多於寫的次數。
一個看不懂的名字,每一次讀都要付一次代價,而你會讀很多次。
程式是寫給人看的,只是剛好電腦也能跑。
完成的樣子
這一課的參考做法——程式碼每一行的號碼,就印在對應的那塊積木上。
1#include <iostream>2using namespace std;3int main() {4 int score = 90;5 int bonus = 5;6 score = score + bonus;7 cout << score << endl;8 return 0;9}
把積木打散,自己排回去:排回去:把剛才那支程式的積木排好
換你了
把上面那支程式的 score 改名成 s、bonus 改名成 b,執行一次。
答案一模一樣。 而現在回頭讀那支程式,你還說得出它在做什麼嗎?
到編輯器做這一題:練習:把名字改壞,再改回來
做一個
幫三個變數取名字。一支程式要記住一個學生的三件事:
年齡(整數)、三科平均(有小數)、有沒有及格(真或假)。
宣告這三個變數、各給一個值、各印一行。
⚠️ 三個值直接寫死就好——這一題考的是名字,不是計算。
(平均怎麼算、及格怎麼判,那是後面的課。)
🔴 這一題沒有裁判——名字是你取的。
做完把你的三個名字跟旁邊的人交換看,不解釋。
他看得懂,那個名字就是好的。
到編輯器做這一題:做一個:幫三個變數取名字
這一課你做了什麼
- 你知道程式的變數和數學的未知數不是同一件事
- 你知道哪些名字編譯器不准,哪些是人之間的約定
- 你試過把名字改壞,看它怎麼影響「讀得懂」
如果卡住了
| 你看到 |
多半是因為 |
Score 沒有宣告 |
大小寫不同就是不同的名字 |
1n 那一行編不過 |
名字不能用數字開頭 |
int int; 編不過 |
int 是 C++ 自己的字,不能拿來當名字 |
| 改了名字,別的地方報錯 |
用到那個名字的每一處都要一起改(改名不是只改宣告) |
在編輯器打開這一課 →