【Ruby入門】Rubyの繰り返しを極める!様々な繰り返しのバリエーション
  • facebookページ
  • twitterページ
  • 2017.10.05

    【Ruby入門】Rubyの繰り返しを極める!様々な繰り返しのバリエーション

    プログラムの制御構造は「順次」「選択」「繰り返し」があります。これらの概念は、プログラムである限り、言語によらず必ず存在しています。もちろん、Rubyにもあります。

    Rubyではさまざまな繰り返しの仕組みが用意されています。そこで本記事では、繰り返しについて徹底解説します。

    for文、while文、Ruby独特のuntil文

    まずはとっつきやすいように、他の言語と近い形式のfor文から解説していきます。

    for文の基本

    for文の基本パターンです。

    Rubyがオブジェクトの中身を1つづつ取り出して、変数に代入して、オブジェクトの中身を全て処理するまでループを回してくれます。

    このパターンにのっとり、1から10までの合計(forバージョン)を算出してみましょう。

    [実行結果]

    1から10まで足した結果が算出できました。

    範囲オブジェクト

    ここで1..10ってなんだろう?と思われた方も多いはずです。これは範囲オブジェクトといい、Ruby独特のものです。開始値と終了値を..で結ぶと、範囲オブジェクトとなります。Rubyでは、範囲ですらオブジェクトです。

    つまり先ほどのfor文は「for i in 1..10 do」としたので、1から10までの整数を順次取り出し、iに代入して、以降に書かれた「sum += i」を実行する、ということです。

    範囲オブジェクトの開始と終了は具体的な数値である必要はなく、変数でも構いません。先の例は以下のように書くことも可能です。

    [実行結果]

    ちなみに、代入部分をこのように書けます。多重代入というので、覚えておくとよいでしょう。もちろん結果は同じ55です。

    配列をfor文で回す

    オブジェクトであれば、基本的にforを回せます。次は配列をfor文を使って回してみましょう。

    [実行結果]

    配列の中身をstrという変数で受けて、その内容をputsできました。

    ループを回すうちに、条件を満たせば以降を処理せず次のループへ移したいということがあります。そんなときはnextを使います。

    [実行結果]

    aまたはbのときはループを途中で終わらせて次のループへ回しています。よってcから表示された、というわけです。

    while文

    whileは、他言語の経験がある方はピンとくる書き方です。

    この書式を使い、1から10までの合計(whileバージョン)を作りましょう。

    [実行結果]

    whileを使い、1から10までの合計を算出することができました。

    whileとfor文の使い分けはどうすればよいのでしょうか?それは以下のように考えればよいでしょう。

    • 繰り返し回数が決まっておらず、条件を満たす限り回すのはwhile文。
    • 回数が明確に決まっている場合はfor文。

    until文

    while文は、条件式を満たす間回し続けるループでした。untilはその逆で、条件を満たさない間回し続けるループです。表現を変えると、条件を満たせば終了です。終了条件を記述する、ともいえますね。

    これを使い、1から10までの合計(untilバージョン)を作りましょう。

    [実行結果]

    untilを使ったので、「until i > 10」ということは、iが10まではループが周り、11になったとたんに条件式がtrueとなるので終了する、という動きです。

    eachによる繰り返し

    Rubyにはeachというメソッドがあります。これはイテレータと呼ばれるメソッドの種類の1つです。

    配列の繰り返しを、eachを使って書いてみます。

    [実行結果]

    arrayの中身を1つづつ取り出してstrに代入し「puts str」を実行できました。

    eachについてのもっと詳細な内容は、【Ruby入門】eachメソッドの使い方と応用例をごらんください。

    timesによる繰り返し

    あらかじめ繰り返す回数が決まっている場合は、timesが使えます。

    これを使って、5回繰り返してみましょう。

    [実行結果]

    putsを3回繰り返すことができました。

    無限ループのloop、終わらせるbreak

    loopは、無限ループ(終わらないループ)を作るときに使います。しかし終了条件を記述しないと本当に無限にループしてプログラムが終わりません。よって、loopはbreakと合わせてよく使われます。

    これを使い、1から10までの合計(loopバージョン)を作りましょう。

    [実行結果]

    loopを使い、1から10までの合計を出すことができました。loop自体は無限ループですが「if i > 10」としたので、iが11に達したときifの中身のbreakが実行されて、ループが止まるという仕掛けです。

    まとめ

    本記事では、繰り返しを解説しました。

    繰り返しの習得は、プログラミングで避けては通れない道です。逆に繰り返しを使いこなすことができれば、とてもスマートなプログラムができます。

    開始や終了の条件、繰り返すを内容を変えたりして、いろいろと遊んでみてくださいね!



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE