第6回 基礎プログラミング II レポート課題 氏名:荘司まゆ 学籍番号:c105109 語学クラス:英語3 コース(系):社会 1. A. alphabet[18] = s alphabet[40] = nil アルファベット全25文字でaを0とすると18番目はmであり、また40番目はないので以上の結果 となった。 2. A. a, プログラム本体 #!/usr/koeki/bin/ruby def average(score) sum = 0.0 for tests in score sum += tests end sum / score.length end points = Array.new while true STDERR.print"点数を入力して下さい:" line = gets if line == nil break end points << line.to_i end printf("\n 平均は %3.1f です\n",average(points)) b.実行結果 pan{c105109}% ./def_statistic.rb [~/Ruby] 点数を入力して下さい:100 点数を入力して下さい:80 点数を入力して下さい:50 点数を入力して下さい:89 点数を入力して下さい:^D 平均は 79.8 です pan{c105109}% ./def_statistic.rb [~/Ruby] 点数を入力して下さい:34 点数を入力して下さい:23 点数を入力して下さい:45 点数を入力して下さい:34 点数を入力して下さい:56 点数を入力して下さい:67 点数を入力して下さい:^D 平均は 43.2 です c.考察 実行結果は以上であるが、この計算が正しいのか、bc-lで計算してみる。 pan{c105109}% bc -l [~] (100 + 80 + 50 + 89)/4 79.75000000000000000000 quit pan{c105109}% bc -l [~] (34 +23 +45 +34 +56 + 67)/6 43.16666666666666666666 となるので、この計算は正しい。 B. a.プログラム本体 #!/usr/koeki/bin/ruby def cry(ct) ct.times do print("ぴよ\t") end print("\n") sleep(1) end def message(name) STDERR.printf("%sを世話しよう:\n",name) STDERR.print("[1]\tミルクをあげる?\n") STDERR.print("[2]\tおもちゃをあげる?\n") STDERR.print("[3]\tお風呂に入れる?\n") STDERR.print("[4]\tお菓子をあげる?\n") STDERR.print("[5]\t運動させる?\t") end def fat(perday,exercise) x = 5 * perday - exercise printf("%d日目\n",perday) printf("体重増加分 %d\n",x) x end printf("たまごを拾った。\n") STDERR.printf("名前は?") name = gets.chomp if name == "" name = "るびおっち" end printf("%sという名前になった。\n",name) happy = 1 weight = 1 day = 0 printf("よく鳴くと大きくなるよ\n") while true cry(happy) message(name) ans = gets.chomp.to_i happy += day * ans printf("しあわせ度 happy=%d\n", happy) weight += fat(day,ans) printf("体重 weight=%d\n", weight) if happy > 5 break end if weight > 5 break end cry(ans) day +=1 end cry(weight) printf("%sは",name) if weight > 10 print("もう大人です\n") elsif weight <= 4 print("まだ赤ちゃんです\n") else print("子どもです。もっと育てて。\n") end b.実行結果 pan{c105109}% ./def_rollplaying_a.rb [~/Ruby] たまごを拾った。 名前は? るびおっちという名前になった。 よく鳴くと大きくなるよ ぴよ るびおっちを世話しよう: [1] ミルクをあげる? [2] おもちゃをあげる? [3] お風呂に入れる? [4] お菓子をあげる? [5] 運動させる? 4 しあわせ度 happy=1 1 ぴよ ぴよ ぴよ ぴよ ぴよ るびおっちを世話しよう: [1] ミルクをあげる? [2] おもちゃをあげる? [3] お風呂に入れる? [4] お菓子をあげる? [5] 運動させる? 3 しあわせ度 happy=4 1 ぴよ ぴよ ぴよ ぴよ ぴよ ぴよ ぴよ るびおっちを世話しよう: [1] ミルクをあげる? [2] おもちゃをあげる? [3] お風呂に入れる? [4] お菓子をあげる? [5] 運動させる? 2 しあわせ度 happy=8 1 ぴよ るびおっちはまだ赤ちゃんです% pan{c105109}% ./def_rollplaying_a.rb [~/Ruby] たまごを拾った。 名前は? るびおっちという名前になった。 よく鳴くと大きくなるよ ぴよ るびおっちを世話しよう: [1] ミルクをあげる? [2] おもちゃをあげる? [3] お風呂に入れる? [4] お菓子をあげる? [5] 運動させる? 5 しあわせ度 happy=1 0日目 体重増加分 -5 体重 weight=-4 ぴよ ぴよ ぴよ ぴよ ぴよ ぴよ るびおっちを世話しよう: [1] ミルクをあげる? [2] おもちゃをあげる? [3] お風呂に入れる? [4] お菓子をあげる? [5] 運動させる? 3 しあわせ度 happy=4 1日目 体重増加分 2 体重 weight=-2 ぴよ ぴよ ぴよ ぴよ ぴよ ぴよ ぴよ るびおっちを世話しよう: [1] ミルクをあげる? [2] おもちゃをあげる? [3] お風呂に入れる? [4] お菓子をあげる? [5] 運動させる? 1 しあわせ度 happy=6 2日目 体重増加分 9 体重 weight=7 ぴよ ぴよ ぴよ ぴよ ぴよ ぴよ ぴよ るびおっちは子どもです。もっと育てて。 c.考察 この問題は最初に実行すると、49行目がnilとなり、エラーで以下が表示されな くなった。いろいろ考えてみたが全く分からなかったので、あらゆる可能性で実 際行ってみた。 最後にはただxが足りないだけなのだと分かったが、その考えるだけではなく実 際自分で可能性を行ってみることで理解することも出来た。 C.感想 講義で行ったプログラムをほんの少し変えてみたのだが、いざ自分がやってみる とエラーが出てしまったことに少しショックだった。しかし、一度で実行結果が うまく表示されることも嬉しく感じるが、エラーが出たものをまた自分で考え実 行が成功したプログラムはもっと嬉しく感じる。 D.参考文献 http://roy/~madoka/2010/r2/06/06_08_theme_07_aryavg.html 基礎プログラミング II 第6回 映画の星つけランキング 西村まどか http://roy/~madoka/2010/r2/06/06_11_theme_09_rubiocci.html 基礎プログラミング II 第6回 るびおっち 西村まどか