数値が理屈に通らないようなもの、例えば三平方の定理であるが、 負の数値が入力された場合、 method で値を判定する必要があることがある。蛍の数が負のときは 0 に変更するようにしよう。
def firefly(birth, chemical) egg = birth - 0.1 * birth * chemical ** 2 # 農薬を散布すると個体数が減る if egg < 0 return 0 else # 変数 egg を判定する部分 return egg end end
最後に計算された数値が戻る。何も指定しなければ、計算した値がそのまま return するので、 return 文は必要ないが、場合分けをするため return 文 が必要となる。実行し、0 匹になることを確かめよう。
直角三角形 ABC の長辺の長さ a を、 残りの二辺 b, c から三平方の定理を用いて計算するプログラム hypotenuse.rb を作ろう。定義部分で、 残りの 2 辺が負であれば計算を止めるように設定したい。
: def pythagoras(x, y) if x < 0 || y < 0 # b が負または c が負の値を代入された場合 return nil # 計算を止めよ end sum = (x**2 + y**2) ** 0.5 # そうでなければ長辺を計算せよ end STDERR.print("b = ") b = gets.chomp.to_i STDERR.print("c = ") c = gets.chomp.to_i a = pythagoras(b,c) if a == nil exit end printf("長辺の長さ a = %f\n", a)
とすればよい。ここで、簡単な論理演算子についてまとめておく。
# # 条件 A || 条件 B # 条件 A または条件 B # # 条件 A && 条件 B # 条件 A かつ条件 B
return 文についてもまとめておく。
# # return 値 # 値を返す # # return nil # 計算を止めてしまう場合