【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が実行されて、ループが止まるという仕掛けです。

    まとめ

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

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

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


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料10万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテキャンバナー ポテキャリバナー

    この記事をシェア

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

    関連ワード

    pickup









    ABOUT US

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

    READ MORE