【Ruby】レッスン4-03:配列を調査しよう

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

この記事で学べる知識:配列の調査

この記事の練習問題を解くために必要な知識:
基礎文法、制御構造、メソッド(レッスン1~3)配列の基本配列の操作配列の調査配列の並び替えeachメソッドmapメソッドfilterメソッドハッシュ

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

Rubyの「配列の調査」とは

この章ではRubyにおける「配列の調査」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。

配列はRubyでデータを管理する上で非常に重要な役割を果たします。

その中身を調査することでプログラムが正しく動作しているか確認したり、次の処理を決めたりできます。

この章ではRubyで配列を調査するために便利なメソッド「empty?」「include?」「index」について解説します。

配列が空かどうか確認する:empty?メソッド

empty? メソッドを使うと配列が空かどうかを簡単に確認できます。

このメソッドは配列が空であれば true を返し、要素が1つでも存在すれば false を返します。

arr1 = []
arr2 = [1, 2, 3]

puts arr1.empty?  # true
puts arr2.empty?  # false
  • 空の配列をチェックする際に役立つ。
  • 配列が空かどうかを条件分岐で利用することで、無駄な処理を避けることができる。

配列内の特定の要素の位置を取得する:indexメソッド

index メソッドを使うと配列内の特定の要素が最初に見つかる位置(インデックス)を取得できます。

見つからなかった場合は nil を返します。

arr = [10, 20, 30, 40, 50]

puts arr.index(30)  # 2
puts arr.index(60)  # nil
  • 配列内の要素の位置を知りたいときに使用する。
  • 条件によって処理を分岐させたいときに役立つ。

配列の調査メソッドを活用した実例

これらのメソッドを組み合わせることで配列の中身を効率よく調べることができます。

arr = [5, 10, 15, 20]

if !arr.empty? && arr.include?(10)
  index = arr.index(10)
  puts "配列に10が含まれており、そのインデックスは #{index} です。"
else
  puts "配列が空か、10が含まれていません。"
end

このコードを実行すると以下のように出力されます。

配列に10が含まれており、そのインデックスは 1 です。
  • 配列が空でないことを確認(empty?)。
  • 配列に特定の値が含まれているかチェック(include?)。
  • 含まれている場合、その位置を取得して表示(index)。

まとめ

Rubyの「empty?」「include?」「index」は、配列の中身を調べる上で非常に便利なメソッドです。

これらを使いこなすことで配列の内容を簡単に確認でき、プログラムの信頼性を高めることができます。

これらの基本を理解した上で、配列をさらに効果的に活用していきましょう!

配列の調査の練習問題

配列に対して調査を行うプログラムを作成しましょう。このプログラムでは、以下の手順を実施します。

  1. 配列が空かどうかを確認します。
  2. 特定の値が配列に含まれているかを調べます。
  3. 指定された値が配列の何番目にあるかを取得し、その位置を表示します。
  4. 空の配列についても調査を行います。

これによりRubyの配列調査メソッドの使い方を習得できます。

この問題の要件

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

  1. 配列 arr[1, 2, 3, 4, 5] と定義すること。
  2. empty? メソッドを使用して、配列が空かどうかを確認し、その結果を出力すること。
  3. include?(値) メソッドを使用して、配列に特定の値(例: 3)が含まれているかを確認し、その結果を出力すること。
  4. index(値) メソッドを使用して、指定した値が配列の何番目にあるかを取得し、結果を表示すること。
    • 値が含まれていない場合はその旨を表示すること。
  5. 空の配列 empty_arr = [] を定義し、empty? メソッドで確認してその結果を出力すること。

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

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

配列が空ですか?: false
3は配列に含まれていますか?: true
3は配列の2番目にあります。
空の配列が空ですか?: true

この問題を解くヒント

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

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

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

1:配列arr[1, 2, 3, 4, 5]として定義
2:empty?メソッドを使って配列が空かを確認し、その結果を出力
3:変数value_to_checkに値3を代入
4:include?メソッドを使って、配列に値3が含まれているかを確認し、その結果を出力
5:indexメソッドを使って、値3が配列のどの位置にあるかを取得
  □ 値が見つかった場合、結果を出力
  □ 値が見つからない場合、見つからない旨を出力
6:空の配列empty_arr[]として定義
7:empty?メソッドを使って空の配列が空かを確認し、その結果を出力

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

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

