第4回 基礎プログラミング II レポート課題 氏名:酒井 春香 学籍番号:c109074A 語学クラス:英語3 コース:政策マネ 1、筆記問題 A. 「銀行の火事とかけて焼きいもととく」 「その心は?」 「どちらも、おさつ(お札)が焼ける」 B. (1) KONGさんはお腹が減って戦が出来ないので、 イオンに果物を買いに行った。 バナナ(単価 20円) 5本と リンゴ( 126円) 3個と スイカ( 800円) 2玉を 購入するときの計算式は、 (20 * 5) + (126 * 3) + (800 * 2) = 100 + 378 + 1600 = 2078 bc -lで確認すると、 pan{c109074}% bc -l [~] 20*5+126*3+800*2 2078 quit よって、正しいといえる。 (2) Yさんはお給料が入ったのでウキウキ気分で買い物に行こうと決めた。 そこでホームデコに買い物に行った。 Yさんは、 靴下 (3足で1050円) 1組と ペンケース (単価 525円) 2個と ポストカード ( 210円) 5個と ハンカチ ( 315円) 3個を 購入するときの計算式は、 (1050 * 1) + (525 * 2) + (210 * 5) + (315 * 3) = 1050 + 1050 + 1050 + 945 = 4095 bc -lで確認すると、 pan{c109074}% bc -l [~] 1050*1+525*2+210*5+315*3 4095 quit よって、正しいといえる。 2、プログラミング問題 A. a.設定 変数が2つ以上定義されているdef--endを用いた数値の計算を導くプログラム。 昨年の先輩のレポートをもとに作成した。 b.作成したプログラム #!/usr/koeki/bin/ruby def total(banana,ringo,suika) # def 関数 (仮引数) 20 * banana + 126 * ringo + 800 * suika end STDERR.print("KONGさんはお腹が減って戦が出来ない!!\n") STDERR.print("買い物に行かねば!\n") STDERR.print("果物は、バナナ、リンゴ、スイカがあります。\n") STDERR.print("バナナ(20円)は何本買った?\n") banana = gets.to_i STDERR.print("リンゴ(126円)は何個買った?\n") ringo = gets.to_i STDERR.print("スイカ(800円)は何玉買った?\n") suika = gets.to_i printf("合計%d円だよ。\n",total(banana,ringo,suika)) c.もとにしたプログラムからの変更点 昨年の先輩のレポートをもとに作成。 内容に応じて変数とprint文を変更。 d.実行結果 pan{c109074}% ./def_twoparam.rb [~/Ruby] KONGさんはお腹が減って戦が出来ない!! 買い物に行かねば! 果物は、バナナ、リンゴ、スイカがあります。 バナナ(20円)は何本買った? 5 リンゴ(126円)は何個買った? 3 スイカ(800円)は何玉買った? 2 合計2078円だよ。 e.考察 問題なく実行できた。 計算が合っているかを調べるためにktermで確かめ算を行なった。 pan{c109074}% bc -l [~] 20*5+126*3+800*2 2078 quit 上記より正しく計算が行なわれたことがわかった。 f.参考文献 西村まどか先生のHPから 「第4回 レポート講評 先輩のレポート その1」 http://roy.e.koeki-u.ac.jp/~madoka/2009/r2/04/rpt/c108129.txt B. a.設定 変数のうち1つを固定し、他の数値の計算を導くプログラム。 昨年の先輩のレポートをもとに作成した。 b.作成したプログラム #!/usr/koeki/bin/ruby def total(x,y) # def 関数 (仮引数) 20 * 5 + 126 * x + 800 * y # 一つの変数を固定 end STDERR.print("KONGさんはとーってもお腹が減っています。\n") STDERR.print("バナナを5本買うことを決心してイオンに買い物に行きました。\n") STDERR.print("バナナの他にリンゴ、スイカがありました。\n") STDERR.print("リンゴ(126円)は何個買いますか?\n") x = gets.to_i STDERR.print("スイカ(800円)は何玉買いますか?\n") y = gets.to_i printf("合計%d円だよ。\n", total(x,y)) c.もとにしたプログラムからの変更点 A問題のプログラムをもとに作成。 内容に応じて変数の一つを固定した。 print文を変更。 d.実行結果 pan{c109074}% ./def_oneparam_a.rb [~/Ruby] KONGさんはとーってもお腹が減っています。 バナナを5本買うことを決心してイオンに買い物に行きました。 バナナの他にリンゴ、スイカがありました。 リンゴ(126円)は何個買いますか? 5 スイカ(800円)は何玉買いますか? 2 合計2330円だよ。 e.考察 問題なく実行できた。 計算が合っているかを調べるためにktermで確かめ算を行なった。 pan{c109074}% bc -l [~/Ruby] 20*5+126*5+800*2 2330 quit 上記より正しく計算が行なわれたことがわかった。 f.参考文献 西村まどか先生のHPから 「第4回 レポート講評 先輩のレポート その1」 http://roy.e.koeki-u.ac.jp/~madoka/2009/r2/04/rpt/c108129.txt C、 a.設定 棒グラフを書けるようなプログラムを作成。 棒グラフにする数値が考えつかなかったので、 先輩のレポートを参考にして作成しました。 b.作成したプログラム #!/usr/koeki/bin/ruby STDERR.print("バナナとリンゴがあります。\n") STDERR.print("バナナ 一本20円 、 リンゴ 一個126円 \n") sleep 2 STDERR.print("バナナを5本買います。\n") def barplot(m,s) print("-"* fruit(s) + "-y\n") # グラフの形状、横がy軸 for z in m .. s print("|\n") end for i in m .. s print("|" + "*"* fruit(i) + "\n") # 数を*で表示させる end print("|\nx\n") # 縦がx軸 end def fruit(k) (20 * 5 + 126 * k) end STDERR.print("購入するリンゴの個数の下限は?\n") u = gets.to_i STDERR.print("購入するリンゴの個数の上限は?\n") c = gets.to_i printf("\n定義域: %d < x < %d (個)\n" , u, c) printf("値域: %d < y < %d (円)\n", fruit(u),fruit(c)) barplot(u,c) # 呼び出し部分 c.もとにしたプログラムからの変更点 B問題のプログラムをもとに作成。 内容に応じて棒グラフの部分を追加。 print文を変更。 d.実行結果 pan{c109074}% ./def_oneparam_bar.rb [~/Ruby] バナナとリンゴがあります。 バナナ 一本20円 、 リンゴ 一個126円 バナナを5本買います。 購入するリンゴの個数の下限は? 1 購入するリンゴの個数の上限は? 3 定義域: 1 < x < 3 (個) 値域: 226 < y < 478 (円) -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------y | | | |********************************************************************************************************************************************************************************************************************************** |**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** |********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** | x e.考察 実行結果より、棒グラフの数値が膨大な数になってしまったので、 グラフがとっても見づらくなってしまった。 他の数値を考えることが出来なかったので、もっとコンパクトにまとめたり、 もっと見やすいグラフを作りたかったが出来なかったので、断念しました。 f.参考文献 西村まどか先生のHPから 「第4回 レポート講評 先輩のレポート その1」 http://roy.e.koeki-u.ac.jp/~madoka/2009/r2/04/rpt/c108129.txt 「第04回 繰り返しは引っ張り出そう 描画ソフトの真似」 http://roy.e.koeki-u.ac.jp/~madoka/2010/r2/04/04_06_theme_06_graph.html 3、感想 今回学んだことは、義務教育で学んだ算数や数学と同じ仕組みだと思います。 表計算、簿記などからグラフを作る経験はないです。 プログラムで棒グラフが作れるとは思わなかったので驚きました。 今回のレポートではグラフの材料としては良くないものだったので、 もっと簡単に分かりやすいグラフが出来ればよかったなと思った。 共同学習者 伊藤 彩 / 佐竹 聡美 / 大島 藍