変数 を使うと値や計算の結果をとっておくことができます。
言葉で説明するより見た方がわかりやすいので、早速 変数 を作ってみましょう。
var a = 2
このように書くと、 a
という名前の 変数 を作り、そこに 2
という値を入れておくことができます。
var
は、新しい 変数 を作るためのキーワードです。
数字や計算結果を表示するのと同じように、 print
を使って 変数 の中に入っている値を表示できます。
var a = 2
print(a)
2
a
に入っている値を使って計算することもできます。
var a = 2
print(a + 3)
5
計算結果を 変数 に入れておくこともできます。
var a = 2 * 3
print(a)
6
変数 に入っている値を後から変更することもできます。
var a = 2 * 3
print(a)
a = 10
print(a)
6
10
=
を使って 変数 に値を入れることを 代入 と言います。
算数や数学の = は左右の値が等しいことを意味します。
しかし、多くのプログラミング言語では =
の右側の値を左側に 代入 するという意味になります。
a = 10
の行に var
を書かなくて良いのは、 a
という 変数 が var a = 2 * 3
の行ですでに作られているからです。
変数 の名前のことを 変数名 と言います。
今は a
という 1 文字の 変数名 を使っていますが、 2 文字以上のもっと長い 変数名 をつけることもできます。
次に、 変数 があるとどんなときにうれしいのかを見てみましょう。
今、勇者の HP は 153 だとします。
print("ゆうしゃ")
print("HP 153")
print("MP 25")
ゆうしゃ
HP 153
MP 25
魔王の攻撃力は 185 、勇者の防御力は 97 だとすると、魔王の攻撃はこのようになります。
print("ゆうしゃ")
print("HP 153")
print("MP 25")
print("まおうのこうげき。")
print("ゆうしゃに\((185 - 97) / 2)のダメージ。")
ゆうしゃ
HP 153
MP 25
まおうのこうげき。
ゆうしゃに44のダメージ。
おや、 MP 25
と まおうのこうげき。
が詰まっていて見た目が良くないですね。間に 1 行空けたいところです。
空行を表示するには print()
と書きます。
print
は ()
の中を表示して改行する命令なので、 ()
の中が空だと改行だけします。
print("ゆうしゃ")
print("HP 153")
print("MP 25")
print()
print("まおうのこうげき。")
print("ゆうしゃに\((185 - 97) / 2)のダメージ。")
ゆうしゃ
HP 153
MP 25
まおうのこうげき。
ゆうしゃに44のダメージ。
ちゃんと MP 25
と まおうのこうげき。
の間に空行を表示することができました。
さて、次にダメージを受けた後の勇者の HP を表示してみましょう。
print("ゆうしゃ")
print("HP 153")
print("MP 25")
print()
print("まおうのこうげき。")
print("ゆうしゃに\((185 - 97) / 2)のダメージ。")
print()
print("ゆうしゃ")
print("HP \(153 - (185 - 97) / 2)")
print("MP 25")
ゆうしゃ
HP 153
MP 25
まおうのこうげき。
ゆうしゃに44のダメージ。
ゆうしゃ
HP 109
MP 25
おっと、 (185 - 97) / 2
という同じ計算を 2 回書くことになりました。
同じ計算を 2 回も書くのは面倒くさいので、 (185 - 97) / 2
の計算結果をとっておいて、それを後から使えたら便利です。
こんなときこそ 変数 の出番です。
(185 - 97) / 2
の計算結果を 変数 に代入してとっておきましょう。
ダメージを表すので、 変数名 は damage
(ダメージ)としましょう。するとこうなります。
print("ゆうしゃ")
print("HP 153")
print("MP 25")
print()
var damage = (185 - 97) / 2
print("まおうのこうげき。")
print("ゆうしゃに\(damage)のダメージ。")
print()
print("ゆうしゃ")
print("HP \(153 - damage)")
print("MP 25")
(185 - 97) / 2
の計算結果を 変数 damage
に保存しておくことで、同じ計算を 2 回書かなくてよくなりました。
同じコードを 2 回書きたくないのは、面倒くさいからだけではありません。
変数 を使わない元のコードはこちらでした。
print("ゆうしゃ")
print("HP 153")
print("MP 25")
print()
print("まおうのこうげき。")
print("ゆうしゃに\((185 - 97) / 2)のダメージ。")
print()
print("ゆうしゃ")
print("HP \(153 - (185 - 97) / 2)")
print("MP 25")
このとき、ゲームバランスを調整していて、魔王の攻撃力を 197 に変更したくなったとします。
185
はコードの中の 2 箇所に書かれているので、両方を修正しなければなりません。
しかし、まちがえて片方だけ修正してしまったとしましょう。
print("ゆうしゃ")
print("HP 153")
print("MP 25")
print()
print("まおうのこうげき。")
print("ゆうしゃに\((197 - 97) / 2)のダメージ。")
print()
print("ゆうしゃ")
print("HP \(153 - (185 - 97) / 2)")
print("MP 25")
これを実行するとどうなるでしょう?
ゆうしゃ
HP 153
MP 25
まおうのこうげき。
ゆうしゃに50のダメージ。
ゆうしゃ
HP 109
MP 25
50 のダメージを受けたら勇者の HP は 103 にならないといけないのに、 109 と表示されてしまいました。
このようなプログラムの不具合を バグ と言います。
同じコードを色んなところに繰り返して書くと、修正するときにすべて修正しなければなりません。
そして、修正が漏れてしまうとプログラムの バグ を引き起こします。
コードの繰り返しを防ぎ、 バグ を減らすためにも 変数 は重要なのです。