【Ruby】レッスン2-02:if文による分岐処理を理解しよう

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

この記事で学べる知識:if文による分岐処理

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

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

Rubyの文法「if文による分岐処理」とは

ここでは分岐処理(if文、if~elsif文、else文)の意味や使い方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。

if文は条件に応じてプログラムの動作を変えるための基本的な構文です。

Rubyではif文を使って条件を判断し、必要に応じてコードを実行またはスキップすることができます。

分岐処理は柔軟で多様なプログラムを作る上で欠かせない重要な要素です。

if文の基本構文

Rubyのif文の基本構造は以下のようになります。

if 条件
  # 条件が真の場合に実行される処理
elsif 別の条件
  # 最初の条件が偽で、別の条件が真の場合に実行される処理
else
  # すべての条件が偽の場合に実行される処理
end
  • if:指定した条件が真(true)の場合に実行される処理を記述します。
  • elsif:追加の条件を設定する際に使用します。if条件が偽であり、elsifの条件が真の場合に実行されます。
  • else:ifおよびelsifがすべて偽である場合に実行される処理です。elseは必須ではありませんが、すべての条件が偽であったときの処理を指定したい場合に使用します。

if文の使用例

以下はif文を使った分岐処理の具体例です。

score = 85

if score >= 90    #点数が90点以上の場合
  puts "A"
elsif score >= 70 #点数が90点以上ではなく、70点以上の場合
  puts "B"
else              #どの条件も満たさない場合
  puts "C"
end

この例では、変数scoreの値に応じて、「A」、「B」、または「C」を表示します。

  • scoreが90以上の場合、「A」と表示されます。
  • scoreが70以上90未満の場合、「B」と表示されます。
  • 上記の条件がすべて偽の場合、つまりscoreが70未満の場合は「C」と表示されます。

このようにif文は複数の条件を順に評価し、該当する処理を実行します。

またelsifやelseは必要に応じて追加するものであり、不要であれば書かなくても問題ありません。

score = 85

if score >= 90 #点数が90点以上の場合
  puts "合格"
else           #ifの条件を満たさない場合
  puts "不合格"
end
score = 85

if score >= 90 #点数が90点以上の場合
  puts "A"
end

シンプルなif文の書き方

Rubyではif文を短縮して書く方法があります。行末にifを修飾子として置くことで、簡潔に条件付きの処理を記述できます。

以下に例を示します。

score = 95
puts "A" if score >= 90 #点数が90点以上の場合はAと出力

この書き方は条件が少なく、単一の行で処理が完結する場合に便利です。

またコードの読みやすさを保ちながら簡潔に記述できるため、Rubyらしいスタイルとして好まれることが多いです。

まとめ

if文は条件に応じた処理の分岐を行うための基本構文です。elsifやelseを組み合わせることで、より複雑な条件分岐も可能になります。

またif修飾子を活用することで、短くて見やすいコードを記述することができます。

プログラムの条件分岐を適切に設定し、Rubyのif文を使いこなしていきましょう。

if文による条件分岐の練習問題:if文を使って判定プログラムを作ろう

ユーザーに数値を入力してもらい、その数値が「正の数」「負の数」「ゼロ」のいずれであるかを判定するプログラムを作成してください。

if文、elsif文、else文を使って数値の種類に応じたメッセージを表示します。

この問題の要件

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

  • ユーザーに数値の入力を促し、入力された値を整数として変換すること。
  • if文を使って、入力された数値が正の数か負の数か、それともゼロであるかを判定すること。
  • 数値が正の場合、「正の数です」、負の場合、「負の数です」、ゼロの場合は「ゼロです」と表示すること。

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

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

数値を入力してください:
10
正の数です

この問題を解くヒント

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

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

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

1:プログラムの説明コメント「# 判定プログラム」
2:ユーザーに数値の入力を促すメッセージを出力
3:ユーザー入力を受け取り、変数numberに整数として代入
4:数値が正の数か負の数かゼロかを判定
  □ if文でnumberが0より大きい場合に「正の数です」と出力
  □ elsifでnumberが0より小さい場合に「負の数です」と出力
  □ elseで「ゼロです」と出力

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

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

# ユーザーに数値を入力させる
puts "数値を入力してください:"

=begin
【穴埋め問題1】
ここでユーザーからの入力を受け取り、整数に変換して変数numberに格納してください。
=end

# 数値の判定を行う

=begin
【穴埋め問題2】
ここにif文を使って、numberが正の数かどうかを判定し、それに応じてメッセージを表示するコードを書いてください。
=end

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

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



練習問題の解答と解説

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

正解コードの例

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

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

# 数値の判定を行う
if number > 0
  puts "正の数です"
elsif number < 0
  puts "負の数です"
else
  puts "ゼロです"
end
# if 文を使って数値が正、負、または0であるかを判定し、それに応じたメッセージを表示します。

正解コードの解説

今回のRubyコードでは、ユーザーからの入力を受け取り、それをもとに数値が正の数、負の数、またはゼロかを判定するプログラムを作成しています。

この解説では、コードの各部分を説明し、特に分岐処理(if文、if-else文、elsif文)の使い方に焦点を当てます。

ユーザーに数値を入力させる部分

puts "数値を入力してください:"
number = gets.chomp.to_i

最初にputsを使って「数値を入力してください」というメッセージを画面に表示し、次にgets.chomp.to_iでユーザーから入力された値を取得します。

getsはユーザーの入力を受け取るメソッドで、chompは入力された改行を取り除き、to_iはその値を整数に変換します。

この結果、入力された数値がnumberという変数に保存されます。

分岐処理を使った数値の判定部分

if number > 0
  puts "正の数です"
elsif number < 0
  puts "負の数です"
else
  puts "ゼロです"
end

ここがこのプログラムの重要な部分である分岐処理です。条件に応じて異なる処理を実行するためにifelsifelseを使います。

  • if文if number > 0では、numberが0より大きいかどうかを確認します。もし真であれば、「正の数です」と表示します。
  • elsif文elsif number < 0では、numberが0より小さいかどうかを確認します。もし真であれば、「負の数です」と表示します。
  • else文:上記2つの条件がどちらも当てはまらない場合、つまりnumberが0である場合、「ゼロです」と表示します。

このように、複数の条件に対して異なる処理を行うことができます。

まとめ

今回のコードでは、if文elsif文、そしてelse文を使った基本的な分岐処理を学びました。

このような構造を使うと、様々な条件に応じた処理を柔軟に書くことができ、プログラムに幅広い判断力を持たせることが可能です。

ぜひこの機会に分岐処理を理解し、次のステップに進んでください。

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

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

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

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






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