続いて、もう1つの制御構文である「
繰り返し」について説明しましょう。繰り返しもいくつかのやり方があるのですが、もっともシンプルなのは「
while」というものです。これは以下のように記述します。
while 条件
……繰り返す処理……
end
この
whileの後にある「
条件」は、
if文の条件と同じものです。すなわち、真偽値として表すことのできるものであればなんでも条件にすることができます。
whileは、繰り返しを開始する前に、条件に設定された値をチェックします。そしてそれが
trueであれば、その後の繰り返す処理を実行します。そして再び
whileの条件をチェックし、
trueなら繰り返す……という具合に、条件が
trueである間、ひたすら繰り返し続けるのです。そして
falseになったら構文を抜けて次へと進みます。
ということは、この条件は、繰り返し処理を実行する間に値が変化するようなものでなければいけません。全く値が変化しないと、永遠に繰り返し部分を実行することになってしまいますから。こうしたものは「無限ループ」といって、実際にそうしたプログラムを作ると暴走したようになってしまいます。繰り返しを使う際には条件の設定に気をつけなければいけません。
似たようなものに「
until」という構文もあります。これは以下のように記述します。
until 条件
……繰り返す処理……
end
これは、
whileとは反対に「条件が
trueになるまで繰り返す」というものです。つまり、繰り返しに入ったときに条件をチェックし、これが
falseだったら繰り返しを続ける。そして何度も繰り返しては条件をチェックし、
trueに変わったら繰り返しを抜けるわけですね。この
whileと
untilはセットで覚えておくとよいでしょう。
では、繰り返しを使うとどういうことができるのか、利用例を挙げておきましょう。繰り返しのサンプルとしてはありがちですが、ある値までの合計を計算させてみます。下の例は、ゼロから変数aの値までの整数すべてを合計した答えを表示するものです。
while x <= aとして、変数xの値がaと等しいかそれより小さい間、繰り返しを続けています。
●代入演算子について
また、ここではちょっと変わった代入記号が使われています。「
y += x」というものです。これは、「yにxの値を加算する」という働きをします。これは「
代入演算子」というもので、以下のような記号があります。
A += B AにBを加算する(A = A + B と同じ)
A -= B AからBを減算する(A = A - B と同じ)
A *= B AにBを乗算する(A = A * B と同じ)
A /= B AをBで除算する(A = A / B と同じ)
A %= B AをBで割ったあまりをAに代入する(A = A % B と同じ)
これらの使い方を覚えておくと、変数の値を更新するような処理が非常に書きやすくなります。まぁ、知らなくても計算は出来ますから、「覚えておくと便利」という程度に考えてもいいでしょう。