【Ruby】レッスン2-06:until文による繰り返し処理を理解しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:until文による繰り返し処理

この記事の練習問題を解くために必要な知識:
基礎文法(レッスン1)比較演算子と論理演算子if文による分岐処理case文による分岐処理for文による繰り返し処理while文による繰り返し処理until文による繰り返し処理繰り返しの制御

<<前のページ Ruby記事一覧 次のページ>>

Rubyの「until文による繰り返し処理」とは

この章ではRubyにおける「until文による繰り返し処理」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。



Rubyには条件が満たされるまで繰り返し処理を行う「until文」が用意されています。

条件が「false」の間に処理を実行するため、通常の「while文」とは逆の動きをします。

この節ではuntil文の基本的な使い方と具体例について学びます。

until文とは?

until文は指定した条件が「true」になるまで処理を繰り返す制御構造です。

繰り返し処理を逆の条件で制御したいときに役立ちます。

条件が「false」の間はループを続け、条件が「true」になった時点でループが終了します。

until文の構文

until文の構文は以下の通りです。

until 条件式
  # 実行する処理
end

ここで「条件式」が「false」の間は、# 実行する処理が繰り返し実行されます。

条件式が「true」になるとuntil文の処理は終了し、次のコードに進みます。

until文の使用例

以下にuntil文の具体的な使用例を示します。

この例では1から10までの数を出力し、10に到達した時点でループが終了するまでの動作を示しています。

i = 1

until i > 10
  puts i
  i += 1 # iを1ずつ増加させる
end

このコードでは変数iが10より大きくなるまでputs iiの値を出力し、iに1を加え続けます。

iが11になるとi > 10の条件が「true」になり、until文が終了します。

注意点とまとめ

until文は条件が「false」の間に処理を行うため、通常のwhile文とは逆の動作をする点に注意が必要です。

条件によってループが終了しない可能性もあるため、ループが正しく終了するように条件式と処理内容を工夫しましょう。

until文を使いこなすことで繰り返し処理に柔軟性が増し、コードを簡潔に表現できるようになります。

until文による繰り返し処理の練習問題:ユーザーの入力に応じたカウント表示を作ろう

ユーザーが指定した数までカウントアップを行うプログラムを作成してください。

指定された数値まで1ずつ増加させていき、最後に「カウントが終了しました!」というメッセージを表示します。

カウントにはuntil文を使用してください。

この問題の要件

以下の要件に従ってコードを完成させてください。

  1. print文を使用して、「カウントを終了する数を入力してください: 」というメッセージを表示すること。
  2. ユーザーが入力した値を整数として受け取り、変数end_numに代入すること。
  3. 変数iを1に初期化すること。
  4. until文を使用して、iend_numを超えるまで以下の処理を繰り返すこと。
    • puts文でiの値を出力する。
    • iに1を加える。
  5. 繰り返し処理が終了した後、「カウントが終了しました!」というメッセージを表示すること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

カウントを終了する数を入力してください: 5
1
2
3
4
5
カウントが終了しました!

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:ユーザーにカウントを終了する数を入力してもらうためのメッセージを表示
2:ユーザーが入力した値を整数に変換し、変数end_numに代入
3:変数iを1に初期化
4:until文によるループの開始
  □ 変数iの値を出力
  □ 変数iに1を加算
5:カウントが終了したことを示すメッセージを出力

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

# 終了する数をユーザーに入力してもらう
print "カウントを終了する数を入力してください: "
end_num = gets.to_i  # 入力された値を整数に変換して変数end_numに代入

# 変数iを1に初期化
i = 1

# until文を使用して、変数iがユーザー指定のend_numを超えるまで繰り返し処理を行う
=begin
【穴埋め問題1】
ここでuntil文を使用して、変数iがユーザー指定のend_numを超えるまで繰り返し処理を行い、変数iを出力し、iに1を加えるコードを書いてください。
=end

# カウントが終了したことを示すメッセージを出力
puts "カウントが終了しました!"

以上がこの問題の穴埋めコードです。

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。



練習問題の解答と解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

# 終了する数をユーザーに入力してもらう
print "カウントを終了する数を入力してください: "
end_num = gets.to_i  # 入力された値を整数に変換して変数end_numに代入

# 変数iを1に初期化
i = 1

# until文を使用して、変数iがユーザー指定のend_numを超えるまで繰り返し処理を行う
until i > end_num
  puts i  # iの値を出力(1からend_numまでの数字が順に表示される)
  i += 1  # iの値を1ずつ増加させる
end

# カウントが終了したことを示すメッセージを出力
puts "カウントが終了しました!"

正解コードの解説

このコードはユーザーが指定した数までカウントアップを行い、指定された数に到達すると終了するプログラムです。

今回は特に繰り返し処理の一つである「until文」について解説します。

ユーザー入力と変数の初期化

print "カウントを終了する数を入力してください: "
end_num = gets.to_i  # 入力された値を整数に変換して変数end_numに代入
  • print "...":ユーザーに「カウントを終了する数を入力してください: 」というメッセージを表示します。
  • gets.to_i:ユーザーの入力を取得し、整数に変換して変数end_numに代入します。これにより、プログラムはユーザーが何回カウントアップしたいかを確認します。
i = 1

変数iを1に初期化します。

この変数iはカウントを表すために使用します。

繰り返し処理(until文)

until i > end_num
  puts i  # iの値を出力(1からend_numまでの数字が順に表示される)
  i += 1  # iの値を1ずつ増加させる
end
  • until i > end_num:until文は、「条件がtrueになるまで」繰り返し処理を実行します。ここでは「iend_numを超えるまで」という条件で繰り返しが続きます。
  • puts i:カウントの現在の値であるiを出力します。この行により、ユーザーが指定した数に到達するまで1ずつ増加するiの値が表示されます。
  • i += 1iの値を1増やす操作です。これにより、次のループでiが更新され、最終的にend_numの条件に到達するまで繰り返されます。

終了メッセージ

puts "カウントが終了しました!"

最後に「カウントが終了しました!」というメッセージを出力し、プログラムの終了を知らせます。

このメッセージはuntil文のループを抜けた後に実行されます。

まとめ

このコードを通じてuntil文の「条件がtrueになるまで繰り返す」という特徴を学びました。

Rubyの繰り返し処理の使い方を理解することで、様々な条件に応じた柔軟な処理が可能になります。

ぜひ他の繰り返し処理とも比較して、プログラムの構造を理解していきましょう。

<<前のページ Ruby記事一覧 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Rubyのテキスト&問題集トップへ戻る
    トップページへ戻る