第4回 基礎プログラミング II レポート課題 氏名:及川 雄寛 学籍番号:c1090302 語学クラス:英語3 コース(系):政策マネジメント 1. A.「鉛筆と書けまして、夢を追いかける人と解きます。」 「その心は?」 「芯があります。」 「お寿司と書けまして、最近乗っていない自転車と解きます。」 「その心は?」 「どちらもさび(錆び)があります。」 B. 数式1:ダイスケ君は、新しいボールペンとシャーペンを買おうと思い、ある文房 具屋に寄り、そこで買うことにした。そこで、この商品の合計金額を知り たい。ちなみにボールペンは1本、168円、シャーペンは1本178円である。 全て税込である。 ボールペンの本数をx、シャーペンの本数をyとすると 式は 168 * x + 178 * y となる。 例1:ボールペン1本、シャーペン2本買った場合 168 * 1 + 178 * 2 =524 計算があっているか確かめる。 bc -l pan{c109030}% bc -l [~] 168 * 1 + 178 * 2 524 quit 答えが一致した。 よって、答えは524円。 例2:ボールペン3本、シャーペン2本買った場合 168 * 3 + 178 * 2 =860 計算があっているか確かめる。bc -l pan{c109030}% bc -l [~] 168 * 3 + 178 *2 860 答えが一致した。 よって、答えは860円。 2. A. a.考えた設定:変数が二つ以上定義されていて、def--endを用いた数値の計算を 導くプログラムを考えた。購入する食料品の品数を入力していく と、それぞれの合計金額と全ての合計金額が出力されるようにし た。 b.作成したプログラム:def_twoparam.rb #!/usr/koeki/bin/ruby def tofu(x) 98 * x #豆腐の値段 * 品数 end def moyashi(y) 28 * y #もやしの値段 * 品数 end def butaniku(z) 420 * z #豚肉の値段 * 品数 end STDERR.print("購入する品数を入力して下さい。\n") STDERR.print("豆腐 (1個98円) : \n") a = gets.chomp.to_i #to_iで整数表示にする。 STDERR.print("もやし (1袋28円) : \n") b = gets.chomp.to_i STDERR.print("豚肉 (1パック420円) :\n") c = gets.chomp.to_i STDERR.printf("豆腐の合計金額: %d 円\n",tofu(a)) STDERR.printf("モヤシの合計金額: %d 円\n",moyashi(b)) STDERR.printf("豚肉の合計金額: %d 円\n",butaniku(c)) printf("全ての合計金額は %d 円です。\n",tofu(a)+moyashi(b)+butaniku(c)) c.元にしたプログラムからの変更点:授業で作成したプログラム (def_function.rb)を元にし、変数を変更した。 d.実行結果: pan{c109030}% ./def_twoparam.rb [~/Ruby] 購入する品数を入力して下さい。 豆腐 (1個98円) : 2 もやし (1袋28円) : 5 豚肉 (1パック420円) : 1 豆腐の合計金額: 196 円 モヤシの合計金額: 140 円 豚肉の合計金額: 420 円 全ての合計金額は 756 円です。 e.考察:プログラムの計算が正しいとは言えないので、bc -lで確認をしてみる。 実行画面 pan{c109030}% bc -l [~/Ruby] 98 * 2 196 28 * 5 140 420 * 1 420 196 + 140 + 420 756 quit 上の計算から、プログラムは正しく動いたと言える。 B. a.考えた設定:変数のうち1つを固定し、ユーザーが入力した数と計算させて合計 金額を出力させるようにした。 b.作成したプログラム:def_oneparam_a.rb #!/usr/koeki/bin/ruby def magazine(k) 420 *3 + 450 * k #購入するサッカーダイジェストの冊数を 3(冊)と固定する。 end STDERR.print("品切れのため、2種類しかありません。\n") STDERR.print("サッカーダイジェスト -1冊420円 \t サッカーマガジン -1冊450円\n\n") sleep 2 STDERR.print("サッカーダイジェストを3冊買いましょう。\n") STDERR.print("サッカーマガジンは何冊買いますか? \n") sakamaga = gets.chomp.to_i #to_i で整数表示にする。 printf("合計金額は %d 円です。\n",magazine(sakamaga)) #methodに定義された関数に k =sakamagaを代入する。 c.元にしたプログラムからの変更点:授業で作成したプログラム (def_function.rb)をもとにし、変数と計算式を変更した。 d.実行結果: pan{c109030}% ./def_oneparam_a.rb [~/Ruby] 品切れのため、2種類しかありません。 サッカーダイジェスト -1冊420円 サッカーマガジン -1冊450円 サッカーダイジェストを3冊買いましょう。 サッカーマガジンは何冊買いますか? 1 合計金額は 1710 円です。 e.考察:プログラムの計算が正しいとは言えないので、bc -lで確認する。 実行結果 pan{c109030}% bc -l [/Ruby] 420 * 3 1260 450 * 1 450 1260 + 450 1710 quit プログラムの計算とあっているので、このプログラムは正しく動いたと 言える。 3.感想:今回学んだことは、義務教育で学んだ算数や数学と同じくみだと思う。 ただ、学校の授業では目盛りがあった。 参考文献:2010年度 基礎プログラミング II 4回/ 西村まどか http://roy/~madoka/2010/r2/04/ 「関数だって繰り返し」 http://roy/~madoka/2010/r2/04/04_02_theme_02_function.html 「分かりやすいプログラムへ」 http://roy/~madoka/2010/r2/04/04_05_theme_05_print.html 共同学習者:川島 哲