第4回 基礎プログラミング II レポート課題 氏名:川島哲 学籍番号:c1090489 語学クラス:英語3 コース(系):政策マネ 1. 1-1 「ヘッドホン」と「都合の悪い話」とかけます そのこころは! どちらも耳には入らない 1-2 1) 50円のガムと90円のチョコレート、80円のラムネをそれぞれ3個、2個、1個 買った時の値段を調べる。 50*3 + 90*2 + 80*1 = 150+180+80 = 410 合計:410円 2) ゲーム機とソフト、コントローラー家族分買う事になった 値段はゲーム機20000円、ゲームソフト4800円、コントローラー2500円 この時コントローラーを家族分の4人分と本体、ソフトを合わせた合計が幾らになる かを調べる 20000+4800+2500*4=20000+4800+10000 =34800 合計:34800円 2. プログラムA a) 任天堂のゲーム機、Wiiの周辺機器を購入する際幾ら掛かるかをシュミレートするプ ログラム b)プログラム名;def_twoparam.rb #!/usr/koeki/bin/ruby def con(x) #リモコンの値段 * 本数 3800 * x end def clu(y) #クラシックコントローラーの値段 * 個数 1800 * y end def nun(z) #ヌンチャックの値段 * 個数 1800 * z end print("Wii周辺機器購入シュミレーター") print("周辺機器と値段が表示されるので購入数を入力してください") STDERR.print("リモコン(3800円):") a = gets.chomp.to_i STDERR.print("クラシックコントローラー(1800円):") b = gets.chomp.to_i STDERR.print("ヌンチャク(1800円):") c = gets.chomp.to_i printf("リモコンの合計:%d円",con(a)) printf("クラシックコントローラーの合計:%d円",clu(b)) printf("ヌンチャクの合計:%d円",nun(c)) print("\n") printf("総計は%d円です。",con(a)+clu(b)+nun(c)) c) 今回授業中に作成(DL)したプログラムのdef_func.rbを元に任天堂の周辺機器の ページに載っていた機器と値段を加えている。 d)実行画面 pan{c109048}% ./def_twoparam.rb [~/Ruby] Wii周辺機器購入シュミレーター 周辺機器と値段が表示されるので購入数を入力してください リモコン(3800円):3 クラシックコントローラー(1800円):2 ヌンチャク(1800円):2 リモコンの合計:11400円 クラシックコントローラーの合計:3600円 ヌンチャクの合計:3600円 総計は18600円です。 e)考察 実行した際の計算が合っているか検証する。 pan{c109048}% bc -l [~/Ruby] (3800*3)+(1800*2)+(1800*2) 18600 結果と合っているので正しいと言える また周辺機器は普通に買う分には限界が生じるので、各項目ごとに上限を設定出 来ると良いかもしれない。 参考) Wii | コントローラ: http://www.nintendo.co.jp/wii/controllers/index.html 基礎プログラミング II 第 4 回 「繰り返しは引っ張りだそう」これを代入した 答はなあに (講義ノート): /西村まどか http://roy/~madoka/2010/r2/04/04_04_theme_04_stderr.html プログラムB a) プログラムAの設定を利用した。家族分のリモコンを買う事は確定していた場合、 他の周辺機器をいくつ買うかをシュミレートする。 b)プログラム名:def_oneparam.rb #!/usr/koeki/bin/ruby def con(x) 3800 * 4 + 1800 end def nun(y) 1800 * y end print("Wii周辺機器購入シュミレーター\n") print("周辺機器と値段が表示されるので購入数を入力してください\n") print("尚リモコン(3800円)は一つ家にあるので残りの家族4人分は固定します。\n") #リモコンを人数分買うのは確定(本体にリモコンは一台附属している) STDERR.print("クラシックコントローラー(1800円):") a = gets.chomp.to_i STDERR.print("ヌンチャク(1800円):") b = gets.chomp.to_i printf("リモコンとクラシックコントローラーの合計:%d円\n",con(a)) #リモコンとクラシックコントローラーの合計に変更 printf("ヌンチャクの合計:%d円\n",nun(b)) print("\n") printf("総計は%d円です。\n",con(a)+nun(b)) c) 元のプログラムであるdef_twoparamの変数部分を減らし、リモコンの計算部分を 4人に固定。 d)実行結果 pan{c109048}% ./def_oneparam.rb [~/Ruby] Wii周辺機器購入シュミレーター 周辺機器と値段が表示されるので購入数を入力してください 尚リモコン(3800円)は一つ家にあるので残りの家族4人分は固定します。 クラシックコントローラー(1800円):2 ヌンチャク(1800円):2 リモコンとクラシックコントローラーの合計:17000円 ヌンチャクの合計:3600円 総計は20600円です。 e)考察 実行結果が正しいか確かめる pan{c109048}% bc -l [~/Ruby] 3800*4 15200 15200+1800*2 18800 エラーを発見、クラシックコントローラーとリモコンの合計が合わない。 プログラムを見直した結果、def con(x)にxを入れるの忘れていた。 e)-プログラム2 #!/usr/koeki/bin/ruby def con(x) 3800 * 4 + 1800 * x #計算する変数(x)を追加 end def nun(y) 1800 * y end print("Wii周辺機器購入シュミレーター\n") print("周辺機器と値段が表示されるので購入数を入力してください\n") print("尚リモコン(3800円)は一つ家にあるので残りの家族4人分は固定します。\n") #リモコンを人数分買うのは確定(本体にリモコンは一台附属している) STDERR.print("クラシックコントローラー(1800円):") a = gets.chomp.to_i STDERR.print("ヌンチャク(1800円):") b = gets.chomp.to_i printf("リモコンとクラシックコントローラーの合計:%d円\n",con(a)) #リモコンとクラシックコントローラーの合計に変更 printf("ヌンチャクの合計:%d円\n",nun(b)) print("\n") printf("総計は%d円です。\n",con(a)+nun(b)) e)-実行結果2 pan{c109048}% ./def_oneparam.rb [~/Ruby] Wii周辺機器購入シュミレーター 周辺機器と値段が表示されるので購入数を入力してください 尚リモコン(3800円)は一つ家にあるので残りの家族4人分は固定します。 クラシックコントローラー(1800円):2 ヌンチャク(1800円):2 リモコンとクラシックコントローラーの合計:18800円 ヌンチャクの合計:3600円 総計は22400円です。 e)-考察2 結果が合っているかを計算する pan{c109048}% bc -l [~/Ruby] 3800*4 #リモコンの人数4人分 15200 15200+(1800*2) #リモコンとクラシックコントローラー二つ分 18800 1800*2 #ヌンチャク二人分 3600 18800+3600 #リモコンとクラシックコントローラーとヌンチャク合計 22400 実行結果と合っているので正しいと言える。 感想) よく公文のCMで?+?=9のように計算部分だけをふせて自由に考えさせる問題が流 れていたが、それと似たようなものだと考える。 共同学習者) 田村周 遠藤太朗