変数
概要
オブジェクトを何回も利用するときには変数でオブジェクトに名前をつけます。 この章では変数について説明します。
変数
変数とは、オブジェクトにつけるラベル・名札のようなものです。
オブジェクトに名札をつけるには、次のように=
(イコール)の左側に変数名、右側にオブジェクトを書きます。
変数名 = オブジェクト
オブジェクトに変数という名札をつけることを「変数にオブジェクトを代入する」といいます。 例えば、次のような使い方をします。
# language変数に文字列オブジェクトの"Ruby"を代入する
language = "Ruby"
# age変数に数値オブジェクトの18を代入する
age = 18
変数で名前をつけたオブジェクトは同じプログラム内なら再利用することができます。
language = "Ruby"
age = 18
print "私の年齢は"
print age
print "歳です。\n"
print "好きな言語は"
print language
print "です。\n"
このように1回変数に代入したオブジェクトを使うことを「変数を参照する」といいます。
この場合はage
変数とlanguage
変数を参照してprint
しています。
この例だと変数を使うメリットはあまりありません。 同じオブジェクトを何回も使うようなプログラムだと効果を発揮します。 あとで変数を使ったプログラムの例を説明します。
文字列の式展開
文字列オブジェクトを作成するとき、式を展開して文字列を作成できます。
次の例を見てください。
age = 18
puts "私の年齢は#{age}歳です。"
このプログラムを実行すると、「私の年齢は18歳です。」と表示されます。
このように、""
で文字列オブジェクトを作るとき、#{}
で式を囲むとその式を展開した文字列オブジェクトが作られます。
"年齢は#{age}歳です。
のように変数を書くと、その変数に代入されているオブジェクトが展開されます。
#{}
の中には式を書けるので、"1 + 1 = #{1 + 1}"
のように変数以外を書くこともできます。
変数を使ったプログラム
例1 直方体の計算
直方体の体積と表面積を計算するプログラムです。
# 直方体の体積(volume)と表面積(area)を計算するプログラム
# 幅xメートル、高さyメートル、奥行きzメートル
x = 3
y = 4
z = 5
volume = x * y * z
area = (x * y + y * z + z * x) * 2
puts "幅#{x}メートル、高さ#{y}メートル、奥行き#{z}メートルの直方体の"
puts "体積は#{volume}立方メートルです。"
puts "表面積は#{area}平方メートルです。"
これを実行するとこうなります。
$ ruby rectangular.rb
幅3メートル、高さ4メートル、奥行き5メートルの直方体の
体積は60立方メートルです。
表面積は94平方メートルです。
これを変数なしで書いてみましょう。
# 直方体の体積(volume)と表面積(area)を計算するプログラム
# 幅3メートル、高さ4メートル、奥行き5メートル
puts "幅#{3}メートル、高さ#{4}メートル、奥行き#{5}メートルの直方体の"
puts "体積は#{3 * 4 * 5}立方メートルです。"
puts "表面積は#{(3 * 4 + 4 * 5 + 5 * 3) * 2}平方メートルです。"
このプログラムで違う大きさの直方体を計算したくなったら全ての数字を書き換える必要があります。 変数にしておくと1箇所書き換えるだけなのでとてもメンテナンスが楽になります。
例2 消費税の計算
商品の税込単価を計算するプログラムです。
apple = 50
orange = 60
peach = 70
tax_rate = 1.08 #消費税率
puts "りんごの税込単価は#{apple * tax_rate}円です。"
puts "オレンジの税込単価は#{orange * tax_rate}円です。"
puts "桃の税込単価は#{peach * tax_rate}円です。"
これを変数なしで書くとこうなります。
puts "りんごの税込単価は#{50 * 1.08}円です。"
puts "オレンジの税込単価は#{60 * 1.08}円です。"
puts "桃の税込単価は#{70 * 1.08}円です。"
消費税率が変わった時、変数を使わない方は全てを書換えなければいけません。 ひとつでも変更し忘れると大変ですね。
練習問題
(1) 変数
変数を使って「Hello, world!」という文字列を出力するプログラムを作成してください。
(2) 文字列への埋め込み
画面で年齢を入力してもらい、「あなたはXX歳ですね。」というメッセージを出力するプログラムを作成してください。
画面から何かを入力するには次のようにgets.chomp
を使います。
print "あなたの年齢を入力してください > "
age = gets.chomp
puts "あなたは#{age}歳ですね。"
(3) 直方体計算
直方体の表面積と体積を計算するプログラムを作成してください。
(4) 直方体計算2
直方体のそれぞれの辺の長さをユーザーに入力してもらい、表面積と体積を計算するプログラムを作成してください。
例えば、幅を入力してもらうには次のようにします。
print "幅を入力してください > "
x = gets.chomp.to_i