第4回 基礎プログラミング II レポート課題 氏名:遠藤達也 学籍番号:c1090271 語学クラス:中国語 コース(系):政策 1、筆記問題 A 「イチローとかけて、あらびきハンバーグと解きます。」 「その心は?」 「どちらもミートが命でしょう。」 「赤字経営とかけて、傘を持って駅にいるワカメちゃと解きます。」 「その心は?」 「どちらも倒産(父さん)を迎えるでしょう。」 B 1、 山田太郎は夕飯の買い物で代金がいくらになるか調べた。 サンマ 1尾80円 購入数はx 豚の生姜焼き 1枚120円 購入数はy のり弁 1つ300円 購入数はz 例1、山田太郎はお腹がとても空いていたので、サンマを5尾、豚の生姜焼きを10 枚、のり弁を3つ購入した。 方程式は 80*x + 120*y + 300*z = 合計金額 なのでこれに購入数を代入すると、 80*5 + 120*10 + 300*3 = 400 + 1200 + 900 =2500 合計金額は、2500円である。 確かめ算 pan{c109027}% bc -l [~] (80*5)+(120*10)+(300*3) 2500 なのでこの計算は正しい。 例2、山田太郎はダイエット中だったので、サンマを2尾、豚の生姜焼きを3枚、 のり弁を1つ購入した。 これを方程式に代入すると、 80*2 + 120*3 + 300*1 = 160 + 360 + 300 = 820 合計金額は、 820円である。 確かめ算 pan{c109027}% bc -l [~] (80*2)+(120*3)+(300*1) 820 なのでこの計算は正しい。 2、ガソリンを詰めに行き、待っている間にアメを購入した。合計金額はいくら か。 ガソリンは1リットル 126円 、 アメは1つ65円であり 購入量は、xとyで表す。 例1、ガソリンを10リットル、アメを2つ購入した。 方程式は 126*x + 65*y = 合計金額 なので、これに購入量を代入。 126*10 + 65*2 = 1260 +130 =1390 合計金額は、 1390円である。 確かめ算 pan{c109027}% bc -l [~] (126*10)+(65*2) 1390 なのでこの計算は正しい。 例2、ガソリンを38リットル、アメを8つ購入した。 購入量を代入 126*38 + 65*8 = 4788 + 520 =5308 合計金額は、 5308円である。 確かめ算 pan{c109027}% bc -l [~] (126*38)+(65*8) 5308 なのでこの計算は正しい。 2、 プログラム問題 A、 考えた設定 買い物に行き、「サンマ」、「豚の生姜焼き」、「のり弁」を購入しようとする。 購入数を自由に入力してもらい、合計金額を計算させるプログラム。 (金額や購入数を表す変数記号は、筆記問題の例1と同じ設定である。) 作成したプログラム #!/usr/koeki/bin/ruby def sanma(x) 80 * x end def buta(y) 120 * y end def noriben(z) 300 * z end print("山田太郎は夕飯の買い物にスーパーへやって来た!!\n") print("サンマがあるではないか!高いのか安いのかわからない80円。。。迷うー!!\n") sleep 1 print("神様どうしましょうか?教えて下さい!\n") STDERR.print("サンマ → ") s = gets.chomp.to_i sleep 1 print("肉も食べたいなー! あ!!生姜焼きが売ってる!\n") print("神様これはどうしましょうか?教えて下さい!\n") STDERR.print("豚の生姜焼き → ") b = gets.chomp.to_i print("おかずだけじゃ物足りないから、のり弁買っちゃおう!\n") print("神様これはどうしましょうか?教えて下さい!\n") STDERR.print("のり弁 → ") n = gets.chomp.to_i total = sanma(s)+buta(b)+noriben(n) printf("サンマの購入数は %2d 尾で %3d 円かー。\n",s,sanma(s)) printf("豚の生姜焼きの購入数は %2d 枚で %3d 円かー。\n",b,buta(b)) printf("のり弁の購入数は %2d 個で %3d 円かー。\n",n,noriben(n)) sleep 1 printf("合計金額は %d 円。\n お金おろしておいてよっかたわい!!\n",total) 実行結果 pan{c109027}% ./def_twoparam.rb [~/Ruby] 山田太郎は夕飯の買い物にスーパーへやって来た!! サンマがあるではないか!高いのか安いのかわからない80円。。。迷うー!! 神様どうしましょうか?教えて下さい! サンマ → 3 肉も食べたいなー! あ!!1枚120円の生姜焼きが売ってる! 神様これはどうしましょうか?教えて下さい! 豚の生姜焼き → 3 おかずだけじゃ物足りないから、300円ののり弁買っちゃおう! 神様これはどうしましょうか?教えて下さい! のり弁 → 1 サンマの購入数は 3 尾で 240 円かー。 豚の生姜焼きの購入数は 3 枚で 360 円かー。 のり弁の購入数は 1 個で 300 円かー。 合計金額は 900 円。 お金おろしておいてよっかたわい!! 確かめ算 pan{c109027}% bc -l [~/Ruby] (80*3)+(120*3)+(300*1) 900 なのでこのプログラムは正しい。 考察 最初に作成したプログラムには商品の値段が書かれていなかったため、各々の合 計金額と、全ての合計金額しかでずにとてもわかりづらい作品になってしまいま した。 きちんと商品の値段を入力したことによってわかりやすい作品になったと思いま す。 感想 今回作成したプログラムは義務教育でやっていた算数、数学と同じ仕組みだと思 いました。 教員にはなれなくても、問題作りや採点作業ぐらいならできるのではないかと。 また今回の作業中にemacsのウインドウの増やし方、確かめ算の必要性を再認識 しました。 プログラム問題で作成したプログラムは去年の講評作品がベースにはなりました が、作業をするうえでだいぶ理解しつつ行なえたのでオリジナル感は無いかわり に、「力」はついたと思います。 参考文献 2009年度講評レポート全て その1、http://roy/~madoka/2009/r2/04/rpt/c108129.txt その2、http://roy/~madoka/2009/r2/04/rpt/c108111.txt その3、http://roy/~madoka/2009/r2/04/rpt/c108063.txt その4、http://roy/~madoka/2009/r2/04/rpt/c108057.txt その5、http://roy/~madoka/2009/r2/04/rpt/c108182.txt なぞかけ、http://roy/~madoka/2010/r2/04/04_01_theme_01_riddle.html 共同学習者 なし。