公開日:2008.02.06
繰り返し処理
この記事はRubyやirbなどの環境構築が終わっていることを前提としています。 まだ環境構築ができていない方は以下の記事を参照して構築してください。
さぁ、基本文法の話はようやく終わりに近づいています。 とっとと終わりにして早く実践のプログラムに入っていきたいですね。
今回説明する繰り返し処理もプログラムに必須の機能です。 この機能があるからこそ、我々は単調な仕事をコンピュータにまかせられると言っても過言ではありません。 Rubyには実に多様な繰り返し処理の書き方が存在します。 目的に応じて自由に選べます。
単純にx回繰り返したい
例えば100回繰り返すなら、次のように書きます。 いつものようにirbで入力してください。
100.times{
print "."
}
{}で囲まれた部分をブロックと呼びます。 このブロックで囲まれた処理を100回繰り返せという意味になります。 .........とたくさん表示されたでしょう?ヒマな人は100個あるか数えましょう。
(プログラマの方への説明) Rubyは徹底的にオブジェクト指向です。 100という数値もオブジェクトであり、timesというメソッドを持つのです。
繰り返しながら今が何回目の処理かも知りたい
先ほどのを少し改良しましょう。
100.times{ |i|
print i, ","
}
変数 i に今が何回目かを代入しながら繰り返します。
print i, "," の部分は変数iの後に文字列を続けて表示します。
文字列同士の連結みたいなものですね。数字と文字を足すことはできないためにこのように記述します。
0,1,2,3,4,........
という風に数値がカンマ区切りで表示されたと思います。 ちょっと気をつけなければいけないのは0から始まって99で終わることですね。
必ず0から始まるのはイヤ!
例えば100から200までの数字を足した合計が知りたいときはこうします。
a = 0
for i in 100..200
a = a + i
end
print "answer = " , a
繰り返しはfor~からです。 変数iに100から200の数値を順にいれて以下の処理をしろ、という意味になります。100..200という部分が100から200という範囲を表す書き方です。 そのiを変数aに足しこんでいっているわけです。 15150という答えが表示されたら成功。
他にも様々な繰り返し処理法があります。 ある条件が成立する間は繰り返し続けるwhileとか、ある条件が成立「しない」あいだ繰り返すuntilとか。 自分がよく使うものを2、3通り覚えておくだけでいいと思います。 後は必要に応じて調べればすむでしょう。
