25.d. ループ

目次へ 前の項目へ次の項目へ

ここからが、プログラミングの基礎の始まりです。コンピュータは同じ処理を何度 も繰り返しても飽きませんし、へこたれません。人間とのもっとも大きな違いの一 つはそこにあります。その特性を利用して、とにかく繰り返して処理を行うように むりやりにでも持っていくのがプログラミングの常套手段です。

1から10までの整数の和を求めなさい、という問題があるとします。電卓でも計算 できるくらい簡単です。Rubyでも、

puts 1+2+3+4+5+6+7+8+9+10

とすると計算できます。あるいは、天才ガウスが子供のころに求めた和の公式 を知っ ていれば、

puts 11*10/2

として求めることもできます。なお、* は積の記号で、/ は除算の記号です。答えは、 55になります。公式を知らないと上の例のような計算をするわけですが、では、 1から10000までの和を求めなさいという問題だったら同じようにずらっと書いて計 算するでしょうか。そこで、繰り返し操作であるループの出番です。次に例を示し ます。ファイル名をloop.rbとでもしてください。

a = 0
for i in 1..10000 do
  a += i
end
puts a

実行してみましょう。答えはあっていますでしょうか。ガウスの公式を使うと答え 合せが暗算でできそうです。

スクリプトの中で for から end までが、for ルー プと呼ばれる繰り返し処理の部分です。i という変数の値が1から 10000まで、一つずつ増やしながら中に書いてある処理を実行しなさいという意味 になっています。中の処理は、a という変数に i の値を足し て行きなさい、となっていますので、最初 0 だった a に 1 から 10000 まで順に足していくことを命令しています。そして、最後に a の 値を出力しなさい、というスクリプトです。

上の例は for ループでしたが、もう一つ大事なループがあります。それ は、while ループと呼ばれます。こちらは、ある条件が成立している間 中処理を繰り返すという構造です。上の例を書き直すと、次のようになります。

a = 0
i = 0
while i <= 10000 do
  a += i
  i += 1
end
puts a

<= の記号は、≦の意味で、変数 i は初め 0 だったのが、 1 ずつ増やしていき、10000以下の間中処理を実行する、というループです。

上の二つのスクリプトを見比べると for ループの方が少しだけ簡単です。 このように、初めと終わりの条件がきちんと分かっていれば、 for ルー プは便利ですが、実際の処理はなかなかそのようにはならないので、while ループがよく使われるようです。また、Rubyを本格的に使いはじめると、 for ループは「ブロックつきメソッド」という方法で置き換えられるの で、目に見えないところで使用されるようになります。


ページの先頭へ目次へ 前の項目へ次の項目へ