オーダーメイドコース
icon
icon

Rubyでwhile文(ループ処理)を使う方法【初心者向け】

プログラミング初心者向けに、Rubyの基礎を紹介する記事です。今回は、Rubyでwhile文(ループ処理)を使う方法を解説します。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

プログラミング初心者向けに、Rubyの基礎を紹介する記事です。

今回は、Rubyでwhile文(ループ処理)を使う方法を解説します。

そもそもRubyがよく分からないという方は、Rubyとは何なのか解説した記事をご覧ください。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

 

田島悠介

今回は、whileを使った繰り返し処理を練習してみよう。

大石ゆかり

田島メンター!!繰り返しというとfor文がありましたよね。それとは何か違うんですか~?

田島悠介

Rubyには繰り返し処理を行う構文がいくつかあるけれど、forとwhileも設定の方法が少し異なるんだ。その辺りも解説するよ。

大石ゆかり

お願いします!

 

while文の書き方

whileはループ(繰り返し)処理を行う制御構造のひとつです。whileの基本的な構文を以下に示します。

while 条件式 do
  # do something
end

whileは条件式が「真」の間 do … end内の処理を繰り返します。

Rubyにおいて「偽」とは「nil」か「false」だけです。それ以外は「0」や空文字列も含めて「真」となることに注意してください。

 

while文とfor文の違い

forもループ処理を行う制御構造のひとつです。forの基本的な構文を以下に示します。

for 要素 in オブジェクト do
  # do something
end

Rubyのforは「in」に指定した配列やハッシュ、範囲オブジェクト等から要素を取り出してループ処理を行います。

かんたんに言えば、while文とfor文には以下のような違いがあります。

  • whileは条件式によってループを制御、ループ回数は不定
  • forはオブジェクトの要素を取り出してループ、ループ回数はオブジェクトに含まれる要素数

 

[PR] 未経験からWebエンジニアを目指す方法とは

実際にwhile文を書いてみよう

whileを使ったかんたんな例を以下に示します。

i = 0
while i < 3 do
  puts i
  i += 1
end

1行目で変数「i」に「0」を代入しています。2行目でwhileの条件式「i < 3」は「真」となるのでループが開始されます。

3行目で変数「i」の値を出力し、4行目で「i」に「1」が加算されます。これでループ1巡目の処理が完了しました。

ここでwhileは再度条件式「i < 3」を評価します。変数「i」はループ1巡目の処理によって「1」になっています。「i < 3」は「真」となるので、ループは2巡目に入ります。

 

ループ内の処理が終わるごとに条件式「i < 3」が評価されます。それが「真」である間、繰り返し変数「i」の値が出力され、加算されていきます。「i」が「3」になった時点で「i < 3」が「偽」となりループが終了します。

結果としては「0」「1」「2」が出力されます。

ruby-while01-620x254

1行目を「i = 10」に変更してみます。

i = 10
while i < 3 do
  puts i
  i += 1
end

whileの条件式「i < 3」は最初から「偽」となります。この場合、while … end内の処理は一度も実行されません。

ruby-while02-620x214

whileの条件式を「i >= 0」と変更してみます。

i = 0
while i >= 0 do
  puts i
  i += 1
end

この場合、条件式は永久に「真」となりループが止まらなくなります。このように、whileは容易に無限ループを作り出せてしまいます。

無限ループで処理が終わらないとプログラムに負荷がかかり、クラッシュを起こしてしまうので、ご注意を。

 

大石ゆかり

この場合、iはずっと0と同じかそれより大きい状態になってしまいますね。

田島悠介

そうだね。なので処理はいつまで経っても終わらないという状態になってしまうんだ。

大石ゆかり

なるほど、条件式の設定は慎重にしないとですね。

 

break

breakは最も内側のループを抜ける作用を持ちます。while本体の条件式に関係なくループを抜けたい時にはbreakを使います。

i = 0
while i < 3 do
  puts i
  i += 1
  break
end

この場合、breakに到達した時点でループを抜けるので、一度しか繰り返し処理が実行されません。結果としては「0」が出力されるのみです。

ruby-while03-620x240

今回の記事は以上です。

 

田島悠介

最後にbreakについて少し紹介したよ。breakにはifで条件をつけることもできるんだ。

大石ゆかり

繰り返し処理にはこんな方法もあるんですね。

田島悠介

for文もwhile文も、条件式を間違えると無限ループになってしまうということをよく注意しておこう。

大石ゆかり

不等号の向きなどには特に気をつける必要がありますね。ありがとうございました!

 

ループ処理についてさらに学びたい場合は、Rubyでfor文(ループ処理)を使う方法も合わせてご覧ください。

[お知らせ]TechAcademyでは初心者でも8週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。RubyでWebアプリを開発したい方はご参加ください。