講評: 確認しました。面白いプログラムでした。 考察がしっかりかけていました。何をしたいプログラムか、 その結果についても考えてありました。 もうひとつくらい計算しておくのも良かったかもしれません。 ---- 10月31日第5回レポート「Method を自分で作ろう」 C106XXX XXXXXXXX XXXX語XXクラス 経営系 1、筆記問題 A、なぞとき。 「分け目がずれている髪とかけて、世界を誇るブライダルデザイナー桂由美と解く」 「その心は?」 「どちらも "かつら"でしょう。」 「焦げのついたお肉とかけまして、夏休み明けの子供達と解きます。」 「その心は?」 「よく焼けてるでしょう。」 B、数式。 *ひとつめ* ルビ緒は、毎日2000歩は歩こうと決めた。また、歩いたことで消費した カロリー数も一緒に測ることににした。 では、一ヶ月でいくら歩き、どのくらい消費したことになるのでしょう。 ※一ヶ月は30日とし、一歩あたりの消費カロリーを0.1とする。 歩数(単位:歩) 2000 * 30 = 60000 カロリー数(単位:kcal) 60000 * 0.1 = 6000 よって 歩数 60000歩/月 カロリー 6000kcal/月 」 確かめてみる 歩数 irsv{c106117}% bc -l [~] 2000*30 60000 よって 60000歩/月 カロリー irsv{c106117}% bc -l [~] 60000*0.1 6000.0 よって 6000kcal/月 *ふたつめ** ルビ緒は、資格の勉強を始めようと決意した。ルビ緒は一日10時間は 勉強すると張り切った。 ルビ緒が、はりきっている隣でハシュ緒も密かに資格の勉強を始めようと 決めた。ルビ緒をライバルと見ているハシュ緒は1日8時間勉強して合格 しようと張り切った。 では、1年間での勉強時間はそれぞれどのくらいになるのであろうか。 ※一年間は365日にする。二人共欠かさず、決めた時間勉強したとする。 ルビ緒(答えの単位:h) 10 * 365 = 3650 ハシュ緒(答えの単位:h) 8 * 365 = 2920 よって ルビ緒 3650h/年 ハシュ緒 2920h/年 」 確かめる ルビ緒 irsv{c106117}% bc -l [~] 10*365 3650 よって 3650h/年 ハシュ緒 irsv{c106117}% bc -l [~] 8*365 2920 よって 2920h/年 ちなみに… 二人の時間の差は irsv{c106117}% bc -l [~] 3650-2920 730 よって 730時間の差があることになる 日数でいえば 730/24 = 30.41666… 約30日で 一ヶ月分の差があることになる。 2、プログラム A、 (a) ルビ緒とハシュ緒の一年間でのそれぞれの勉強時間を 求めるプログラムにしたい。 (b)プログラム本体 #!/usr/koeki/bin/ruby def f(x) 10 * x # 10は一日あたりの時間(h)、xは日数(d) end STDERR.print("ルビ緒「さて、どれくらい頑張ったかなあ?」\n") hour = gets.chomp!.to_i printf("%d[h] \n",f(hour)) def f(x) 8 * x # 8は一日あたりの時間(h)、xは日数(d) end STDERR.print("ハシュ緒「どれくらい頑張っているんだろうか。」\n") hour = gets.chomp!.to_i printf("%d[h] \n",f(hour)) (c)もとにしたプログラムからの変更点。 func.rb をもとにして作りました。 変更点 3 * x → 10 * x 、8 * x a = gets.chomp!.to_i → hour = gets.chomp!.to_i f(a) → f(hour) print文の中身 (d)結果画面 ※ 日数が x = 10(d)の場合 irsv{c106117}% ./twoparam.rb [~/Ruby] ルビ緒「さて、どれくらい頑張ったかなあ?」 10 100[h] ハシュ緒「どれくらい頑張っているんだろうか。」 10 80[h] ※ 日数が x = 137(d)の場合 irsv{c106117}% ./twoparam.rb [~/Ruby] ルビ緒「さて、どれくらい頑張ったかなあ?」 137 1370[h] ハシュ緒「どれくらい頑張っているんだろうか。」 137 1096[h] ※ x = 365(d)の場合 irsv{c106117}% ./twoparam.rb [~/Ruby] ルビ緒「さて、どれくらい頑張ったかなあ?」 365 3650[h] ハシュ緒「どれくらい頑張っているんだろうか。」 365 2920[h] (e)結果の考察 うまく表示することができて、すごく良かったです。 時間に置き換えるということが求めやすく、また早く計算できるようになる と思います。 確かめ計算 ※ 日数 10(d) ルビ緒 irsv{c106117}% bc -l [~/Ruby] 10*10 100 ハシュ緒 irsv{c106117}% bc -l [~/Ruby] 8*10 80 よって ルビ緒 100(h)、ハシュ緒80(h) ※ 日数 137(d) ルビ緒 irsv{c106117}% bc -l [~/Ruby] 10*137 1370 ハシュ緒 irsv{c106117}% bc -l [~/Ruby] 8*137 1096 よって ルビ緒 1370(h)、ハシュ緒 1096(h) ※ 日数 365(d) ルビ緒 irsv{c106117}% bc -l [~/Ruby] 10*365 3650 ハシュ緒 irsv{c106117}% bc -l [~/Ruby] 8*365 2920 よって ルビ緒 3650(h)、ハシュ緒 2920(h) それぞれ間違いはありませんでした。 (f)参考文献 西村先生のホームページ http://roy/~madoka/2007/r2/05/05-05-stderr.html 3、感想 二つの答え(今回はルビ緒とハシュ緒の勉強時間)を、それぞれ一個ずつ プログラムを作らなければならないと思っていました。でも、ダメもと と思いつつ、一つのプログラムの中に、二つの答えを出すプログラムを 書き込んでみました。そして、実行した時に成功して何か驚いてしまい ました。もちろん、すんごく嬉しかったんです。 どれくらいの時間差が出るのかというのが、気になっていたので今回の 問題、プログラムを作ろうと思いました。2時間の差が結局、一年後に は一ヶ月分の差になるなんてと、すごい差であると思います。