Ruby練習問題1-6:繰り返し処理を使いこなそう

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

Rubyの初心者向け問題1-6:繰り返し処理を使いこなそう

この問題を解くために必要な知識:
【レベル1の知識】
コメントの書き方、変数と定数、基本データ型、四則演算と演算子、入力と出力、文字列操作分岐処理(if、if~else、elsif、case)、繰り返し処理(for、while、until、each)、範囲(Range)例外処理(begin-rescue-end)

<<前の問題 問題集Top 次の問題>>

Rubyの文法「繰り返し処理」とは

ここでは繰り返し処理(for、while、until、each)の意味や使い方を復習します。必要ない方はここをクリックして練習問題へ飛びましょう。



繰り返し処理は、同じ処理を複数回行いたい場合に使われます。

プログラムが自動的に繰り返し処理を実行することで、手動で何度も同じコードを書く手間を省くことができます。

Rubyでは主に次の4つの方法で繰り返し処理を行います。

for文

for文を使うと、指定した範囲内で繰り返し処理を実行できます。

for i in 1..5 do
  puts i
end

このコードでは、1から5までの数字を順に出力します。

while文

while文は、指定した条件が真である限り、繰り返し処理を行います。

x = 0
while x < 10 do
  x += 1
  puts x
end

この例では、x10未満である限り、xの値を1ずつ増やしながら出力します。

until文

until文は、条件が偽である限り、繰り返し処理を行います。条件が真になるとループを終了します。

until x > 10 do
  x += 1
end

このコードは、x10を超えるまで繰り返します。

eachメソッド

eachメソッドは、配列などのコレクションを1つずつ処理するのに便利です。

[1, 2, 3, 4, 5].each do |num|
  puts num
end

このコードは、配列の各要素を順に取り出して出力します。

まとめ

Rubyの繰り返し処理は、状況に応じてさまざまな方法を使い分けることができます。

これらの基本的な繰り返し処理を理解することで、プログラムを効率的に書けるようになります。



Ruby練習問題1-6:繰り返し処理を使いこなそう

Rubyの繰り返し処理を使って、さまざまな操作を行うプログラムを作成しましょう。

まず、1から10までの数値を順に表示し、次にユーザーから数値を入力させ、その合計を計算します。

さらに、合計が100を超えるまで繰り返し処理を行い、配列に含まれる数値を1つずつ表示するプログラムを作成します。

この問題の要件

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

  • or文を使って1から10までの数値を順に表示すること。
  • while文を使ってユーザーからの入力を受け付け、その合計を計算すること。0が入力されたら終了すること。
  • until文を使って、合計が100を超えるまでユーザーからの入力を受け付けること。
  • eachメソッドを使って、配列の各要素を順に出力すること。

ただし、以下のような実行結果となること。

----- ↓出力される結果の例↓ -----

1から10までの数値を表示します:
1
2
3
4
5
6
7
8
9
10
数値を入力してください(0を入力すると終了します):
5
現在の合計は:5
10
現在の合計は:15
0
最終的な合計は:15
合計が100以上になるまで数値を入力してください(現在の合計:0):
50
合計が100以上になるまで数値を入力してください(現在の合計:50):
60
合計が100以上になりました。最終的な合計は:110
配列の各要素を表示します:
5
10
15
20
25

----- ↑出力される結果の例↑ -----

この問題を解くヒント

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

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

正解のコードは上から順に以下のような構成となっています。

1.for文による繰り返し処理
 1-1. 1から10までの数値を順に表示するfor文
  1-1-1. 範囲を1から10に設定
  1-1-2. 各数値を画面に出力する

2.while文によるユーザーからの入力を使った繰り返し処理
 2-1. ユーザーから数値の入力を受け付けるためのwhile文
  2-1-1. 0を入力するまでユーザーの入力を繰り返す
  2-1-2. 入力された数値を合計に加算
  2-1-3. 現在の合計を画面に出力
  2-1-4. ユーザーから再度入力を受け付ける

3.until文による条件付き繰り返し処理
 3-1. 合計が100に達するまでユーザーの入力を受け付けるuntil文
  3-1-1. 現在の合計を表示
  3-1-2. ユーザーから数値を入力させ、合計に加算
  3-1-3. 合計が100以上になった場合にループを終了する

4.eachメソッドを使った配列要素の出力
 4-1. 配列numbersに含まれる要素を順に出力するeachメソッド
  4-1-1. 各要素を順に画面に表示する

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

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

# forを使って1から10までの数値を表示
puts "1から10までの数値を表示します:"
for i in 1..10
  =begin
  【穴埋め問題1】
  ここに数値を出力するコードを書いてください。
  =end
