問題
ターミナルから数字を入力して、数字に応じて以下のように出力するプログラムを書いてください。
・10以下なら10以下の数字です
・10より大きい数値なら10より大きい数字です
・10以下でかつ0以下なら0以下の数字です
input = gets.to_i
模範解答
input = gets.to_i
if input <= 0
puts "0以下の数字です"
elsif input <= 10
puts "10以下の数字です"
else
puts "10より大きい数字です"
end
【解説】
①ターミナルから数値を入力する書き方
ターミナルから数値を入力するにはgetsというメソッドを使います。
このgetsメソッドを使って入力した値は全て文字列になるため、getsの値をto_iメソッドを使って数値に変換します。
②条件分岐の書き方
条件分岐はif文を使います。今回は3つのパターンで分岐するためelsifとelseも使います。
if 条件1
# 条件1のときの処理
elsif 条件2
# 条件2のときの処理
else
# 条件3のときの処理
end
今回の条件は数値の比較です。比較には<や==などの比較演算子を使います。
今回は10以下や0以下という比較なので、<=を使います。=を付けた場合は以下や以上という意味になります。
3つの条件のうちどの条件から記載するかが難しい部分です。
if文は先に書いた条件から判断していきます。そのため上の条件に当てはまったら、たとえ下の条件に当てはまっても、下の条件の処理はスルーされます。
かつ、と条件に記載されていても10以下かつ0は、シンプルに考えて0以下の数字という条件になります。
・10以下なら10以下の数字です
・10より大きい数値なら10より大きい数字です
・10以下でかつ0以下なら0以下の数字です
よって、この中で優先処理が高いのは3つめの条件です。
0以下の数字、10以下の数字、10より大きい数字の順に処理をしていく記述をします。
&&(かつ)を使いそうになりますが、条件を整理するとシンプルな条件式に整理する事ができます。