想定外の数値が得られたときには

数値が理屈に通らないようなもの、例えば三平方の定理であるが、 負の数値が入力された場合、 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          # 計算を止めてしまう場合

三平方の定理を使って、 長辺を求めるプログラムを完成させてみよう。

基礎プログラミング II / 2007 年度

Madoka Nishimura <madoka@e.koeki-u.ac.jp>