第4回 基礎プログラミング II レポート課題 氏名: xxxxxxxx 学籍番号:c109xxx 語学クラス:中国語1 コース(系):環境サイエンス 1、筆記問題 =================================================================== A、 「税金とかけまして、炎天下の猛トレーニングと解きます。」 「その心は?」 「いつか、ね(値・音)をあげるかもしれません。」 「夏場に買った飴とかけまして、大学生が小学生レベルの問題に挑むと解きます。」 「その心は?」 「すぐにとける(溶ける・解ける)でしょう。」 「雪とかけまして、傷口の消毒と解きます。」 「その心は?」 「どちらもしみる(凍みる・染みる)でしょう。」 B、~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (1) 回転寿司に寿司を食べに行った。 この店の皿の色と値段は以下のようになっている。 --------------------- <皿の色> <値段> 金 400円 黒 340円 赤 200円 青 150円 --------------------- 満腹になり、テーブルに積み上がった皿の種類と枚数を数えてみたところ、 金の皿 7枚、黒の皿 2枚、赤の皿 10枚、青の皿 6枚 を完食したことが分かった。 レジに並ぶ前に、全部で合計いくらになるのか、自分で計算してみた。 400 * 7 + 340 * 2 + 200 * 10 + 150 * 6 = 6380 合計 6380 円 bc -l で再度確認してみると、 pan{c109067}% bc -l [~] 400 * 7 + 340 * 2 + 200 * 10 + 150 * 6 6380 quit 結果、6380 となり、計算は正しいといえる。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (2) とあるケーキ屋さんにケーキを買いに行った。 悩んだ末に、ニューヨークチーズケーキ(380円) 3個、フルーツタルト(400円) 2個、 エクレア(200円) 5個、抹茶シフォンケーキ(360円) 4個 を買うことにした。 結果、合計いくらになるか計算した。 380 * 3 + 400 * 2 + 200 * 5 + 360 * 4 = 4380 合計 4380 円 bc -l で再度確認してみると、 pan{c109067}% bc -l [~] 380*3+400*2+200*5+360*4 4380 quit 結果、4380 となり、計算は正しいといえる。 2、プログラム問題 ============================================================= A、 a、考えた設定 筆記問題 B (1)で考えた問題の例をもとにして、合計金額を計算すプログラム。 b、作成したプログラム(def_twoparam.rb ) #!/usr/koeki/bin/ruby def susi(r,x,y,z) # 関数 。 f(t)の値を受け取る。 400 * r + 340 * x + 200 * y + 150 * z # 値を固定する。 end # def 終わり print("\n") # 空行 STDERR.print("店員 : 「お会計ですね ? 」\n") # 対話的表現のため、STDEFF を使う。 print("\n") print("食べた皿の枚数を打ち込んでください。\n") print("\n") STDERR.print("食べた金色の皿の枚数: ") kin = gets.chomp.to_i # 入力された文字列を整数になおす。 print("\n") STDERR.print("食べた黒色の皿の枚数: ") kuro = gets.chomp.to_i print("\n") STDERR.print("食べた赤色の皿の枚数: ") aka = gets.chomp.to_i print("\n") STDERR.print("食べた青色の皿の枚数: ") ao = gets.chomp.to_i print("\n") STDERR.printf("店員 : 「お会計は %d 円 になります。ありがとうございました !」\n", susi(kin,kuro,aka,ao)) # methodにより定義された関数に r = kin、x = kuro、y = c、z = d を代入 c、もとにしたプログラム 授業ホームページ 基礎プログラミング II 第4回 繰り返しは引っ張りだそう 「どんな関数がきてもだいじょうぶ」を参考にしました。 STDERR.print 、print("\n") を付け加えました。 d、実行結果 pan{c109067}% ./def_twoparam.rb [~/Ruby] 店員 : 「お会計ですね ? 」 食べた皿の枚数を打ち込んでください。 食べた金色の皿の枚数: 20 食べた黒色の皿の枚数: 12 食べた赤色の皿の枚数: 8 食べた青色の皿の枚数: 15 店員 : 「お会計は 15930 円 になります。ありがとうございました !」 e、考察 pan{c109067}% bc -l [~/Ruby] 400 * 20 + 340 * 12 + 200 * 8 + 150 * 15 15930 quit bc -l で計算したところ、実行したプログラムで出た値と同じ値が出たので、プ ログラムは正しく実行されているといえる。 f、参考文献 最後に記載 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ B、 a、考えた設定 筆記問題 B (1)で考えた問題の例をもとにして、1つの変数の値を固定し、合計 金額を計算するプログラム。 b、作成したプログラム(def_oneparam_a.rb) #!/usr/koeki/bin/ruby def susi(r) # 関数 。 f(t)の値を受け取る。 400 * r + 340 * 4 + 200 * 5 + 150 * 10 # 金の皿以外の皿の値を固定する end # def 終わり print("店員 : 「黒皿(340円)4枚、赤皿(200円)5枚、青皿(150円)10枚 のお寿司と…\n") print("\n") STDERR.print("残るは金色の皿のお寿司ですね? 金色の皿のお寿司は 400円 になります。」\n") print("\n") # 空行 STDERR.print("金色の皿のお寿司を何枚食べましたか ?: ") a = gets.to_i # 入力された文字列を整数になおす。 print("\n") printf("「お会計は全部で %d 円になります。ありがとうございました !」\n",susi(a)) c、もとにしたプログラム 授業ホームページ 基礎プログラミング II 第4回 繰り返しは引っ張りだそう 「どんな関数がきてもだいじょうぶ」を参考にしました。 変数の値を固定させ、STDERR.print 、print("\n")、print文 を付け加えました。 d、実行結果 pan{c109067}% ./def_oneparam_a.rb [~/Ruby] 店員 : 「黒皿(340円)4枚、赤皿(200円)5枚、青皿(150円)10枚 のお寿司と… 残るは金色の皿のお寿司ですね? 金色の皿のお寿司は 400円 になります。」 金色の皿のお寿司を何枚食べましたか ?: 61 「お会計は全部で 28260 円になります。ありがとうございました !」 e、考察 pan{c109067}% bc -l [~/Ruby] 340 * 4 + 200 * 5 + 150 * 10 + 400 * 61 28260 quit bc -l で計算したところ、実行したプログラムで出た値と同じ値が出たので、プ ログラムは正しく実行されているといえる。 念の為、打ち込む数字を 0 にして、再度プログラムを実行し、計算が本当に正 しいのか確かめる。 pan{c109067}% ./def_oneparam_a.rb [~/Ruby] 店員 : 「黒皿(340円)4枚、赤皿(200円)5枚、青皿(150円)10枚 のお寿司と… 残るは金色の皿のお寿司ですね? 金色の皿のお寿司は 400円 になります。」 金色の皿のお寿司を何枚食べましたか ?: 0 「お会計は全部で 3860 円になります。ありがとうございました !」 先程計算して出た値から、金色の皿の分の金額 0 円を引く。 次に、個別に金色の皿の金額を計算し、この2つの値が同じかを調べる。 pan{c109067}% bc -l [~/Ruby] 28260-3860 24400 400*61 24400 quit 結果、2つの値が同じなので、このプログラムは正しく実行されているとい える。 f、参考文献 最後に記載 3、感想 ====================================================================== 今回学んだことは、400 * y は、y に数字を当てはめて計算する 400 * y に y = 1 を代入する。というような型式の計算に当てはめることが できるため、義務教育で学んだ算数・数学と同じ仕組みだと思う。 表計算・簿記のようなグラフを作る仕組みは、授業で行なったような、Excel で 値を打ち込んだグラフを作成し、範囲を指定すると、グラフを作れるような仕組 みが同じであるといえると思う。 今回の課題は分からないことばかりだった。今回、授業に付いていくだけで必至 だったため、内容があまり理解することができなかった。しかし、友だちにプロ グラムの内容の意味を教えてもらえ、そのお陰でだいぶプログラムの内容が理解 できた。 自分で再度プログラムを見直し、プログラムの意味を再度確認していきたい。 4、参考文献 ================================================================== 西村 まどか 基礎プログラミング II 第4回 繰り返しは引っ張りだそう http://roy/~madoka/2010/r2/04/ 「どんな関数がきてもだいじょうぶ」 http://roy/~madoka/2010/r2/04/04_03_theme_03_method.html 「これを代入した答はなあに」 http://roy/~madoka/2010/r2/04/04_04_theme_04_stderr.html 「分かりやすいプログラムへ」 http://roy/~madoka/2010/r2/04/04_05_theme_05_print.html 共同学習者 青木 千紗 久保田 瑛一郎 横山 広樹