5-4-3 while文とbreak、next

while文の構文

while文はwhileに続き(条件式)を記述し、繰り返し実行したい処理をdoendで囲んで記述します。なお、while文ではdoを省略することができます。

この性質上、timeseachメソッドのようにdoend{}で置き換えることができないことに注意してください。

while文の書式をまとめると以下の通りです。

while(条件式) do
  # 条件式がtrueの場合処理を繰り返す
end

breakを使った構文

繰り返し実行する処理の中でbreakを記述すると、ループを抜けることができます。

前ページ「5-4-2 while文を使ってみよう」で確認したbreak if a > 9は、後置if(「4-4 条件分岐の特別な書き方を試そう」参照)でbreakする条件を指定しています。

つまり「変数a9より大きいなら繰り返し処理を中断する」という意味です。

whileの条件式がtrueで固定されているため、通常だと無限ループになってしまいますが、このbreakによって繰り返し処理が中断されている様子が実行結果から確認できます。

nextを使った構文

繰り返し実行する処理の中でnextを記述すると、処理を中断し次の繰り返し処理に移ることができます。

前ページ「5-4-2 while文を使ってみよう」で確認したnext if a == 5は、先ほどのbreakと同じく、後置ifで次の繰り返し処理に移る条件を指定しています。

つまり「変数a5と等しいなら現在の繰り返し処理を中断して次の繰り返し処理に移る」という意味です。

変数a5が代入されている場合、処理が途中で中断されるので後続のp aが実行されません。よって出力結果には5が出力されません。

また次の6以降は出力されているので、nextによって次の繰り返し処理に移ったことが分かります。

breaknextと繰り返し処理

while文で紹介したbreaknextは、while文だけでなくtimeseachメソッドなど、繰り返し処理全般で同様に使うことができます。

sleepメソッド

前ページ「5-4-2 while文を使ってみよう」で出てきたsleepメソッドは、Rubyが提供するメソッドで、引数で指定された秒数何もせずにプログラムを停止します。

sleep 1を入れずに無限ループを発生させると、コンピューターは超高速で処理をするので、Ctrl+Cキーを押してもプログラムがなかなか停止してくれない事態になってしまいますので注意が必要です。

while文のまとめ

  • 条件によって繰り返し処理を実行する場合はwhile文を使う
  • 繰り返し処理を途中で中断する場合はbreakを使う