【Ruby】レッスン3-04:真偽値を返すメソッドを理解しよう

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

この記事で学べる知識:真偽値を返すメソッド

この記事の練習問題を解くために必要な知識:
基礎文法と制御構造(レッスン1~2)、メソッドの定義と呼出しデフォルト引数とキーワード引数メソッドの戻り値真偽値を返すメソッドエラーメッセージ例外処理

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

Rubyの「真偽値を返すメソッド」とは

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

Rubyにはメソッドが true または false といった真偽値を返すメソッドがあります。

主に条件式の判定に使用されるこれらのメソッドは、メソッド名の末尾に「?」を付けるのが特徴で、プログラムの可読性を向上させる役割も担っています。

ここでは真偽値を返すメソッドの基本的な使い方や、定義の方法について解説します。

真偽値を返すメソッドの定義方法

Rubyではメソッド名の末尾に「?」を付けることで、そのメソッドが真偽値を返すことを示すことができます。

これはRubyの命名規則の一つで、他のプログラミング言語にはない特徴です。

例えば「empty?」や「include?」といったメソッドは、名前の通り「空であるか?」「含んでいるか?」といった判定を行い、その結果に応じて true または false を返します。

このような命名規則は、コードを読む際に直感的にメソッドの役割を理解できるため、コードの可読性が向上します。

真偽値を返すメソッドを作成する際には次のような構造が一般的です。

def メソッド名(引数)
  条件 ? true : false
end

単に条件式を記述するだけで、その評価結果(true または false)が返されるため、条件式を直接返すシンプルな書き方もよく使用されます。

コード例と実際の使い方

以下は真偽値を返すメソッドの例です。

# 偶数かどうかを判定するメソッド
def even?(number)
  number % 2 == 0
end

# 配列が空かどうかを判定するメソッド
def array_empty?(array)
  array.empty?
end

このコードではeven? メソッドが「与えられた数が偶数であるか」を判定し、true または false を返します。

またarray_empty? メソッドは「配列が空であるか」を判定し、結果に応じて true または false を返します。

これらのメソッドは条件式での判定によく使用され、以下のような場面で役立ちます。

number = 4
if even?(number)
  puts "#{number}は偶数です"
else
  puts "#{number}は奇数です"
end

my_array = []
if array_empty?(my_array)
  puts "配列は空です"
else
  puts "配列には要素が含まれています"
end

上記のように真偽値を返すメソッドを使うことで、条件判定が簡潔で読みやすいコードになります。

※配列については第4章で細かく説明します。

真偽値メソッドの利点

真偽値を返すメソッドはコードの可読性と表現力を向上させる利点があります。

たとえば「偶数かどうか」「空かどうか」などの判定を行う際、直接的に条件式を書くよりも、こうしたメソッドを利用することで、コードの意図が明確に伝わりやすくなります。

また条件式で「if even?(number)」のように使うことで、コードが自然な日本語のように読めることも特徴です。

まとめ

【初心者向け】Rubyのメソッドと例外処理と使い方を分かりやすくまとめた概念図と使用例。 特にメソッドの呼び出しや戻り値、デフォルト引数とキーワード引数、例外処理の仕組みについて視覚的に理解できるようまとめている。

Rubyの真偽値を返すメソッドは、メソッド名の末尾に「?」を付ける命名規則が特徴で、条件式の判定に広く活用されています。

これらのメソッドを使うことでコードがシンプルかつ直感的に理解できるようになり、Rubyらしい表現が可能です。

次の学習ではメソッドのスコープについて学び、Rubyのメソッドについてさらに理解を深めていきましょう。

真偽値を返すメソッドの練習問題

Rubyで「奇数かどうかを判定するメソッド」を作成してみましょう。

このメソッドは引数として数値を受け取り、奇数の場合には true を返し、偶数の場合には false を返します。

ユーザーに数値を入力してもらい、その数値が奇数か偶数かを判定し、結果を出力するプログラムを完成させてください。

