基礎プログラミング II 第 4 回 (繰り返しは引っ張りだそう) 「操作をまとめる」 講義ノート目次

さきほどの 3 つの関数 f(x) のグラフを書くことを考えよう。

f(x) = 3 * x 
f(x) = 2 * x - 1 
f(x) = - 2 * x + 1 

a = 1 を選んだとき、 それぞれの関数の値はどのようにして得られるだろうか。

f(x) = 3 * a = 3 * 1 = 3
f(x) = 2 * a - 1 = 2 * 1 - 1 = 1
f(x) = - 2 * a + 1 = - 2 * 1 + 1 = -1

f(x) = 3 * x, f(x) = 2 * x - 1, f(x) = - 2 * x + 1f(x) の部分だけ変更するように作る。


def 関数(仮引数)
関数の定義
end

この定義部分、 def -- end を method と呼ぶ。 ちなみに英語では機能も関数も function である。 def_graph.rb


def f(x)
3 * x
end STDERR.print("定義域の範囲はどこまでにしますか (a < x < b)\n") STDERR.print("a = ") a = gets.chomp.to_i STDERR.print("b = ") b = gets.chomp.to_i STDERR.printf("開始座標 (a = %d, f(a) = %d)\n",a,f(a)) STDERR.printf("終了座標 (b = %d, f(b) = %d)\n",b,f(b))

ユーザに入力させたり、結果を知らせたりする必要がある。 それはプログラム実行部分に書く。 def -- end で囲まれる部分が定義である。 あらかじめ定義しておき、 必要に応じて呼び出す。

先ほどの規則から、機能は上に書くので、グラフ機能を付け加えよう。


def barplot(x1,x2)
for i in 0..x1-1
print("|\n")
end print("-" * f(x2) + "- y\n") for j in x1..x2
print("|" + "*" * f(j) + "\n")
end print("|\nx\n")
end : barplot(a,b) 呼出し部分

実行すると

定義域の範囲はどこまでにしますか (a < x < b)
a = 2
b = 8
開始座標 (a = 2, f(a) = 6)
終了座標 (b = 8, f(b) = 24)
------------------------- y
|
|
|
|******
|*********
|************
|***************
|******************
|*********************
|************************
|
x

このグラフは x について傾きが正である場合はグラフの軸が十分な長さで書けるが、 そうでない場合は短くなる。その理由を調べ、改良せよ。