第 4 回 繰り返しは引っ張りだそう レポート課題 氏名:菊池綾 学籍番号:c1100644 語学クラス:英語6 コース(系):政策マネジメント 1.筆記問題 A.「タモリさんの昼番組とかけて、本音を話せる人と解く。」 「その心は?」 「いいとも(良い友)です。」 B. 設定1. 100円ショップで1つ105円の品物と1つ315円の品物を買って、代金がいく らになるか調べた。 例1 )105円の品物を4つ、315円の品物を3つ買ったとき ( 105 * x ) + ( 315 * z ) これに代入すると ( 105 * 4 ) + ( 315 * 3 ) = 420 + 945 = 1365 答えは 1365円 と出た。Kterm で答えが正しいか確かめる。 pan{KIKUCHI Aya}% bc -l 105 * 4 420 315 * 3 945 420 + 945 1365 よって正しい。 例2 )105円の品物を5つ、315円の品物を8つ買ったとき ( 105 * x ) + ( 315 * z ) これに代入すると ( 105 * 5 ) + ( 315 * 8 ) = 525 + 2520 = 3045 答えは 3045円 と出た。Kterm で答えが正しいか確かめる。 pan{KIKUCHI Aya}% bc -l 105 * 5 525 315 * 8 2520 525 + 2520 3045 よって正しい。 設定2. オンラインで楽曲を購入した。楽曲は1曲200円、12曲入りアルバムが 2100円である。 例1 )1曲200円の楽曲を3曲、2100円のアルバムを2枚分買ったとき ( 200 * x ) + ( 2100 * y ) これに代入すると ( 200 * 3 ) + ( 2100 * 2 ) = 600 + 4200 = 4800 答えは 4800円 と出た。Kterm で答えが正しいか確かめる。 pan{KIKUCHI Aya}% bc -l 200 * 3 600 2100 * 2 4200 600 + 4200 4800 よって答えは正しい。 2.プログラム問題 A. i.考えた設定 筆記問題Bの 設定2 を用いて合計金額を算出するプログラムを作る。 ii.作ったプログラム(def_twoparam.rb) #!/usr/koeki/bin/ruby #定義を書く場所 def music(x, z) # music という関数を定義する。 仮引数を x,z とする。 200 * x + 2100 * z # 1曲の値段 * 購入数 + アルバムの値段 *購入数 end # def の end #プログラムを書く場所 STDERR.print("購入した1曲売りの楽曲数 : ") # STDERR.print を用いてメッセージを表示 a = gets.chomp!.to_i # 1曲売りの購入数を入力、a に代入。楽曲数は整数なのでto_i STDERR.print("購入したアルバム数 : ") # STDERR.print を用いてメッセージを表示 b = gets.chomp!.to_i # アルバムの購入数を入力、b に代入。アルバム数は整数なのでto_i total = music(a, b) #関数music の仮引数に入力した値を代入して合計金額を計算、変数total に結果を代入 STDERR.printf("合計金額は %d 円です。\n", total) # STDERR.printf を用いて値を代入したメッセージを表示。 iii.変更点 def_func.rb に STDERR.print、STDERR.printf を加えた。 iv.実行結果 pan{c110064}% ./def_twoparam.rb [~/Ruby] 購入した1曲売りの楽曲数 : 4 購入したアルバム数 : 2 合計金額は 5000 円です。 pan{KIKUCHI Aya}% ./def_twoparam.rb [~/Ruby] 購入した1曲売りの楽曲数 : 3 購入したアルバム数 : 2 合計金額は 4800 円です。 v.考察 上の実行結果を確かめる。 pan{c110064}% bc -l [~/Ruby] 200 * 4 800 2100 * 2 4200 800 + 4200 5000 よって正しい。 下の実行結果を確かめる。 pan{KIKUCHI Aya}% bc -l [~/Ruby] 200 * 3 600 2100 * 2 4200 600 + 4200 4800 よって正しい。 以上の結果から、プログラムは正しく動いていると思われる。 C. i.考えた設定 値段の合計を棒グラフで表示する。 ii.作ったプログラム(def_oneparam_bar.rb) #!/usr/koeki/bin/ruby #定義を書く場所 def music(x, z) # music という関数を定義する。 仮引数を x,z とする。 2 * x + 21 * z #1曲の値段/100 * x + アルバム1枚の値段/100 * z end def barplot(a, b) #棒グラフの定義 printf("%d < x < %d \n", a, b) # x の定義域 printf("%d < y < %d\n", music(a, a), music(b,b)) # 棒グラフを書く指示を出す print("+") print("-" * music(a, b)) print("y\n") for i in 0 .. 0 print("|") print("*" * music(a, b)) print("\n") end print("x\n") end #プログラムを書く場所 print("棒線グラフを表示\n") STDERR.print("定義域 (a < x < b)\n") STDERR.print("a = ") a = gets.to_i STDERR.print("b = ") b = gets.to_i barplot(a, b) # barplot method を呼ぶ iii.変更点 def_func.rb を参考にした。 仮引数が2つになったので、それに伴って引数も2つにした。 また、グラフは x が増えてもずっと同じ値になるので1行のみ表示するようにし た。 値段のとおりにグラフを表示させると、棒が長くなりすぎるため、出た値を100 で割って表示させるようにした。 iv.実行結果 pan{c110064}% ./def_oneparam_bar.rb [~/Ruby] 棒線グラフを表示 定義域 (a < x < b) a = 2 b = 3 2 < x < 3 46 < y < 69 +-------------------------------------------------------------------y |******************************************************************* x v.考察 定義域の計算も計算式通りにできている。 またグラフも設定したとおりに表示できた。 しかし、グラフとして1行ではあまり意味がないので、 グラフに相応しい題材を設定する必要があると思った。 3.感想 今回の内容は、今まで義務教育で学んだ内容をコンピュータに計算させているだ けなので、内容は同じだと思われる。 また、表計算ソフトでは、値を入力する代わりにセルに入力したものを代入する 形になっているが、計算は関数を用いているため同じであると考える。 グラフの方は視覚的な違いが大きいが(目盛がつく、タイトル等)、こちらもデー タを引用してグラフを作成している点では変わらないのではないかと思う。 4.参考文献 基礎プログラミングII 第 4 回 「描画ソフトの真似」 西村まどか http://roy/~madoka/2011/r2/04/r2_04_06_theme_06_graph.html 基礎プログラミングII 第 4 回 「手作りルールの最後の値」 西村まどか http://roy/~madoka/2011/r2/04/r2_04_09_appendix_01_method.html ------------------------------- 東北公益文科大学 公益学部 公益学科 2年 菊池綾 c110064@f.koeki-u.ac.jp