【Ruby】レッスン2-02:if文による条件分岐の使い方をマスターしよう

一つ前のページでは比較演算子と論理演算子について学習しました。
今回は if文による分岐処理 について見ていきましょう。
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のif文|基本構文と条件分岐の仕組みを学ぼう

if文は条件に応じてプログラムの動作を変えるための基本的な構文です。
Rubyではif文を使って条件を判断し、必要に応じてコードを実行またはスキップすることができます。
分岐処理は柔軟で多様なプログラムを作る上で欠かせない重要な要素です。
if文の基本|構文と使い方の基本ルール
Rubyのif文の基本構造は以下のようになります。
if 条件 # 条件が真の場合に実行される処理 elsif 別の条件 # 最初の条件が偽で、別の条件が真の場合に実行される処理 else # すべての条件が偽の場合に実行される処理 end
- if:指定した条件が真(true)の場合に実行される処理を記述します。
- elsif:追加の条件を設定する際に使用します。if条件が偽であり、elsifの条件が真の場合に実行されます。
- else:ifおよびelsifがすべて偽である場合に実行される処理です。elseは必須ではありませんが、すべての条件が偽であったときの処理を指定したい場合に使用します。
条件分岐の実例|スコア判定プログラム
以下は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文|1行で書ける条件式
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であるかを判定し、それに応じたメッセージを表示します。
- 正解コードの解説
-
コードをブロックごとに分割して解説します。
ユーザーに数値を入力させる部分
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
ここがこのプログラムの重要な部分である分岐処理です。条件に応じて異なる処理を実行するために
if
、elsif
、else
を使います。- if文:
if number > 0
では、number
が0より大きいかどうかを確認します。もし真であれば、「正の数です」と表示します。 - elsif文:
elsif number < 0
では、number
が0より小さいかどうかを確認します。もし真であれば、「負の数です」と表示します。 - else文:上記2つの条件がどちらも当てはまらない場合、つまり
number
が0である場合、「ゼロです」と表示します。
このように、複数の条件に対して異なる処理を行うことができます。
- if文:
まとめ
今回のコードでは、if文、elsif文、そしてelse文を使った基本的な分岐処理を学びました。
このような構造を使うと、様々な条件に応じた処理を柔軟に書くことができ、プログラムに幅広い判断力を持たせることが可能です。
ぜひこの機会に分岐処理を理解し、次のステップに進んでください。
FAQ|Rubyのif文による条件分岐
- Q1. Rubyのif文でelsifを複数使うのは問題ありませんか?使う際の注意点は?
-
はい、Rubyではelsifを複数使うことが可能です。ただし、条件が多すぎるとコードが読みにくくなるため、ロジックが複雑になる場合はcase文や別の方法を検討すると良いでしょう。
- Q2. if修飾子を使うとコードが短くなりますが、使わない方が良いケースはありますか?
-
if修飾子は1行で処理が完結する場面に便利ですが、複雑な処理やネストが絡む場面では可読性が落ちるため、通常のif文を使ったほうが安全です。初心者はまず通常の構文に慣れるのがおすすめです。
- Q3. if文の条件に複数の比較を入れるにはどう書けばいいですか?
-
複数条件を扱う場合は論理演算子(
&&
や||
)を使います。例えばif score >= 70 && score < 90
のように書くことで、70以上かつ90未満の範囲を指定できます。ただし、論理演算子の優先順位や括弧の使い方にも注意が必要です。