1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

子供の想像力を伸ばしアイデアを形にする小学生向けプログラミング教室「プロスタキッズ」

0からのRuby入門その9〜ループで同じ処理を繰り返す〜

Pocket

はじめに

条件判定文はうまく書けるようになりましたか?

条件判定文は、条件分岐だけでなく繰り返し(ループ)にも使われます。
繰り返しも制御構造のひとつであり、まったく同じ処理(またはすこし異なる処理)を繰り返し実行します。
ループを使えば、同じ処理を何度も記述する必要がなく、コードの重複を避けられます。

この記事では、Ruby初心者の方向けに、制御構造のひとつである繰り返し(ループ)について説明していきます。
条件分岐同様、複数の構文があります。

繰り返しとはなにか?

繰り返し(ループ)とは、まったく同じ(またはやや異なる)処理を繰り返し実行することです。
たとえば、ユーザーからの入力を繰り返し受け付けたり、ファイルの終わりまで読み込んだりするなどです。
また、配列をはじめとするコレクションの要素に対して、くり返し同じ処理を実行することもあります。

まずは、while文を使った繰り返しについてみていきましょう。

while文での繰り返し

while文は、多くの言語に存在する基本的な制御構造です。さっそくコードをみてみましょう。

例:

この例では、変数numが1000を超えるまで2倍しています。

while文は、条件判定文が真の(成り立っている)間だけ処理を継続します。

最終的に、変数numが1280となった時点で条件判定文が偽となるため、そこでループが終了します。
逆にいえば、条件が偽にならない限りループは終了しませんので、無限ループにならないように条件に注意しましょう。

一般的に、while文の内部で条件となる変数を更新することが多いです。

条件判定は各ループの開始前に行われるため、条件によってはwhile文が一度も実行されないこともあることに注意しましょう。
次は、while文と対をなすuntil文です。

until文での繰り返し

until文は、while文と逆の性質を持っています。
つまり、条件判定文が偽の(成り立っていない)間だけループを継続します。

次の例をみて下さい。

例:

この例では、変数numが1より小さくなるまで2分の1にしています。

while文とは条件の意味が逆になっていることに注目して下さい。
基本的にはwhile文を使えば問題ありませんが、until文のほうが条件がわかりやすくなる場合は使ってみましょう。

次は、ブロック構文による繰り返しです。

ブロック構文を使った繰り返し

最後に、ブロック構文を使った繰り返しを学んでいきましょう。

ブロック構文とは、コードの塊(コードブロック)をメソッドに渡す方法のひとつです。まずは、例をみてみましょう。

例:

プログラムでは、配列などのコレクションの要素に対して、順次処理を実行したいことがよくあります。

そのため、配列には「eachメソッド」が用意されています。

”eachメソッド”にはコードブロックを渡します。
コードブロックには配列の要素が順次渡され、要素の数だけループ処理されます。

この例では、配列の要素を2倍してひとつずつ出力しています。

また、ブロック構文はもうひとつの書き方があり、次のようにすることもできます。

例:

この例では、配列の要素を順次足し合わせて、合計値を出力しています。

先ほどの構文でも複数行のコードブロックが書けますが、一般的にはこちらの構文が好まれるでしょう。

結果的にはどちらも同じです。
コードブロックが単一行か複数行かで使い分けるとよいでしょう。

なお、コードブロック中の変数(||で囲われた部分)には任意の名前をつけることができます。

まとめ

3種類の繰り返し構文は理解できましたか?

while文やuntil文も重要ですが、最も使用頻度が高いのはブロック構文を使った繰り返しでしょう。

なぜなら、意味的な繰り返しよりも配列などのコレクションの要素をループ処理することが多いからです。
しっかりマスターしておきましょう。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る