end

# whileを使ってユーザーからの入力を受け付け、合計を求める
puts "数値を入力してください(0を入力すると終了します):"
sum = 0
input = gets.chomp.to_i

while input != 0
  =begin
  【穴埋め問題2】
  ここに合計を計算し、現在の合計を表示するコードを書いてください。
  =end
  input = gets.chomp.to_i
end

puts "最終的な合計は:#{sum}"

# untilを使って合計が100以上になるまでユーザーからの入力を受け付ける
sum_until = 0

until sum_until >= 100
  puts "合計が100以上になるまで数値を入力してください(現在の合計:#{sum_until}):"
  input_until = gets.chomp.to_i
  =begin
  【穴埋め問題3】
  ここに合計を更新するコードを書いてください。
  =end
end

puts "合計が100以上になりました。最終的な合計は:#{sum_until}"

# eachを使って配列の各要素を出力する
numbers = [5, 10, 15, 20, 25]
puts "配列の各要素を表示します:"
numbers.each do |number|
  =begin
  【穴埋め問題4】
  ここに配列の要素を出力するコードを書いてください。
  =end
end

 

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



解答例と解説

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

正解コードの例

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

********************

# 繰り返し処理を使いこなそう

# forを使って1から10までの数値を表示
puts "1から10までの数値を表示します:"
for i in 1..10
  puts i
end

# whileを使ってユーザーからの入力を受け付け、合計を求める
puts "数値を入力してください(0を入力すると終了します):"
sum = 0
input = gets.chomp.to_i

while input != 0
  sum += input
  puts "現在の合計は:#{sum}"
  input = gets.chomp.to_i
end

puts "最終的な合計は:#{sum}"

# untilを使って合計が100以上になるまでユーザーからの入力を受け付ける
sum_until = 0

until sum_until >= 100
  puts "合計が100以上になるまで数値を入力してください(現在の合計:#{sum_until}):"
  input_until = gets.chomp.to_i
  sum_until += input_until
end

puts "合計が100以上になりました。最終的な合計は:#{sum_until}"

# eachを使って配列の各要素を出力する
numbers = [5, 10, 15, 20, 25]
puts "配列の各要素を表示します:"
numbers.each do |number|
  puts number
end

********************

コードの解説

このコードは、Rubyの繰り返し処理(for、while、until、each)を用いたプログラムです。

それぞれの繰り返し処理がどのように機能しているかを解説します。

for文による数値の表示

puts "1から10までの数値を表示します:"
for i in 1..10
  puts i
end

for文は指定した範囲内の値を順に処理するために使います。この場合、1..10という範囲が指定されており、iが1から10まで順番に変化します。

そしてputs iによって、各数値が表示されます。for文は決まった回数だけ繰り返し処理を行う場合に便利です。

while文による合計の計算

puts "数値を入力してください(0を入力すると終了します):"
sum = 0
input = gets.chomp.to_i

while input != 0
  sum += input
  puts "現在の合計は:#{sum}"
  input = gets.chomp.to_i
end

puts "最終的な合計は:#{sum}"

while文は、条件が真の間繰り返し処理を実行します。この場合、ユーザーが入力した値が0でない限り、繰り返し処理が続きます。

sum += inputで合計値が更新され、入力が0になるとループが終了します。while文は、繰り返し回数が予測できない状況に適しています。

until文による条件付き繰り返し

sum_until = 0

until sum_until >= 100
  puts "合計が100以上になるまで数値を入力してください(現在の合計:#{sum_until}):"
  input_until = gets.chomp.to_i
  sum_until += input_until
end

puts "合計が100以上になりました。最終的な合計は:#{sum_until}"

until文は、条件が真になるまで繰り返し処理を行います。

ここでは、sum_untilが100以上になるまでユーザーからの入力を受け付けます。

while文とは逆に、until文は条件が「偽」の間に繰り返し処理を実行する点が特徴です。

eachメソッドによる配列の操作

numbers = [5, 10, 15, 20, 25]
puts "配列の各要素を表示します:"
numbers.each do |number|
  puts number
end

eachメソッドは、配列やハッシュなどのコレクションの各要素を1つずつ処理する際に使われます。

ここでは、numbers配列の各要素がnumberに代入され、putsによって順番に出力されます。

配列の要素を1つずつ処理する場合、eachメソッドはシンプルで効率的です。

<<前の問題 問題集Top 次の問題>>

この問題への質問・コメント

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

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






    Ruby練習問題集へ戻る
    トップページへ戻る