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

50110130

一つ前のページではcase文による分岐処理について学習しました。

今回は for文による繰り返し処理 について見ていきましょう。

Lesson1:基礎文法編
Lesson2:制御構造編
 ・Lesson2-1:比較演算子と論理演算子を理解しよう
 ・Lesson2-2:if文による分岐処理を理解しよう
 ・Lesson2-3:case文による分岐処理を理解しよう
 ・Lesson2-4:for文による繰り返し処理を理解しよう ◁今回はココ
 ・Lesson2-5:while文による繰り返し処理を理解しよう
 ・Lesson2-6:until文による繰り返し処理を理解しよう
 ・Lesson2-7:繰り返しを制御しよう
 ・確認問題2-☆1:ハイアンドロー ゲームを作ろう
 ・確認問題2-☆2:数当てゲームを作ろう
 ・確認問題2-☆3:簡単なじゃんけんゲームを作ろう
Lesson3:メソッド
Lesson4:コレクション
Lesson5:オブジェクト指向編

<<前のページ

Rubyの記事一覧

次のページ>>

Rubyのfor文とは?基本構文と使い方をマスターしよう

Rubyでは同じ処理を何度も実行したいときに「繰り返し処理」を使います。

その中でも「for文」は指定した範囲や要素を順番に取り出しながら繰り返し処理を行うために便利な構文です。

例えば「1から10までの数字を順に表示したい」「リストに含まれる全ての要素に処理を適用したい」といった場合に利用されます。

for文の基本構文と役割

Rubyのfor文は次のような構文で書かれます。

for 変数 in 範囲またはコレクション
  # 繰り返したい処理
end

「範囲またはコレクション」の部分には、例えば「1から10まで」や配列などのデータ構造を指定します。

この構文により範囲内の値やコレクションの各要素が「変数」に順番に代入され、指定した処理が繰り返されます。

1〜5の出力例でfor文を体験しよう

以下に、1から5までの数を順に出力するfor文の例を示します。

for i in 1..5
  puts i
end

このコードの実行結果は以下のようになります。

1
2
3
4
5

ここでは1..5という範囲オブジェクトを指定しています。

Rubyの範囲オブジェクトは「始点..終点」という形で、指定した数値範囲を表します。

この場合1から5までの数値が順にiに代入され、puts iでその値が表示されます。

まとめ|範囲が明確な繰り返しにはfor文が便利

Rubyのfor文は、範囲の決まった繰り返し処理に適しています。

繰り返し処理の基本としてfor文を活用できるようになると、同様の処理を効率的に書くことができるようになります。

練習問題:for文を使って九九表を作ろう

for文による繰り返し処理をしっかりと身に着けるため、練習問題に挑戦しましょう。

「for文による繰り返し処理」の練習問題

ユーザーが指定した数(1から9まで)の九九表を表示するプログラムを作成しましょう。

ユーザーが2を入力した場合、2の段の九九表が表示されます。例えば、2 x 1 = 2から2 x 9 = 18までを表示します。

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

  1. ユーザーから1から9までの整数を入力させること(入力の際にヒントを表示する)。
  2. 入力された数値に対して1から9までの掛け算をfor文を使って計算すること。
  3. 計算結果を以下のような形式で出力すること:
    • 数値 x 1 = 結果
    • 数値 x 2 = 結果
    • (例: 3 x 1 = 33 x 2 = 6, など)

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

1から9までの数値を入力してください:
3
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27

【ヒント】自力で解くのが難しい人へ

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

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

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

1:ユーザーに「1から9までの数値を入力してください:」と出力
2:ユーザーの入力を取得し、改行を除去して整数に変換し、変数numに代入
3:forループで1から9までの範囲で繰り返し処理を設定
  □ 変数resultにnumとiの積を代入
  □ 「num x i = result」の形式で出力

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

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

# 九九表を表示するプログラム