# 配列の定義
arr = [1, 2, 3, 4, 5]

# empty? メソッドを使用して配列が空か確認します。
=begin
【穴埋め問題1】
ここでempty?メソッドを使用して配列が空かを確認し、その結果を出力するコードを書いてください。
=end

# include?(値) メソッドを使用して確認します。
value_to_check = 3
=begin
【穴埋め問題2】
ここでinclude?メソッドを使用して、配列に指定の値が含まれているかを確認し、その結果を出力するコードを書いてください。
=end

# index(値) メソッドを使用して値の位置を取得します。
=begin
【穴埋め問題3】
ここでindexメソッドを使用して、指定した値が配列の何番目にあるかを取得し、結果を出力するコードを書いてください。
=end

# 空の配列を定義
empty_arr = []
=begin
【穴埋め問題4】
ここでempty?メソッドを使用して、空の配列が空かどうかを確認し、その結果を出力するコードを書いてください。
=end

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

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



練習問題の解答と解説

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

正解コードの例

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

# 配列の定義
arr = [1, 2, 3, 4, 5]

# empty? メソッドを使用して配列が空か確認します。
puts "配列が空ですか?: #{arr.empty?}" # => false

# include?(値) メソッドを使用して確認します。
value_to_check = 3
puts "#{value_to_check}は配列に含まれていますか?: #{arr.include?(value_to_check)}" # => true

# index(値) メソッドを使用して値の位置を取得します。
index = arr.index(value_to_check)
if index
  puts "#{value_to_check}は配列の#{index}番目にあります。" # => 2番目
else
  puts "#{value_to_check}は配列に含まれていません。"
end

empty_arr = []
puts "空の配列が空ですか?: #{empty_arr.empty?}" # => true

正解コードの解説

今回作成したコードではRubyの「配列の調査」に関するメソッドを使い、配列の状態や特定の値の有無を確認する方法を学びます。

以下のブロックごとに解説します。

配列の定義

arr = [1, 2, 3, 4, 5]
  • 配列 arr[1, 2, 3, 4, 5] という要素を持つ形で定義しています。
  • 配列は複数のデータをまとめて格納できる構造で、Rubyでは [] を使って簡単に作成できます。

配列が空か確認する

puts "配列が空ですか?: #{arr.empty?}" # => false
  • empty? メソッドを使って配列が空かどうかを確認しています。
  • このメソッドは配列が要素を持っていない場合に true を返し、要素が存在する場合に false を返します。
  • 今回の例では配列 arr に要素が含まれているため、結果は false になります。

配列に特定の値が含まれているか確認する

value_to_check = 3
puts "#{value_to_check}は配列に含まれていますか?: #{arr.include?(value_to_check)}" # => true
  • include? メソッドを使って、指定した値が配列に含まれているかを調査します。
  • value_to_check に格納された値(ここでは 3)が配列 arr に含まれているため、結果は true となります。
  • このようにして配列の中にある特定の値を確認することができます。

指定した値の位置を取得する

index = arr.index(value_to_check)
if index
  puts "#{value_to_check}は配列の#{index}番目にあります。" # => 2番目
else
  puts "#{value_to_check}は配列に含まれていません。"
end
  • index メソッドを使用して指定した値が配列内のどの位置にあるかを取得します。
  • value_to_check(ここでは 3)の位置を調べた結果、インデックスが 2 であることがわかります。
  • Rubyではインデックスが0から始まるため、ユーザーにとってわかりやすくする場合は「n番目」といった形で表示を工夫します。

空の配列を調査する

empty_arr = []
puts "空の配列が空ですか?: #{empty_arr.empty?}" # => true
  • 空の配列 empty_arr[] で定義し、empty? メソッドで調査しています。
  • 配列に要素が含まれていないため結果は true になります。

まとめ

今回のコードではRubyの配列操作において重要な「配列の調査」メソッドを学びました。

  • empty?:配列が空かどうかを確認。
  • include?:配列に特定の値が含まれているか確認。
  • index:指定した値の位置を取得。

これらのメソッドを活用することで、配列データの内容や構成を簡単に確認できるようになります。

Rubyの配列操作はデータ処理の基本中の基本です。

これらを繰り返し使いこなして、次のステップとして配列の並び替えやループ処理も学んでいきましょう!

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

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

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

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






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