roy > naoya > 基礎プログラミングI·情報検索 > (3)演算子・制御構造[1] > 補足

(3) 04/28の授業内容:演算子・制御構造[1]補足

条件判断(2):unless-else-end

if文の場合はifの横に書く条件を満たす場合に処理を実行するが、unless文では横に書く条件を満たさない場合に処理を実行する。unless文はif文で書くことができる(ので無理に覚えなくて良い)。

#!/usr/koeki/bin/ruby

print"1〜100の間で好きな数字を入力してください\n"
a = gets.chomp!.to_i
print"もう1回1〜100の間で好きな数字を入力してください\n"
b = gets.chomp!.to_i

unless a > b #=>a > bでない場合は
   print"最初の方が2回目より大きくないわね\n"
else #=>そうでない場合、すなわちa > bである場合は
   print"最初の方が2回目より大きいわね\n"
end

参考までにこのプログラムをif文を使って書きなおすと以下のようになる(条件の不等号の向きが変わる)。

#!/usr/koeki/bin/ruby

print"1〜100の間で好きな数字を入力してください\n"
a = gets.chomp!.to_i
print"もう1回1〜100の間で好きな数字を入力してください\n"
b = gets.chomp!.to_i

unless a < b
   print"最初の方が2回目より大きくないわね\n"
else
   print"最初の方が2回目より大きいわね\n"
end

条件判断(3):case-when-when-else-end

unless文で紹介したサンプルプログラムのように比較したい変数が2つではなく、1つであり、その値によって場合わけを行う場合、case文を使用することができる。case文ではなくif文やunless文でももちろん記述できるが、場合わけを行う上で条件が多い場合にはcase文を用いた方が簡単に書ける場合が多い。

#!/usr/koeki/bin/ruby

print"1から10の好きな数字を入力してください\n"
a = gets.chomp!.to_i

case a
when 1, 2, 3
   print"small\n"
when 4, 5, 6
   print"medium\n"
when 7, 8, 9, 10
   print"big\n"
else
   print"範囲を超えました\n"
end

このプログラムではaが1〜3の場合に「small」、4〜6の場合に「medium」、7〜10の場合に「big」とそれぞれ表示される。

上記の例ではwhenを3つ使って条件を記述しているが、条件の数が増えた場合whenを無制限に増やすことができる。