# ユーザーに数値を入力させる
puts "1から9までの数値を入力してください:"
num = gets.chomp.to_i
# gets.chomp.to_i はユーザーからの入力を受け取り、改行を除去し、整数に変換します。

# 入力された数値の段の九九表を表示する
=begin
【穴埋め問題1】
ここでfor文を使い、1から9までの数値を順に取り出し、掛け算を行って結果を表示するコードを書いてください。
=end

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

この問題の解答例と解説

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
# 九九表を表示するプログラム

# ユーザーに数値を入力させる
puts "1から9までの数値を入力してください:"
num = gets.chomp.to_i
# gets.chomp.to_i はユーザーからの入力を受け取り、改行を除去し、整数に変換します。

# 入力された数値の段の九九表を表示する
for i in 1..9
  result = num * i
  puts "#{num} x #{i} = #{result}"
  # 繰り返し処理で1から9までの数値を使って、掛け算を行い結果を表示します。
end
Q
正解コードの解説

コードをブロックごとに分割して解説します。

ユーザーへの入力メッセージと入力値の取得

puts "1から9までの数値を入力してください:"
num = gets.chomp.to_i

putsメソッドはコンソールにメッセージを表示します。
このコードでは「1から9までの数値を入力してください:」というメッセージが出力され、ユーザーが数字を入力するよう促します。

gets.chomp.to_iはユーザーからの入力を取得し、改行を除去して整数に変換する処理です。
getsはユーザーからの入力を取得し、chompで改行を削除、さらにto_iで整数に変換しています。これにより、変数numには整数値が代入されます。

九九表の計算と表示(for文)

for i in 1..9
  result = num * i
  puts "#{num} x #{i} = #{result}"
end

このブロックが九九表を表示するメインの部分です。for文を使って1から9までの数値をiに順番に代入し、各段の計算を行います。

for i in 1..9は「1から9までの範囲で繰り返し処理を行う」という意味です。Rubyでは1..9と書くことで1から9までの数値を表す範囲(Range)オブジェクトを作り、for文でその範囲内を順に繰り返します。

result = num * iは、ユーザーが入力した数値numに現在のiの値を掛けて、その結果をresultに代入しています。

puts "#{num} x #{i} = #{result}"は計算結果を表示します。#{}を使うことで、文字列の中に変数や計算結果を埋め込むことができ、見やすい九九表の形式で結果が出力されます。

まとめ

このプログラムを通してfor文を使った繰り返し処理の基本を学びました。

for文による繰り返しの使い方が理解できると、さまざまな範囲を使った処理が簡単に書けるようになります。

繰り返し処理は多くの場面で使われるため、今回のコードを応用し、例えば範囲を変更して別の計算を行うなど、ぜひ練習を重ねてください。

<<前のページ

Rubyの記事一覧

次のページ>>

FAQ|Rubyのfor文に関する基本と実用的な使い方

Q
Q1. Rubyのfor文はeachとどう違うのですか?初心者にはどちらがオススメ?

for文は構文が視覚的に分かりやすいため初心者に親しまれやすいですが、Rubyの本来の書き方ではeachメソッドがよく使われます。eachはブロックを使った記述で、柔軟性が高く、Rubyらしいコードになります。簡潔さを重視するならeach、基本を学ぶならfor文から始めるのがおすすめです。

Q
Q2. for文で複数の繰り返し(ネスト)を使う場合の注意点は?

or文を入れ子で使用する際は、変数名の重複に注意が必要です。ループ内で使う変数は異なる名前にすることで、上書きを防げます。また、ネストが深くなると可読性が落ちるため、処理を分けてメソッドにするのも効果的です。

Q
Q3. for文で使用できるオブジェクトの種類には何がありますか?

Rubyのfor文では、範囲オブジェクト(1..5など)や配列、ハッシュなど、eachメソッドを持つコレクション型オブジェクトが利用できます。ただし、ハッシュをfor文で使うとキーと値のペアではなく、配列のように1要素ずつ処理されるため、eachとの使い方には違いがある点に注意しましょう。

記事URLをコピーしました