第4回 基礎プログラミング II レポート課題 氏名:荘司まゆ 学籍番号:c1051093 語学クラス:英語3 コース(系):社会 1. A. 「すごろくのゲーム とかけて、摸擬試験の成績 と解く」 「その心は?」 「アガルと嬉しいでしょう。」 「秋の山 とかけて、恋する乙女の頬 と解く」 「その心は?」 「どんどんコウヨウするでしょう。」 「色づかないりんご とかけて、お茶目な女性 と解く」 「その心は?」 「なかなかアキがこないでしょう。」 B. 例1. Aさんはハンバーグが好きで、お店に買いに来ました。 チーズハンバーグ 税込230円 おろしハンバーグ 税込180円 チーズハンバーグの個数を x、おろしハンバーグの個数を yとすると式は、 式)230円 * x + 180 * y ex1.)昨日、チーズハンバーグを5個、おろしハンバーグを3個買った。 式)230 * 5 + 180 * 3 = 1690 計算を確かめるために bc -lを使った。 結果 pan{c105109}% bc -l [~] 230 * 5 + 180 * 3 1690 合っていたので答えは、1690円 ex.2)とても美味しかったので今日はチーズハンバーグ 15個 おろしハンバーグ8個買っ て来た。 式)230 * 15 + 180 * 8 = 4890 計算を確かめるために bc ーlを使った。 結果 pan{c105109}% bc -l [~] 230 * 15 + 180 * 8 4890 合っていたので答えは、4890円 例2.花屋さんで半日バイトをすると、4800円、1日では、9250円もらえます。 買いたいものがあったので、それをひとまず貯金することにしました。 ex.1)半日バイトの回数を x、1日バイトの回数を yとすると 式)4800 * x + 9250 * y 今月は、半日バイトを 4回、1日バイトを 7回しました。 式)4800 * 4 + 9250 * 7 = 83950 計算を確かめるために、bc ーlを使った。 結果 pan{c105109}% bc -l [~] 4800 * 4 + 9250 * 7 83950 合っていたので答えは、83950円 ex.2)先月は、半日バイトを 8回、1日バイトを6回しました。 式)4800 * 8 + 9250 * 6 = 93900 計算を確かめるため、bc -lを使った。 結果 pan{c105109}% bc -l [~] 4800 * 8 + 9250 * 6 93900 合っていたので答えは、93900円 2. A.今回は1でやったものを使う。 チーズハンバーグとおろしハンバーグの個数を入力して値段の合計を出すプログ ラムを作った。 プログラム本体 (pr4-2.rb) #!/usr/koeki/bin/ruby def teaze(x) #チーズハンバーグの値段の計算 230 * x end def orosi(y) #おろしハンバーグの値段の計算 180 * y end print("今日もハンバーグを食べたいの!お金をちょうだい。\n") STDERR.print("チーズハンバーグ(#230円)は何個買うの?\n") a = gets.to_i #to_iで整数に調える STDERR.print("おろしハンバーグ(#180円)は何個?\n") b = gets.to_i printf("合計は %d 円ね。\n",teaze(a) + orosi(b)) #aとbをたすことで合計を出す もとにしたプログラムの変更点(考察) もとにしたプログラムは特にない。しかし、def functionではなく、チーズとお ろしに関数を変更させた。 def 関数(仮引数) 関数の定義(計算) end プログラムの実行結果 pan{c105109}% ./pr4-2.rb [~/Ruby] 今日もハンバーグを食べたいの!お金をちょうだい。 チーズハンバーグ(#230円)は何個買うの? 5 おろしハンバーグ(#180円)は何個? 7 合計は 2410 円ね。 pan{c105109}% ./pr4-2.rb [~/Ruby] 今日もハンバーグを食べたいの!お金をちょうだい。 チーズハンバーグ(#230円)は何個買うの? 6 おろしハンバーグ(#180円)は何個? 15 合計は 4080 円ね。 計算を確かめるために、bc -lを使った。 結果はそれぞれ pan{c105109}% bc -l [~/Ruby] 230 * 5 + 180 * 7 2410 230 * 6 + 180 * 15 4080 よって、合計は2410円と、4080円である。 以上のことによりこのプログラムは正しい。 B. プログラム本体 #!/usr/koeki/bin/ruby def teaze(x) #チーズハンバーグとおろしハンバーグを合計した 230 * x + 180 * 7 end print("今日もハンバーグを食べたいの!お金をちょうだい。\n") print("おろしハンバーグは7個買います。\n") STDERR.print("チーズハンバーグ(#230円)は何個買うの?\n") a = gets.to_i #to_iで整数に調える printf("チーズハンバーグを %d 個買えます。\n",a) printf("合計は %d 円ね。\n",teaze(a)) # x = aとしている プログラムの変更点(考察) 1.B.のプログラムを変更した。 おろしハンバーグの値段、個数を固定し、計算させた。 プログラムの実行結果 pan{c105109}% ./pr.4-2-B.rb [~/Ruby] 今日もハンバーグを食べたいの!お金をちょうだい。 おろしハンバーグは7個買います。 チーズハンバーグ(#230円)は何個買うの? 7 チーズハンバーグを 7 個買えます。 合計は 2870 円ね。 pan{c105109}% ./pr.4-2-B.rb [~/Ruby] 今日もハンバーグを食べたいの!お金をちょうだい。 おろしハンバーグは7個買います。 チーズハンバーグ(#230円)は何個買うの? 18 チーズハンバーグを 18 個買えます。 合計は 5400 円ね。 計算を確かめるために bc -lを使った。 結果 pan{c105109}% bc -l [~/Ruby] 230 * 7 + 180 * 7 2870 230 * 18 + 180 * 7 5400 よってそれぞれ、2870円と、5400円である。 以上のことにより、このプログラムは正しい。 C. プログラム本体 #!/usr/koeki/bin/ruby def barplot(x1,x2) #棒グラフ print("--"* b(x2) + "- y\n") for z1 in x1..x2 print("*", * g(z1)) print("|\n") end for z2 in x1..x2 print("|" + "■" * b(z2) + "\n") end print("|\n×\n") end def g(x3) x3 * 200 end def b(x3) (x3 * 200)/100 end print("今日はチーズハンバーグを5個買いました。\n") print("財布の中にお金は残っています.\n") print("おろしハンバーグはいくつ買いますか?\n") STDERR.print("いくつ食べられますか?\n") a = gets.to_i #to_iで整数に調える STDERR.print("いくつまで買う予定ですか?\n") b = gets.to_i printf("もし %s 個買ったら、%d円かかります\n",a,g(a)) printf("もし %s 個買ったら、%d円かかります\n",b,g(b)) barplot(a,b) プログラムの変更点(考察) Bの問題を基礎とし、講義でやったbarplotと同じように作った。 また、最低から最高の個数を計算するプログラムを作った。 実行結果 pan{c105109}% ./pr.4-2-C.rb [~/Ruby] 今日はチーズハンバーグを5個買いました。 財布の中にお金は残っています. おろしハンバーグはいくつ買いますか? いくつ食べられますか? 4 いくつまで買う予定ですか? 9 もし 4 個買ったら、800円かかります もし 9 個買ったら、1800円かかります ------------------------------------- y *800| *1000| *1200| *1400| *1600| *1800| |■■■■■■■■ |■■■■■■■■■■ |■■■■■■■■■■■■ |■■■■■■■■■■■■■■ |■■■■■■■■■■■■■■■■ |■■■■■■■■■■■■■■■■■■ | × pan{c105109}% ./pr.4-2-C.rb [~/Ruby] 今日はチーズハンバーグを5個買いました。 財布の中にお金は残っています. おろしハンバーグはいくつ買いますか? いくつ食べられますか? 7 いくつまで買う予定ですか? 15 もし 7 個買ったら、1400円かかります もし 15 個買ったら、3000円かかります ------------------------------------------------------------- y *1400| *1600| *1800| *2000| *2200| *2400| *2600| *2800| *3000| |■■■■■■■■■■■■■■ |■■■■■■■■■■■■■■■■ |■■■■■■■■■■■■■■■■■■ |■■■■■■■■■■■■■■■■■■■■ |■■■■■■■■■■■■■■■■■■■■■■ |■■■■■■■■■■■■■■■■■■■■■■■■ |■■■■■■■■■■■■■■■■■■■■■■■■■■ |■■■■■■■■■■■■■■■■■■■■■■■■■■■■ |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | × pan{c105109}% [~/Ruby] 計算を確かめるために bc-lを使って計算した。 結果 pan{c105109}% bc -l [~/Ruby] 200 * 4 800 200 * 9 1800 200 * 7 1400 200 *15 3000 よって、それぞれの結果は同じである。 以上のことにより、このプログラムは正しい。 感想 今回のプログラムを作るにあたり、特にC.の問題を作るのが難しくなかなかうま く実行することが出来なかった。しかし、いろいろと工夫することにより、自分 の好きなようにプログラムを作れたので良かった。 C.のような問題をもっとたくさん解いて、身に着けたい。 参考文献 基礎プログラミング II 第4回 どんな関数がきてもだいじょうぶ http://roy/~madoka/2010/r2/04/04_03_theme_03_method.html 西村まどか