<<前 [TOP] 次>>
メモ帳を開いて次の繰り返しのプログラムを作ってみましょう。
【whiletest1.rb】
# whiletest1.rb puts 'ループに入る前です。' i = 0; while i < 10 do puts 'ここはループの中です。' i += 1 end puts 'ループの外に出ました。'
では、プログラムの内容をみていきましょう。
このプログラムでは、while文という構文を使っています。
while 条件 do end
もし、whileのあと条件に当てはまれば、そのあとのdo~end
の処理が実行されます。
条件が当てはまっているうちは永遠にdo~end
の処理が実行されます。
気をつけなければならないのは、終わらないような条件を入れてしまうと無限ループになってしまうということです。
その場合、プログラムを実行したときに終わることなく永遠に動き続けてしまいます。
もし、気づかず無限ループになってしまってそのまま実行し、プログラムが止まらなくなってしまったら、コントロールボタン(Ctrl)とCボタンを同時に押す(Ctrl+C)とプログラムを強制終了することができます。
では、プログラムの内容を見ていきましょう。
最初の条件は、次のように宣言されています。
i = 0
これは、while文に入る前に宣言し、変数 i を初期化しています。
i=0なのでそのままwhile文の中に入ります。
ここで、次の文が実行されます
i += 1
これは、変数 i に 1を足すという意味です。
これを、インクリメントといいます。
このプログラムでは、まず i がインクリメントされて、変数 i の値が1になります。
その後、またwhile文に入り、インクリメントが繰り返されます。
i の値が10になったらループを抜けます。
出力結果を見てみましょう。
もう一つ、違う形のプログラムを見てみましょう。
【whiletest2.rb】
# whiletest2.rb i = 0 x = 1 while true do if x > 1000000 then break end x *= 2 i += 1 end puts '2の' + i.to_s + '乗' + ' > 1000000'
ここでは、while文の条件にtrueを使っています。
これを使うと、わざと無限ループを作ることができます。
しかし、このままでは終わらないプログラムになってしまいます。
そこで、break
を使います。
このbreak
が読まれた時点で、ループから抜けることができます。
このプログラムでは、if文の条件に当てはまるまでループします。
次の文も見てみましょう。
x *= 2
これは、次の文と同じ意味です。
x = x*2
どちらで書いても同じですが、x *= 2
と書く方が一般的です。
出力結果を見てみます。
もう一つ、プログラムを見てみましょう。
【whiletest3.rb】
# whiletest3.rb x = rand(0.1..0.9) puts 'x=' + x.to_s while x < 0.5 do x = rand(0.1..0.9) puts 'x=' + x.to_s end puts 'ループから抜けました。'
0.1から1.0未満の間で数字がランダムに出てきます。
0.5以上になるまで表示が続き、0.5以上になると「ループから抜けました」とプリントされループを抜けます。
なお、出力結果は一例で、ループにいる回数や数字は実行する度に違います。
whiletest3.rbと同じ出力結果になるようにプログラムを書き換えてみます。
【whiletest4.rb】
# whiletest4.rb while (x = rand(0.1..0.9)) < 0.5 do puts 'x=' + x.to_s end puts 'ループから抜けました。'
実行結果です。
これらの応用で、このような繰り返しのプログラムも書けます。
【whiletest5.rb】
# whiletest5.rb puts 'ループの中に入ります。' count = 0 while true do if count > 9 then break end puts 'ループの中です:' + count.to_s count += 1 end puts 'ループから抜けました。'
実行結果です。
↓↓クリックして頂けると励みになります。