評価がCでもっと良い評価がほしいので再提出します。 改良した部分はプログラム問題 B の考察部分です。3回連続で入力するとどう結 果が変わるか数値をだして解説しました。 第 6 回 目的に応じて使ってみよう レポート課題 氏名:名和 大翔 学籍番号:C1101678 語学クラス:英語6 コース(系):政策マネジメント 1.筆記問題 A.配列は0から始まるので、alphabet[18] および alphabet[40]はalphabet = ["a","b",...,"z"]の配列の19番目と41番目になる。つまり、alphabet[18]はs であり、alphabet[40]は存在しないので空の情報(nil)ということになる。 2.プログラム問題 A.1.考えた設定 配列を使って、テストの点数を入力して平均点を求めるプログラム。 2.作成したプログラム #!/usr/koeki/bin/ruby def average(score) # scoreは数値がたくさんしまわれる配列 sum = 0.0 # 割り算をするので浮動小数点数にする for tokuten in score # for A in B でBの中のAについて sum += tokuten # printf("%d 人目 途中合計 sum=%d\n",score.length + 1,sum) end sum / score.length # 配列 score の要素数を数え、それでsumを割る end ten = Array.new # からっぽの配列 ten を作る # i = 0 # i がtenの添字となる(入力された行を数える添字) STDERR.print("公益中学3年の英語のテストの平均をだします\n") while true STDERR.print"得点を入力してください:" line = gets if line == nil break end ten << line.to_i # 上か下かどちらかでよい # ten[i] = line.to_i # p ten # i += 1 end printf("\n 英語の平均点は %3.1f です\n",average(ten)) 3.もとにしたプログラムからの変更点 授業であつかった def_ary_movie.rb をもとにした。それぞれ適時変数名を変え た。 4.プログラムを実行した結果画面 pan{NAWA Hiroha}% ./def_statistic.rb [~/Ruby] 公益中学3年の英語のテストの平均をだします 得点を入力してください:80 得点を入力してください:90 得点を入力してください:85 得点を入力してください:66 得点を入力してください:100 得点を入力してください:74 得点を入力してください:^D 英語の平均点は 82.5 です 5.考察 空の情報である nil 、つまり Ctrl-D を入力することで繰り返しからぬけ た。 また、bc -l で計算が合ってるかどうか確かめる。 pan{NAWA Hiroha}% bc -l [~/Ruby] (80 + 90 + 85 + 66 + 100 + 74)/6 82.50000000000000000000 よって、このプログラミングは正しい。 B.1.考えた設定 授業であつかった「るびおっち」を基に適時ストーリーを変えて、選択肢に よってエンディングが変わるようにした。 2.作成したプログラム #!/usr/koeki/bin/ruby def cry(ct) ct.times do # 同じことを繰り返す print("ぽん\t") end print("\n") sleep(0.5) end def message(name) STDERR.print("%sを育てよう: \n", name) STDERR.print("[1]\運動をする?\n") STDERR.print("[2]\t食事をする?\n") STDERR.print("[3]\t昼寝をする?\n") end def force(perday,exercise) x = 4 * 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 # しあわせ度 power = 1 # パワー day = 0 # 育てた日付 while true cry(happy) # cryとmessageは、値を捨てている message(name) ans = gets.chomp.to_i happy += day * ans printf("しあわせ度 happy=%d\n", happy) power+= force(day,ans) printf("パワー power=%d\n", power) if happy > 4 break end if power > 4 break end cry(ans) day += 1 end cry(power) printf("%sは", name) if power > 8 print("鷹") elsif power <= 5 print("鷲") else print("燕") end print("になりました\n") 3.もとにしたプログラムからの変更点 変数名とエンディングを変えただけでほぼ「るびおっち」と同じプログラミ ングである。 4.プログラミングを実行した結果画面 pan{c110167}% ./def_rollplaying_a.rb [~/Ruby] あるひ、空から何かがおちてきた…なんとそれは何かの卵であった。 この卵を育てましょう!まずは名前をつけよう!たま たまにきまりました。 ぽん %sを育てよう: たま[1]運動をする? [2] 食事をする? [3] 昼寝をする? 1 しあわせ度 happy=1 0日目 パワー増加分 -1 パワー power=0 ぽん ぽん %sを育てよう: たま[1]運動をする? [2] 食事をする? [3] 昼寝をする? 2 しあわせ度 happy=3 1日目 パワー増加分 2 パワー power=2 ぽん ぽん ぽん ぽん ぽん %sを育てよう: たま[1]運動をする? [2] 食事をする? [3] 昼寝をする? 3 しあわせ度 happy=9 2日目 パワー増加分 5 パワー power=7 ぽん ぽん ぽん ぽん ぽん ぽん ぽん たまは燕になりました 5.考察 選択肢[1]を3回入力した場合 一回目は power=0、二回目は power=3、三回目は power=10となり、結果 power > 8であり鷹になる。つまり、[1]を入力した時、 exerciseの値は1に なるということがわかる。 選択肢[2]を3回入力した場合 一回目は power=-1、二回目は power=1、三回目は power=7となり、結果 power > 8 と power <= 5 のどちらにもあてはまらないので燕になる。つま り、[2]を入力した時、exerciseの値は2になるということがわかる。 選択肢[3]を3回入力した場合 一回目は power=-2、二回目は power=-1、三回目は power=4となり、結果 power <= 5であり鷲になる。つまり、[3]を入力した時、exerciseの値は3に なるということがわかる。 また、どの場合もhappy > 4 か power > 4になったときにbreakされている。 3.感想 繰り返し method の一つ、downto do -- endを使って、あるRPGのゲームの戦闘 場面で自分の攻撃のターンまでの時間を繰り返しで出来ると思う。つまり、一 度攻撃したら、一定時間たたないと次の攻撃ができないということだ。 4.参考文献 http://roy.e.koeki-u.ac.jp/~madoka/2011/r2/06/ 西村まどか先生 基礎プログラミング II 第 6 回 「目的に応じて使ってみよう」 #作成したプログラミングを添付します。