Ruby練習問題1-4:case文を使って曜日判定プログラムを作ろう

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

Rubyの初心者向け問題1-4:case文を使って曜日判定プログラムを作ろう

この問題を解くために必要な知識:
【レベル1の知識】
コメントの書き方、変数と定数、基本データ型、四則演算と演算子、入力と出力、文字列操作、分岐処理(if、if~else、elsif、case)、繰り返し処理(for、while、until、each)範囲(Range)例外処理(begin-rescue-end)

<<前の問題 問題集Top 次の問題>>

Rubyの文法「分岐処理(case文)」とは

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




Rubyでは、複数の条件に応じて処理を分けるための「分岐処理」が用意されています。

分岐処理にはいくつかの種類がありますが、この記事では特に「case文」について詳しく解説します。

case文の使い方

case文は、特定の値に基づいて処理を分岐させる場合に便利です。if-elseの連続よりも読みやすく、特に複数の条件を扱うときに効果的です。

case文では、評価したい変数や式に対して複数のwhen節を使って条件を指定します。条件が一致する場合、その処理が実行されます。

value = 2

case value
when 1
  puts "値は1です"
when 2
  puts "値は2です"
when 3
  puts "値は3です"
else
  puts "不明な値です"
end

この例では、valueが2なので「値は2です」が出力されます。else節は、どのwhenにも一致しなかった場合に実行されます。

複数条件を一つのwhenで扱う

case文では、複数の条件をカンマで区切って一つのwhen節にまとめることができます。

value = 4

case value
when 1, 2, 3
  puts "値は1、2、または3のいずれかです"
else
  puts "それ以外の値です"
end

この例では、valueが4なので「それ以外の値です」が出力されます。

case文のメリット

case文は、複数の条件に対してよりシンプルで読みやすいコードを書くことができるのが特徴です。複雑な分岐処理を整理するのに最適な選択肢です。

まとめ

Rubyの分岐処理は、条件に応じたコードの実行を可能にする非常に重要な機能です。

特に、case文は複数の条件を簡潔に扱うのに便利なため、複雑な条件分岐を必要とする場合に活用してください。



Ruby練習問題1-4:case文を使って曜日判定プログラムを作ろう

ユーザーから入力された数値(1~7)を曜日に変換し、その曜日を表示するプログラムを作成しましょう。

例えば、1が入力された場合は「月曜日」、2が入力された場合は「火曜日」のように表示します。

1~7以外の数値が入力された場合は「無効な入力です」と表示します。

この問題の要件

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

  1. ユーザーに1から7の数値を入力させること。
  2. case文 を使用して、数値に基づいて曜日を判定すること。
    • 1 → 「月曜日」
    • 2 → 「火曜日」
    • 3 → 「水曜日」
    • 4 → 「木曜日」
    • 5 → 「金曜日」
    • 6 → 「土曜日」
    • 7 → 「日曜日」
  3. 1から7以外の数値が入力された場合には、「無効な入力です」と表示すること。
  4. 判定結果を画面に表示すること。

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

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

1から7の数値を入力してください:
3
入力された数値に対応する曜日は:水曜日です

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

この問題を解くヒント

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

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

正解のコードは上から順に以下のような構成となっています。

1.putsを使用してユーザーに数値入力を促す

2.gets.chomp.to_iでユーザーの入力を受け取り、数値に変換

3.case文で数値に基づいて曜日を判定  3-1. 1のとき、「月曜日」と表示
 3-2. 2のとき、「火曜日」と表示
 3-3. 3のとき、「水曜日」と表示
 3-4. 4のとき、「木曜日」と表示
 3-5. 5のとき、「金曜日」と表示
 3-6. 6のとき、「土曜日」と表示
 3-7. 7のとき、「日曜日」と表示
 3-8. それ以外の場合は「無効な入力です」と表示

4.putsで判定結果を表示

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

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

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

=begin 【穴埋め問題1】
ここにユーザーの入力を受け取り、整数に変換するコードを書いてください。
=end

# 数値に基づいて曜日を判定する
day_name = case day_number
=begin 【穴埋め問題2】
ここに1から7までの数値に対応する曜日を判定するコードを書いてください。
=end
else
  "無効な入力です"
end

# 判定結果を表示する
puts "入力された数値に対応する曜日は:#{day_name}です"

 

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



解答例

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

正解コードの例

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

********************

# 曜日の判定プログラム

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

# 数値に基づいて曜日を判定する
day_name = case day_number
when 1
  "月曜日"
when 2
  "火曜日"
when 3
  "水曜日"
when 4
  "木曜日"
when 5
  "金曜日"
when 6
  "土曜日"
when 7
  "日曜日"
else
  "無効な入力です"
end

# 判定結果を表示する
puts "入力された数値に対応する曜日は:#{day_name}です"

********************

コードの解説

このプログラムは、1から7までの数値をユーザーから入力してもらい、それに応じた曜日を表示するものです。

case文 を使って分岐処理を行い、適切な曜日を出力します。以下の各ブロックで使われている文法を詳しく説明します。

ユーザーからの入力

puts "1から7の数値を入力してください:"
day_number = gets.chomp.to_i
  • puts は、画面にメッセージを表示するメソッドです。「1から7の数値を入力してください」と表示します。
  • gets は、ユーザーの入力を受け取るメソッドです。このままでは文字列のままなので、chomp で改行を取り除き、to_i で整数に変換しています。

case文による分岐処理

day_name = case day_number
when 1
  "月曜日"
when 2
  "火曜日"
when 3
  "水曜日"
when 4
  "木曜日"
when 5
  "金曜日"
when 6
  "土曜日"
when 7
  "日曜日"
else
  "無効な入力です"
end
  • case文 は、指定した値に基づいて処理を分岐させるために使用します。ここでは、day_number の値が1から7までの範囲に対応する曜日を返します。
    • 例えば、day_number が1であれば「月曜日」、2であれば「火曜日」を表示します。
    • else は、指定された範囲外の値が入力されたときに実行されるコードです。1から7以外の数値が入力された場合、「無効な入力です」と表示されます。

結果の表示

puts "入力された数値に対応する曜日は:#{day_name}です"
  • puts を使って、計算結果を表示します。
  • #{} は、文字列の中に変数を埋め込むために使用され、ここでは day_name の内容が表示されます。
<<前の問題 問題集Top 次の問題>>

この問題への質問・コメント

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

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






    Ruby練習問題集へ戻る
    トップページへ戻る