この問題の要件

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

  1. odd_number? という名前のメソッドを作成すること
    • メソッド odd_number? は数値 number を引数として受け取ること
    • number が奇数の場合は true、偶数の場合は false を返すこと
  2. ユーザーに数値の入力を促すメッセージを表示すること(例: "数字を入力してください:"
  3. ユーザーの入力値を整数として受け取り、odd_number? メソッドを使用して奇数か偶数かを判定すること
  4. 判定結果を画面に出力すること(例: "入力された数値は奇数です。" または "入力された数値は偶数です。"

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

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

数字を入力してください: 7
入力された数値は奇数です。

この問題を解くヒント

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

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

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

1:奇数かどうかを判定するメソッドodd_number?の定義
  □ 奇数であればtrueを返し、偶数であればfalseを返す
2:「数字を入力してください:」と出力
3:ユーザー入力を整数に変換し、変数inputに代入
4:if文でinputが奇数かどうかをチェック
  □ 真の場合、「入力された数値は奇数です。」と出力
  □ 偽の場合、「入力された数値は偶数です。」と出力

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

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

# 奇数かどうかを判定するメソッドを定義
def odd_number?(number)
=begin
  【穴埋め問題1】
  ここに引数`number`が奇数かどうかを判定し、奇数なら`true`、偶数なら`false`を返すコードを書いてください。
=end
end

# ユーザーに数値の入力を促す
print "数字を入力してください: "
input = gets.to_i  # 入力を整数に変換

# 入力された数値が奇数かどうかをチェック
if odd_number?(input)
  puts "入力された数値は奇数です。"
else
  puts "入力された数値は偶数です。"
end

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

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



練習問題の解答と解説

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

正解コードの例

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

# 奇数かどうかを判定するメソッドを定義
def odd_number?(number)
  # 奇数であればtrueを返し、偶数であればfalseを返す
  number % 2 == 1
end

# ユーザーに数値の入力を促す
print "数字を入力してください: "
input = gets.to_i  # 入力を整数に変換

# 入力された数値が奇数かどうかをチェック
if odd_number?(input)
  puts "入力された数値は奇数です。"
else
  puts "入力された数値は偶数です。"
end

正解コードの解説

このコードでは入力された数値が奇数かどうかを判定する方法を学びます。

ブロックごとに詳しく見ていきましょう。

奇数かどうかを判定するメソッドの定義

# 奇数かどうかを判定するメソッドを定義
def odd_number?(number)
  # 奇数であればtrueを返し、偶数であればfalseを返す
  number % 2 == 1
end
  • def odd_number?(number)odd_number?というメソッドを定義しています。
    Rubyでは「?」がつくメソッドは通常、truefalse真偽値を返すメソッドとして作られることが多く、ここでもそれに従っています。
  • number % 2 == 1%は「余り」を求める演算子です。
    数値が2で割り切れない場合は余りが1となり、奇数であることを意味します。
    奇数の場合にはtrue、偶数の場合にはfalseが返ります。

ユーザーに数値の入力を促す

# ユーザーに数値の入力を促す
print "数字を入力してください: "
input = gets.to_i  # 入力を整数に変換
  • print "数字を入力してください: ":ユーザーにメッセージを表示し、数値の入力を促しています。
    printは改行せずに文字列を表示するため、ユーザーが次の行に入力しやすくなります。
  • input = gets.to_i:ユーザーが入力した値をgetsで取得し、それを整数(to_i)に変換して変数inputに代入しています。
    getsは文字列として入力を受け取るので、to_iで数値に変換する必要があります。

奇数かどうかの判定と結果の表示

# 入力された数値が奇数かどうかをチェック
if odd_number?(input)
  puts "入力された数値は奇数です。"
else
  puts "入力された数値は偶数です。"
end
  • if odd_number?(input)odd_number?メソッドを呼び出して、inputが奇数かどうかを判定しています。
    奇数ならtrue、偶数ならfalseを返します。
  • puts "入力された数値は奇数です。"odd_number?trueを返した場合に実行され、ユーザーに「入力された数値は奇数です。」と表示します。
  • else:もしodd_number?falseを返した場合(つまり入力された数値が偶数の場合)は、"入力された数値は偶数です。"と表示されます。

まとめ

このコードは、真偽値を返すメソッドodd_number?を活用して数値が奇数かどうかを判定します。

Rubyでは「?」がつくメソッドが真偽値を返す慣例があり、このコードでもその特徴が使われています。

こうしたメソッドを使うと複雑な条件判定を簡潔に実装できます。今回学んだ基礎を基に、さらにRubyのメソッドや条件分岐を試してみてください。

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

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

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

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






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