# Exercise 4: Variables And Names
你已經學會了印出東西和數學運算。下一步你要學的是「變數」。在開發程式中,變數只不過是用來代表某個東西的名稱。程式設計師通過使用變數名稱可以讓他們的程式讀起來更像英語。而且因為程式設計師的記性都不怎樣,變數名稱可以讓他們更容易記住程式的內容。如果他們沒有在寫程式時使用好的變數名稱,在下一次讀到原來寫的程式碼時對他們會大為頭疼的。
如果你被這章習題難住了的話,記得我們之前教過的:找到不同點、注意細節:
1. 在每一行的上面寫一行註釋,給自己解釋一下這一行的作用。
2. 倒著讀你的 `.rb` 檔案。
3. 朗讀你的 `.rb` 檔案,將每個字符也朗讀出來。
~~~
cars = 100
space_in_a_car = 4.0
drivers = 30
passengers = 90
cars_not_driven = cars - drivers
cars_driven = drivers
carpool_capacity = cars_driven * space_in_a_car
average_passengers_per_car = passengers / cars_driven
puts "There are #{cars} cars available."
puts "There are only #{drivers} drivers available."
puts "There will be #{cars_not_driven} empty cars today."
puts "We can transport #{carpool_capacity} people today."
puts "We have #{passengers} passengers to carpool today."
puts "We need to put about #{average_passengers_per_car} in each car."
~~~
> **Note:** `space_in_a_car` 中的 `_` 是 `底線(underscore)` 符號。你要自己學會怎樣打出這個符號來。這個符號在變數裡通常被用作假想的空隔,用來隔開單詞。
## 你應該看到的結果
~~~
$ ruby ex4.rb
There are 100 cars available.
There are only 30 drivers available.
There will be 70 empty cars today.
We can transport 120.0 people today.
We have 90 passengers to carpool today.
We need to put about 3 in each car.
$
~~~
## 加分習題
當我剛開始寫這個程式時我犯了個錯誤,Ruby 告訴我這樣的錯誤資訊:
~~~
ex4.rb:8:in `<main>': undefined local variable or method `car_pool_capacity' for main:Object (NameError)
~~~
用你自己的話解釋一下這個錯誤資訊,解釋時記得使用行號,而且要說明原因。
## 更多的加分習題
1. 解釋一下為什麼程式裡面用了 4.0 而不是 4。
2. 記住 4.0 是一個「浮點數」,自己研究一下這是什麼意思。
3. 在每一個變數賦值的上一行加上一行註釋。
4. 記住 `=` 的名稱是等於(equal),它的作用是為東西取名。
5. 記住 `_` 是底線(underscore)。
6. 將 IRB 作為計算機跑起來,就跟以前一樣,不過這一次在計算過程中使用變數名稱來做計算,常見的變數名稱有 `i` 、 `x` 、 `j` 等等。
- 笨方法更简单
- 习题 0: 准备工作
- 习题 1: 第一个程式
- 习题 2: 注释和井号
- 习题 3: 数字和数学计算
- 习题 4: 变数(variable)和命名
- 习题 5: 更多的变数和印出
- 习题 6: 字串(string)和文字
- 习题 7: 更多印出
- 习题 8: 印出,印出
- 习题 9: 印出,印出,印出
- 习题 10: 那是什么?
- 习题 11: 提问
- 习题 12: 模组 (Module)
- 习题 13: 参数、解包、参数
- 习题 14: 提示和传递
- 习题 15: 读取档案
- 习题 16: 读写档案
- 习题 17: 更多的档案操作
- 习题 18: 命名、变数、程式码、函式
- 习题 19: 函式和变数
- 习题 20: 函式和档案
- 习题 21: 函式可以传回东西
- 习题 22: 到现在你学到了哪些东西?
- 习题 23: 阅读一些程式码
- 习题 24: 更多练习
- 习题 25: 更多更多的练习
- 习题 26: 恭喜你,现在来考试了!
- 习题 27: 记住逻辑关系
- 习题 28: 布林(Boolean)表示式练习
- 习题 29: 如果(if)
- 习题 30: Else 和 If
- 习题 31: 做出决定
- 习题 32: 回圈和阵列
- 习题 33: While 回圈
- 习题 34: 存取阵列里的元素
- 习题 35: 分支 (Branches) 和函式 (Functions)
- 习题 36: 设计和测试
- 习题 37: 复习各种符号
- 习题 38: 阅读程式码
- 习题 39: 阵列的操作
- 习题 40: Hash, 可爱的 Hash
- 习题 41: 来自 Percal 25 号行星的哥顿人(Gothons)
- 习题 42: 物以类聚
- 习题 43: 你来制作一个游戏
- 习题 44: 评估你的游戏
- 习题 45: 物件、类和从属关系
- 习题 46: 一个专案骨架
- 习题 47: 自动化测试
- 习题 48: 更进阶的使用者输入
- 习题 49: 创造句子
- 习题 50: 你的第一个网站
- 习题 51: 从浏览器中取得输入
- 习题 52: 创造你的网页游戏
- 下一步
- 一个老程式设计师的建议