目次

3.  変数と代入

 

ここまで、文字列や数をputsしたら、putsしたものはどこかへ 行ってしまっていました。つまり、言いたいことは、もし何かを2回表示したいときには、 それを2回プログラムに書かなければならなかったということです。

puts '...もう一回言います...'
puts '...もう一回言います...'
...もう一回言います...
...もう一回言います...

もし、タイプするのを1回だけにして、それをどこかにしまっておくことができたら 良いと思いませんか? もちろんできます、—そうではなかったら、言い出したりはしませんよ。

文字列をコンピュータのメモリに保存するには、その文字列に名前をつける必要があります。 プログラマはしばしばこの操作のことを代入(assignment) と呼び、その名前を 変数(variable) と呼びます。 (訳註:日本語では変「数」と呼びますが、これは数学におけるvariableを訳した言葉だからです。 variableは「変われるもの」という意味なので、コンピュータでは指し示しているものが、 必ずしも数であるとは限りません。) 変数名は文字と数字の羅列です。 ただし、最初の文字はアルファベットの小文字でなければなりません。 では、先ほどのプログラムを改良してみましょう。文字列に myStringという名前をつけてみます。(ここで、変数の名前は好きなようにつけ ることができるので、strmyOwnLittleStringでもいいし、あるいは henryTheEighthとしても大丈夫です。(訳註:でもあとで自分が見たり、他人が 見たりすることを考えると、わかりやすい名前が良いと思いますが)。)

myString = '...もう一回言います...'
puts myString
puts myString
...もう一回言います...
...もう一回言います...

myStringに何かを行おうとするたび、プログラムは '...もう一回言います...'に対してその操作を行います。 これは、変数のmyStringは実体である '...もう一回言います...'を「指し示している」のだと考えると わかりやすいと思います。では、もう少し面白い例を。

name = 'Patricia Rosanna Jessica Mildred Oppenheimer'
puts '私の名前は ' + name + ' よ。'
puts 'うわぁ!  ' + name + ' ってほんとに長い名前ですね。'
私の名前は Patricia Rosanna Jessica Mildred Oppenheimer よ。
うわぁ!  Patricia Rosanna Jessica Mildred Oppenheimer ってほんとに長い名前ですね。

変数に文字列などの物(オブジェクト)を代入する ことができるのと同じように、 別の物を再代入 することもできます。 (これが変数と呼ばれる理由です。指し示している物を変えることが できるからです。)

composer = 'モーツァルト'
puts composer + 'は、彼の時代、"衝撃的" だったらしい。'

composer = 'ベートーベン'
puts 'でも僕は個人的には' + composer + 'が好きだ。'
モーツァルトは、彼の時代、"衝撃的" だったらしい。
でも僕は個人的にはベートーベンが好きだ。

もちろん、変数は文字列以外にもどんな種類の物(オブジェクト)でも指し示すことができます。

var = 'もひとつ別の' + '文字列'
puts var

var = 5 * (1+2)
puts var
もひとつ別の文字列
15

実際、変数は他の変数以外なら何でも指し示すことができます。 変数を代入するとどうなるか試してみましょう。

var1 = 8
var2 = var1
puts var1
puts var2

puts ''

var1 = 'eight'
puts var1
puts var2
8
8

eight
8

最初、var2var1を代入して指し示す先をvar1に しようとすると、実際には8を指し示すようになります。 (これはちょうど、var1が指していたのと同じです。) そして、var1'eight'を代入してvar1の 指し示す先を変えたとしても、var2var1を 指しているわけではないので、8を指し続けます。

さて、ここまでで、変数、数、そして文字列が使えるようになりました。 次は、数と文字列を 相互に変換する方法を学びましょう。

 

目次