変数 を使うと値や計算の結果をとっておくことができます。

言葉で説明するより見た方がわかりやすいので、早速 変数 を作ってみましょう。

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 と表示されてしまいました。

このようなプログラムの不具合を バグ と言います。

同じコードを色んなところに繰り返して書くと、修正するときにすべて修正しなければなりません。

そして、修正が漏れてしまうとプログラムの バグ を引き起こします。

コードの繰り返しを防ぎ、 バグ を減らすためにも 変数 は重要なのです。