第4回 繰り返しは引っ張り出そう レポート課題 氏名: 進藤 江莉亜 学籍番号: c1101193 語学クラス: 英語2 コース(系): 環境 訂正 Bのプログラムで、実行結果を貼っているときに気付いて直したのですが、作成 したプログラムを貼った後に気付いたので訂正しました。 2 * 4000 + x * 5000のところがx * 4000 + 2 * 5000としていました。 1A 筆記 「鳩山政権とかけて、ロズウェル事件の真相と解く」 「その心は?」 「どちらも宇宙人の仕業です」 B 問1 私はさくらんぼといちご(箱)を買って代金がいくらかかるか調べた。 さくらんぼは1箱4000円、いちごは1箱5000円である。 例1 私はさくらんぼ2箱といちご3箱買いました。 合計はいくらか。 解答1 4000 * 2 + 5000 * 3 = 23000 合計23000円 pan{c110119}% bc -l [~/Ruby] 4000*2+5000*3 23000 例2 私はさくらんぼ4箱といちご3箱買いました。 合計はいくらか。 解答 4000 * 4 + 5000 * 3 = 31000 合計31000円 pan{c110119}% bc -l [~/Ruby] 4000*4+5000*3 31000 問2 私はシャーペンと消しゴムを買って代金がいくらかかルカ調べた。 シャーペンは1本100円、消しゴムは1個60円とする。 例1 私はシャーペン3本と消しゴム5つ買いました。 合計はいくらか 解答1 100 * 3 + 60 * 5 =600 合計600円 pan{c110119}% bc -l [~/Ruby] 100*3+60*5 600 quit 例2 私はシャーペン8本と消しゴム2つ買いました。 合計はいくらか 解答1 100 * 8 + 60 * 2 =920 合計920円 pan{c110119}% bc -l [~/Ruby] 100*8+60*2 920 2a 考えた設定 さくらんぼといちごの値段を予め決めておき、入力された数値でかけて2つとも の値段を表示する設定。 b作成したプログラム AとBの2つのプログラムを作成した。 A #!/usr/koeki/bin/ruby def shopping(x,y) # shoppingは関数、x,yは仮引数 x * 4000 + y * 5000 end # 終わり STDERR.print("さくらんぼ何箱買う?:") sakuranbo = gets.to_i # キーボードから入力された文字列をgets、to_iは整数 STDERR.print("いちご何箱買う?:") ichigo = gets.to_i printf("さくらんぼ%d箱、いちご%d箱お買い上げです。\n",sakuranbo, ichigo) printf("合計%dになります。\n",shopping(sakuranbo, ichigo)) c元にしたプログラムからの変更 def_func.rbを元にした。 変更した部分は関数をshoppingにし、仮引数をx,yとし、barplotは消した。 d実行結果 pan{c110119}% ./def_twoparam.rb [~/Ruby] さくらんぼ何箱買う?:2 いちご何箱買う?:3 さくらんぼ2箱、いちご3箱お買い上げです。 合計23000になります。 pan{c110119}% ./def_twoparam.rb [~/Ruby] さくらんぼ何箱買う?:5 いちご何箱買う?:8 さくらんぼ5箱、いちご8箱お買い上げです。 合計60000になります。 e考察 pan{c110119}% bc -l [~/Ruby] 4000*2+5000*3 23000 quit pan{c110119}% bc -l [~/Ruby] 4000*5+5000*8 60000 quit この実行結果は正しい。 B #!/usr/koeki/bin/ruby def shopping(x) # shoppingが関数、xが仮引数 2 * 4000 + x * 5000 end print("さくらんぼは2箱買います\n") STDERR.print("いちごは何箱買いますか?:") ichigo = gets.to_i # キーボードから入力された文字列をgets、to_iは整数 printf("さくらんぼ2箱、いちご%d箱お買い上げです\n",ichigo) printf("御会計%dになります。\n",shopping(ichigo)) c元にしたプログラムからの変更 上記のプログラムのyの部分をあらかじめ数値を入れておき、sakuranboの部分を 消去した。 d実行結果 pan{c110119}% ./def_oneparam_a.rb [~/Ruby] さくらんぼは2箱買います いちごは何箱買いますか?:1 さくらんぼ2箱、いちご1箱お買い上げです 御会計13000になります。 pan{c110119}% ./def_oneparam_a.rb [~/Ruby] さくらんぼは2箱買います いちごは何箱買いますか?:6 さくらんぼ2箱、いちご6箱お買い上げです 御会計38000になります。 e考察 pan{c110119}% bc -l [~/Ruby] 4000*2+5000*1 13000 quit pan{c110119}% bc -l [~/Ruby] 4000*2+5000*6 38000 quit この実行結果は正しい。 3 感想 義務教育で学んだ算数や数学と似ていると思った。くわしくはあまりおぼえてい ないがbarplotの棒グラフを書くのは学校でならったy=xのような1次関数か2次関 数あたりに似ていると思った。 あと、数値情報処理でグラフを作ったことがある。マクロでヒストグラムを作っ たが、こういれたら何個■を積み上げるか、というのをやったのでとても似て いると思った。 4 参考文献 基礎プログラミング II 第 4 回 (繰り返しは引っ張りだそう) 「どんな関数がきてもだいじょうぶ」 西村まどか http://roy/~madoka/2011/r2/04/r2_04_03_theme_03_method.html 基礎プログラミング II 第 4 回 (繰り返しは引っ張りだそう) 「これを代入した答はなあに」 西村まどか http://roy/~madoka/2011/r2/04/r2_04_04_theme_04_stderr.html 基礎プログラミング II 第 4 回 (繰り返しは引っ張りだそう) 「分かりやすいプログラムへ」 西村まどか http://roy/~madoka/2011/r2/04/r2_04_05_theme_05_print.html