第6回 基礎プログラミング II レポート課題 氏名:大島 藍 学籍番号:C1090331 語学クラス:中国語 コース(系):福祉コース 1、筆記問題 A alphabet = ["a","b","c","d"..,"z"] 配列の中に a から z までいれて、配列の18番目は配列の場合 0 から数え始め るので、a が 0 番目になる。数えていくと、18番目は s になる。次に 40 番目 は、同じように数えていくがアルファベットは 26 までしかないので、「何もな い」 という答えがかえってくる。よって、40 番目は「ありません」になる。 2、プログラム問題 A ・考えた設定 入力したものを計算し、平均を求められるプログラムを考えた。 ・作成したプログラム #!/usr/koeki/bin/ruby def average(time) # time は数値がたくさんしまわれる配列 sum = 0.0 # 割り算する予定なので浮動小数点数にしておく for run in time # for A in B で B の中の A について sum += run end sum / time.length #配列 score の要素数を数え、それで sum を割る end home = Array.new # からっぽの配列 home を作る while true STDERR.print "タイムを入力して下さい: " line = gets if line == nil break end home << line.to_f end printf("\n みんなの平均は %3.1f です\n", average(home)) ・もとしたプログラムからの変更点 メソッドの名前を変えた。平均を求められるようにした。 ・実行結果 pan{c109033}% ./def_statistic.rb [~/Ruby] タイムを入力して下さい: 7 [7.0] タイムを入力して下さい: 8.7 [7.0, 8.7] タイムを入力して下さい: 10 [7.0, 8.7, 10.0] タイムを入力して下さい: 9 [7.0, 8.7, 10.0, 9.0] タイムを入力して下さい: 10.3 [7.0, 8.7, 10.0, 9.0, 10.3] タイムを入力して下さい: ^D みんなの平均は 9.0 です ・考察 合っているか確かめるために確かめ算をした。 pan{c109033}% bc -l [~/Ruby] (7+8.7+10+9+10.3)/5 9.00000000000000000000 計算をしてみると 9.00000000000000000000 となった。小数点第2位 を 四捨五入 して表示するため 9.0 になる。よって、このプログラムは正しく計算されてい ると言える。 B、 ・考えた設定 選択肢によってエンディングが違うプログラムを考えた。 ・作成したプログラム #!/usr/koeki/bin/ruby def cry(ct) ct.times do print("ぴかっ!\t") end print("\n") sleep(0.5) end def coll(name) STDERR.printf("%sを世話しよう: \n", name) STDERR.print("[1]\t100マンボルトUP?\n") STDERR.print("[2]\t木の実をあげる?\n") STDERR.print("[3]\t攻撃をうけてみる?\n") end def fat(perday,exercise) x = 4 * perday - exercise printf("%d日目\n",perday) printf("体重増加分 %d\n", x) x end printf("たまごを拾った。\n") STDERR.print("どんな名前にするの?") name = gets.chomp if name == "" name = "きいろねずみ" end printf("%sという名前になった。\n",name) koufuku = 1 # 幸福度 weight = 1 # 体重 day = 0 # 育てた日付 printf("よく光を浴びると大きくなるよ\n") while true cry(koufuku) coll(name) ans = gets.chomp.to_i koufuku += day * ans printf("幸福度 happy=%d\n", koufuku) weight += fat(day,ans) printf("体重 weight=%d\n", weight) if koufuku > 6 break end if weight > 6 break end cry(ans) day += 1 end cry(weight) # 最終段階の体重が鳴き声になる printf("%sは", name) if weight > 10 print("いぬ") elsif weight > 8 print("ねこ") else print("モルモット") end print("みたいになりました\n") ・もとにしたプログラムからの変更点 メソッド名を変更した。 ・実行結果 NO.1 pan{c109033}% ./def_rollplaying_a.rb [~/Ruby たまごを拾った。 どんな名前にするの? きいろねずみという名前になった。 よく光を浴びると大きくなるよ ぴかっ! きいろねずみを世話しよう: [1] 100マンボルトUP? [2] 木の実をあげる? [3] 攻撃をうけてみる? 1 幸福度 happy=1 0日目 体重増加分 -1 体重 weight=0 ぴかっ! ぴかっ! きいろねずみを世話しよう: [1] 100マンボルトUP? [2] 木の実をあげる? [3] 攻撃をうけてみる? 1 幸福度 happy=2 1日目 体重増加分 3 体重 weight=3 ぴかっ! ぴかっ! ぴかっ! きいろねずみを世話しよう: [1] 100マンボルトUP? [2] 木の実をあげる? [3] 攻撃をうけてみる? 3 幸福度 happy=8 2日目 体重増加分 5 体重 weight=8 ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! きいろねずみはモルモットみたいになりました NO.2 pan{c109033}% ./def_rollplaying_a.rb [~/Ruby] たまごを拾った。 どんな名前にするの? きいろねずみという名前になった。 よく光を浴びると大きくなるよ ぴかっ! きいろねずみを世話しよう: [1] 100マンボルトUP? [2] 木の実をあげる? [3] 攻撃をうけてみる? 1 幸福度 happy=1 0日目 体重増加分 -1 体重 weight=0 ぴかっ! ぴかっ! きいろねずみを世話しよう: [1] 100マンボルトUP? [2] 木の実をあげる? [3] 攻撃をうけてみる? 1 幸福度 happy=2 1日目 体重増加分 3 体重 weight=3 ぴかっ! ぴかっ! ぴかっ! きいろねずみを世話しよう: [1] 100マンボルトUP? [2] 木の実をあげる? [3] 攻撃をうけてみる? 1 幸福度 happy=4 2日目 体重増加分 7 体重 weight=10 ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! きいろねずみはねこみたいになりました NO.3 pan{c109033}% ./def_rollplaying_a.rb [~/Ruby] たまごを拾った。 どんな名前にするの? きいろねずみという名前になった。 よく光を浴びると大きくなるよ ぴかっ! きいろねずみを世話しよう: [1] 100マンボルトUP? [2] 木の実をあげる? [3] 攻撃をうけてみる? 3 幸福度 happy=1 0日目 体重増加分 -3 体重 weight=-2 ぴかっ! ぴかっ! ぴかっ! ぴかっ! きいろねずみを世話しよう: [1] 100マンボルトUP? [2] 木の実をあげる? [3] 攻撃をうけてみる? 3 幸福度 happy=4 1日目 体重増加分 1 体重 weight=-1 ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! きいろねずみを世話しよう: [1] 100マンボルトUP? [2] 木の実をあげる? [3] 攻撃をうけてみる? 1 幸福度 happy=6 2日目 体重増加分 7 体重 weight=6 ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! きいろねずみを世話しよう: [1] 100マンボルトUP? [2] 木の実をあげる? [3] 攻撃をうけてみる? 1 幸福度 happy=9 3日目 体重増加分 11 体重 weight=17 ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ!ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! ぴかっ! きいろねずみはいぬみたいになりました ・考察 NO.1 4*0-1 -1 4*1-1 3 4*2-3 5 1+-1+3+5 8 計算すると 8 になり、8 はモルモットになるので正しく動いている。 NO.2 4*0-1 -1 4*1-1 3 4*2-1 7 1+-1+3+7 10 計算すると10 になり、10 は ねこ になるので正しく動いている。 NO.3 4*0-3 -3 4*1-3 1 4*2-1 7 4*3-1 11 1+-3+1+7+11 17 計算すると 17 になり、17 は いぬ になるので正しく動いている。 3、感想 メソッドを使ってバスケの点数を数えることができると思う。 今回の課題は、1週間バイトが入っていて平日に課題をするのが大変だったため、 こんな時間になってしまった。でも、わからないところは横山に聞いてレポート を完成させることができて良かった。来週の課題も頑張りたい。 4、参考文献 西村 まどか http://roy/~madoka/2010/r2/06/06_11_theme_09_rubiocci.html 基礎プログラミング II 第6回 目的に応じて使ってみよう 「るびおっち」 西村 まどか http://roy/~madoka/2010/r2/06/06_08_theme_07_aryavg.html 基礎プログラミング II 第6回 目的に応じて使ってみよう 「映画の星づけランキング」 ・協同学習者 横山 広樹 ・添付