5-4-3 while文とbreak、next
while文の構文
while文はwhile
に続き(条件式)
を記述し、繰り返し実行したい処理をdo
〜end
で囲んで記述します。なお、while文ではdo
を省略することができます。
この性質上、times
、each
メソッドのようにdo
〜end
を{
〜}
で置き換えることができないことに注意してください。
while文の書式をまとめると以下の通りです。
while(条件式) do # 条件式がtrueの場合処理を繰り返す end
break
を使った構文
繰り返し実行する処理の中でbreak
を記述すると、ループを抜けることができます。
前ページ「5-4-2 while文を使ってみよう」で確認したbreak if a > 9
は、後置if(「4-4 条件分岐の特別な書き方を試そう」参照)でbreak
する条件を指定しています。
つまり「変数a
が9
より大きいなら繰り返し処理を中断する」という意味です。
while
の条件式がtrue
で固定されているため、通常だと無限ループになってしまいますが、このbreak
によって繰り返し処理が中断されている様子が実行結果から確認できます。
next
を使った構文
繰り返し実行する処理の中でnext
を記述すると、処理を中断し次の繰り返し処理に移ることができます。
前ページ「5-4-2 while文を使ってみよう」で確認したnext if a == 5
は、先ほどのbreak
と同じく、後置ifで次の繰り返し処理に移る条件を指定しています。
つまり「変数a
が5
と等しいなら現在の繰り返し処理を中断して次の繰り返し処理に移る」という意味です。
変数a
に5
が代入されている場合、処理が途中で中断されるので後続のp a
が実行されません。よって出力結果には5
が出力されません。
また次の6
以降は出力されているので、nextによって次の繰り返し処理に移ったことが分かります。
break
、next
と繰り返し処理
while文で紹介したbreak
とnext
は、while文だけでなくtimes
、each
メソッドなど、繰り返し処理全般で同様に使うことができます。
sleep
メソッド
前ページ「5-4-2 while文を使ってみよう」で出てきたsleep
メソッドは、Rubyが提供するメソッドで、引数で指定された秒数何もせずにプログラムを停止します。
sleep 1
を入れずに無限ループを発生させると、コンピューターは超高速で処理をするので、Ctrl+C
キーを押してもプログラムがなかなか停止してくれない事態になってしまいますので注意が必要です。
while文のまとめ
- 条件によって繰り返し処理を実行する場合はwhile文を使う
- 繰り返し処理を途中で中断する場合は
break
を使う