Rubyの初心者向け問題1-3:if文を使って判定プログラムを作ろう
この問題を解くために必要な知識:
【レベル1の知識】
コメントの書き方、変数と定数、基本データ型、四則演算と演算子、入力と出力、文字列操作、分岐処理(if、if~else、elsif、case)、繰り返し処理(for、while、until、each)、範囲(Range)、例外処理(begin-rescue-end)
<<前の問題 | 問題集Top |
次の問題>> |
Rubyの文法「分岐処理(if文、if~else文、elsif文)」とは
ここでは分岐処理(if文、if~else文、elsif文)の意味や使い方を復習します。必要ない方はここをクリックして練習問題へ飛びましょう。
プログラムを条件に応じて異なる処理を行わせたい場合、分岐処理を使います。Rubyでは主に以下の4つの方法で分岐処理を行います。
if文
if
文は、ある条件が真である場合にのみ、そのブロック内の処理を実行します。
x = 7 if x > 5 puts "xは5より大きいです" end
上記の例では、x
が5より大きい場合に"xは5より大きいです"
が表示されます。
if-else文
if
文に加えて、条件が偽の場合に実行されるelse
ブロックを追加することができます。
x = 3 if x > 5 puts "xは5より大きいです" else puts "xは5以下です" end
この場合、x
が5以下であるため、"xは5以下です"
が表示されます。
elsif文
複数の条件をチェックしたい場合は、elsif
を使います。最初のif
が偽の場合、次の条件をチェックします。
x = 10 if x > 10 puts "xは10より大きいです" elsif x == 10 puts "xはちょうど10です" else puts "xは10以下です" end
x
が10の場合、"xはちょうど10です"
が表示されます。
case文
case
文は、複数の条件をシンプルに記述するための分岐方法です。特に、値がいくつかの選択肢の中にあるかを確認したいときに便利です。
case文については次の記事で詳細に説明します。
まとめ
if
文は基本的な条件分岐を行います。if-else
で条件が成り立たない場合の処理を追加できます。elsif
を使うと、複数の条件を簡単に確認できます。case
文は選択肢が多い場合に便利です。
これらの分岐処理を理解して、プログラムの流れをコントロールできるようになりましょう!
Ruby練習問題1-3:if文を使って判定プログラムを作ろう
ユーザーに数値を入力させ、その数値が「正の数」「負の数」「ゼロ」のいずれであるかを判定するプログラムを作成してください。
if文、elsif文、else文を使って数値の種類に応じたメッセージを表示します。
この問題の要件
以下の要件に従ってコードを完成させてください。
- ユーザーに数値の入力を促し、入力された値を整数として変換すること。
- if文を使って、入力された数値が正の数か負の数か、それともゼロであるかを判定すること。
- 数値が正の場合、「正の数です」、負の場合、「負の数です」、ゼロの場合は「ゼロです」と表示すること。
ただし、以下のような実行結果となること。
----- ↓出力される結果の例↓ -----
数値を入力してください: 10 正の数です
----- ↑出力される結果の例↑ -----
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
正解のコードは上から順に以下のような構成となっています。
1.puts
でユーザーに数値の入力を指示
2.gets.chomp.to_i
でユーザーが入力した数値を整数として取得し、number
に格納
3.条件分岐の開始
3-1. if
文でnumber
が正の数かどうか判定
3-1-1. number > 0
の場合、「正の数です」と表示
3-2. elsif
文でnumber
が負の数かどうか判定
3-2-1. number < 0
の場合、「負の数です」と表示
3-3. else
文でnumber
が0であることを判定
3-3-1. それ以外(number == 0
の場合)、「ゼロです」と表示
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
# ユーザーに数値を入力させる 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
ここがこのプログラムの重要な部分である分岐処理です。条件に応じて異なる処理を実行するためにif
、elsif
、else
を使います。
- if文:
if number > 0
では、number
が0より大きいかどうかを確認します。もし真であれば、「正の数です」と表示します。 - elsif文:
elsif number < 0
では、number
が0より小さいかどうかを確認します。もし真であれば、「負の数です」と表示します。 - else文:上記2つの条件がどちらも当てはまらない場合、つまり
number
が0である場合、「ゼロです」と表示します。
このように、複数の条件に対して異なる処理を行うことができます。
まとめ
今回のコードでは、if文、elsif文、そしてelse文を使った基本的な分岐処理を学びました。
このような構造を使うと、様々な条件に応じた処理を柔軟に書くことができ、プログラムに幅広い判断力を持たせることが可能です。
ぜひこの機会に分岐処理を理解し、次のステップに進んでください。
<<前の問題 |
問題集Top |
次の問題>> |
この問題への質問・コメント
この問題を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。