第4回 基礎プログラミング II レポート課題 氏名:成澤龍空 学籍番号:c1071658 語学クラス:英語 コース(系):経営系 1. A「トイレとかけて喧嘩の和解と解きます。」 「その心は?」 「どちらも水に流すでしょう。」 B1 お菓子を買っていくらかかるか調べた。 ポッキー1箱80円、トッポ1箱110円、プリッツ1箱100円である。 ポッキー2箱、トッポ3箱、プリッツ4箱買うことにすると、 80 * 2 + 110 * 3 + 100 * 4 = 890 となる。 bc -l で確認すると、 pan{c107165}% bc -l [~] 80 * 2 + 110 * 3 + 100 * 4 890 となるので正しい。 B2 牛丼屋に行き、牛丼並盛1杯の値段を調べた。 A店280円、B店320円、C店350円であった。 A店で2杯、B店で3杯、C店で4杯食べたとすると。 280 * 2 + 320 * 3 + 350 * 4 = 2920 となる。 bc -l で確認すると pan{c107165}% bc -l [~] 280 * 2 + 320 * 3 + 350 * 4 2920 となるので正しい。 2 A 設定 B1で作成した例を利用して作成した。 作成したプログラム(def_twoparam.rb) #!/usr/koeki/bin/ruby def pokky(x) 80 * x end def toppo(y) 110 * y end def pritz(z) 100 * z end STDERR.print("購入する個数を入力して下さい。\n") STDERR.print("ポッキー(1個80円): \n") a = gets.chomp.to_i STDERR.print("トッポ(1個110円): \n") b = gets.chomp.to_i STDERR.print("プリッツ(1個100円): \n") c = gets.chomp.to_i STDERR.printf("\nポッキーの合計金額: %d 円\n",pokky(a)) STDERR.printf("トッポの合計金額: %d 円\n",toppo(b)) STDERR.printf("プリッツの合計金額: %d 円\n",pritz(c)) printf("\n全ての合計金額は %d 円です。\n",pokky(a)+toppo(b)+pritz(c)) 実行結果 pan{c107165}% ./def_twoparam.rb [~/Ruby] 購入する個数を入力して下さい。 ポッキー(1個80円): 4 トッポ(1個110円): 5 プリッツ(1個100円): 7 ポッキーの合計金額: 320 円 トッポの合計金額: 550 円 プリッツの合計金額: 700 円 全ての合計金額は 1570 円です。 考察 bc -l で確認してみると、 pan{c107165}% bc -l 80 * 4 + 110 * 5 + 100 * 7 1570 となるので正しく機能している。 defを使うことにより計算が出来るようになった。 B 設定 A問題からポッキーの数量を3個で固定して考えた。 作成したプログラム(def_oneparam_a.rb ) #!/usr/koeki/bin/ruby def toppo(y) 110 * y end def pritz(z) 100 * z end STDERR.print("購入する個数を入力して下さい。\n") STDERR.print("ポッキーを3個買うことにしました。(1個80円):240 \n") STDERR.print("トッポ(1個110円): \n") b = gets.chomp.to_i STDERR.print("プリッツ(1個100円): \n") c = gets.chomp.to_i STDERR.print("\nポッキーの合計金額: 240 円\n") STDERR.printf("トッポの合計金額: %d 円\n",toppo(b)) STDERR.printf("プリッツの合計金額: %d 円\n",pritz(c)) printf("\n全ての合計金額は %d 円です。\n",240+toppo(b)+pritz(c)) 実行結果 pan{c107165}% ./def_oneparam_a.rb [~/Ruby] 購入する個数を入力して下さい。 ポッキーを3個買うことにしました。(1個80円):240 トッポ(1個110円): 4 プリッツ(1個100円): 5 ポッキーの合計金額: 240 円 トッポの合計金額: 440 円 プリッツの合計金額: 500 円 全ての合計金額は 1180 円です。 考察 bc -l で確認してみると、 pan{c107165}% bc -l [~/Ruby] 240 + 110 * 4 + 100 * 5 1180 なので正しく機能している。 A問題からポッキーのdef文を抜き、金額を固定することにより作成できた。 C 設定 Bで作成したプログラムを元にbarplotを使い合計金額のグラフを出力するプログ ラムを作成した。なおプリッツの個数を変動させたいのでトッポの個数は4個で 固定した。 作成したプログラム(def_oneparam_bar.rb) #!/usr/koeki/bin/ruby def barplot(x1,x2) for i in 0..x1-1 print("|\n") end print("-" * f2(x2) + "- y\n") for j in x1..x2 print("|" + "*" * f2(j) + "\n") end print("|\nx\n") end def f(x) 100 * x end def f2(x) (100 * x + 240 + 440) / 50 end STDERR.print("購入する個数を入力して下さい。\n") STDERR.print("ポッキーを3個買うことにしました。(1個80円):240 \n") STDERR.print("トッポを4個買うことにしました。(1個110円):440 \n") STDERR.print("プリッツを最低何個買いたいですか?: \n") a = gets.chomp.to_i STDERR.print("プリッツを最高何個買いたいですか?: \n") b = gets.chomp.to_i STDERR.print("\nポッキーの合計金額: 240 円\n") STDERR.printf("トッポの合計金額: 440 円\n") STDERR.printf("プリッツの最小合計金額: %d 円\n",f(a)) STDERR.printf("プリッツの最大合計金額: %d 円\n",f(b)) printf("\nプリッツの最低数での合計購入額は %d 円です。\n",240+440+f(a)) printf("\nプリッツの最高数での合計購入額は %d 円です。\n",240+440+f(b)) barplot(a,b) # 呼出し部分 実行結果 pan{c107165}% ./def_oneparam_bar.rb [~/Ruby] 購入する個数を入力して下さい。 ポッキーを3個買うことにしました。(1個80円):240 トッポを4個買うことにしました。(1個110円):440 プリッツを最低何個買いたいですか?: 3 プリッツを最高何個買いたいですか?: 11 ポッキーの合計金額: 240 円 トッポの合計金額: 440 円 プリッツの最小合計金額: 300 円 プリッツの最大合計金額: 1100 円 プリッツの最低数での合計購入額は 980 円です。 プリッツの最高数での合計購入額は 1780 円です。 | | | ------------------------------------ y |******************* |********************* |*********************** |************************* |*************************** |***************************** |******************************* |********************************* |*********************************** | x 考察 bc -lで確認してみると pan{c107165}% bc -l [~/Ruby] 240 + 440 + 100 * 3 980 240 + 440 + 100 * 11 1780 となるので正しく機能している。 barplotの文を組み込むことでグラフを作成できた。 また、トッポをポッキーと同じように固定化した。 感想 義務教育で学んだ算数や数学とプログラミングは、与えられた数を計算するとい う点で同じだと思う。表計算と今回作成したグラフも同様に値を忠実にグラフに しているので同じものだと思う。