【Ruby】繰り返しの構文

ABOUTこの記事をかいた人

気になること&知らないことをひたすらググることを得意としています。このブログでは最近気になったことを中心に記事を書いていきます。記事には間違った情報を書かないように細心の注意を払っていますが、もし誤りがあった場合はコメントやお問い合わせフォームからご指摘いただければ幸いです。

Rubyで繰り返しを行うには構文を使う方法とメソッドを使う方法があります。今回は構文を使った繰り返しを見ていきましょう。

Rubyでは下記の構文が用意されています。

  • while文
  • until文
  • for文

繰り返しで注意することは条件設定です。条件設定を間違うと処理が止まらず無限ループに入ってしまいますので、注意が必要です。

while文

while文は条件が成り立っている間、繰り返し実行されます。条件式が「true」(真)となっている場合に処理が繰り返し行われ、「false」(偽)となった場合に繰り返しを抜けることができます。

書き方は下のようになります。

具体的な実行方法は下記のようになります。また、「do」は省略することもできます。

1回目の処理
2回目の処理

このスクリプトではまず、1をnumに代入し2行目で繰り返しの条件を設定します。今回の場合はnumが3より下の場合に「true」となり、処理が繰り返し実行されることになります。

そして4行目でnumに1を足して、その足した値をnumにもう一回代入しています。「num += 1」は「num = num + 1」を簡単な表記にしたものです。

4行目の足し算を消してしまうと「num」に1が追加されず、2行目の条件判定でずっと「1 < 3」の状態となるため、無限ループに突入するので注意が必要です。

処理の具体的な流れとしては

1周目

  • numに1を代入
  • 2行目で「1 < 3」⇒「true」となる
  • 3行目で現在の「num」の値⇒「1」が出力される
  • 4行目でnumに1を追加しnumの値を2にする
2週目
  • 2行目に戻り、式の評価が行われ「2 < 3」⇒「true」となる
  • 3行目で現在の「num」の値⇒「2」が出力される
  • 4行目でnumに1を追加しnumの値を3にする
3週目
  • 2行目に戻り、式の評価が行われ「3 < 3」⇒「false」となる
  • 「false」となったので「while文」の繰り返し処理が終了

結果的に2回putsが行われます。

until文

until文は先程の「while文」とは逆で、条件式が成り立っていない「false」(偽)となっている間に繰り返し処理を行ってくれます。条件が成り立った場合に繰り返しから抜けることができます。書き方としては下のような感じです。

それでは、実行例をみていきましょう。ちなみにuntil文でも「do」は省略可能です。

1回目の処理
2回目の処理

今回も2回だけputsの処理が行われました。今回の場合、3週目の条件判断で「3 > 2」⇒「true」となり条件が成り立つのでループは終了します。

until文は条件式が成り立っていない「false」(偽)ときに処理を繰り返してくれますので基本的な流れは先程のwhile文の例と同じような感じになります。

for文

for文では指定されたオブジェクトの値、要素などを順に1つずつ取り出し、その値などを変数に代入し処理を繰り返してくれます。書き方は下の通りです。

具体的な実行例は下のような感じです。今回は範囲オブジェクト「数値..数値」を使用してみます。また今回も「for文」の「do」は省略することができます。

1回目の処理
2回目の処理
3回目の処理

今回は範囲オブジェクトで「1」から「3」の値が順番に取り出され変数「num」に代入し処理が行われることになります。

具体的な処理の流れとしては

1週目

  • 範囲オブジェクト「1..3」のうち、1が取り出される
  • 1を変数「num」に代入
  • 「puts」で現在の「num」の値「1」を文字列と一緒に表示
  • 「end」まで来たので最初に戻る

2週目

  • 範囲オブジェクト「1..3」のうち、2が取り出される
  • 2を変数「num」に代入
  • 「puts」で現在の「num」の値「2」を文字列と一緒に表示
  • 「end」まで来たので最初に戻る

3週目

  • 範囲オブジェクト「1..3」のうち、3が取り出される
  • 3を変数「num」に代入
  • 「puts」で現在の「num」の値「3」を文字列と一緒に表示
  • 「end」まで来たが全ての値を取り出したので繰り返し終了

for文で配列を使う

for文では配列の要素を1つずつ取り出して変数に代入することができます。ちなみにfor文ではeachメソッドが使われていますので、eachメソッドのあるオブジェクトならfor文を使用することができます。

Japan
America
China
Korea

今回は「country」の要素「”Japan”」から順に取り出されputsで出力されます。「country」の要素は4つあるので4回それぞれ繰り返し「name」に要素を代入しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

気になること&知らないことをひたすらググることを得意としています。このブログでは最近気になったことを中心に記事を書いていきます。記事には間違った情報を書かないように細心の注意を払っていますが、もし誤りがあった場合はコメントやお問い合わせフォームからご指摘いただければ幸いです。