第 6 回 目的に応じて使ってみよう レポート課題 氏名:五十嵐兼一 学籍番号:c1100153 語学クラス:英語2 コース(系):社会福祉コース 1.筆記問題 A. alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"] 配列は 0 からなので、a から順に 0,1,2,3… と数えていくと、 alphabet = [18] は s となる。 配列は 25番目までで 40番目は配列の中に無いので、alphabet[40] = nil とな る。 2.プログラム問題 A.テストの平均点を求める。 ◯作成したプログラム #!/usr/koeki/bin/ruby def avg(score) # メソッドの設定 sum = 0.0 for test in score sum += test # 合計を求める式 end # for に対する end sum / score.length # 平均を求める式 end # def に対する end points = Array.new # 配列をつくる print("テストの平均を求めます\n") while true # 繰り返し STDERR.print("テストの点を入力して下さい(終了は Ctrl-d) : ") line = gets if line == nil break end # if に対する end points << line.to_i # 上か下かどちらかでよい end # while に対する end printf("\n 平均点は %3.1f 点です\n", avg(points)) ◯実行結果 pan{c110015}% ./def_statistic.rb [~/Ruby] テストの平均を求めます テストの点を入力して下さい(終了は Ctrl-d) : 45 テストの点を入力して下さい(終了は Ctrl-d) : 68 テストの点を入力して下さい(終了は Ctrl-d) : ^D 平均点は 56.5 点です ◯考察 今回は授業中に作成した ary_movie.rb を使用した。 bc -l で計算を行った結果と、プログラムの実行結果が同じになったため、この プログラムは正しいといえる。 ◯確かめ算 pan{c110015}% bc -l [~/Ruby] (45 + 68) / 2 56.50000000000000000000 quit B.ブタの育成ゲームを作成した。 ◯作成したプログラム #!/usr/koeki/bin/ruby def cry(ct) # メソッドの設定 ct.times do print("ぶひー!!\t\n") end print("\n") sleep(0.5) end # def に対する end def care(name) # メソッドの設定 STDERR.printf("%sを世話しよう: \n", name) STDERR.print("[1]\tエサをあげる?\n") STDERR.print("[2]\tお風呂に入れる?\n") STDERR.print("[3]\t一緒に寝る?\n") end def taiju(days,answer) # メソッドの設定 x = 2 + days - answer printf("%d日目\n",days) x.to_i # x の値を返す end # def に対する end printf("捨てブタを拾った!!\n") STDERR.printf("どんな名前にするの?") name = gets.chomp print("\n") if name == "" name = "ぽーく" # name に何も入力されない場合は ぽーく が代入される end # if に対する end printf("「%s」 という名前になった。\n",name) weight = 1 # 体重は 1 から始まるので 1 を代入 day = 0 # 育てた日付は 0 日目から始まるので 0 を代入 printf("体重が増えるとおいしくなるよ!!\n") while true # 繰り返し care(name) # care のメソッドを呼び出す ans = gets.chomp.to_i weight += taiju(day,ans) # taiju メソッドを呼び出してプラスする printf("体重 %d kg\n", weight) if weight > 6 break end cry(ans) # cry メソッドを呼び出す day += 1 # 一日経過するごとに 1 増加する end # while に対する end cry(weight) # 最終段階の体重が鳴き声になる printf("「%s」 は", name) if weight > 10 # weight が 10 より上だったら print("まるまる太った。 いただきまーす!!\n") elsif weight <= 8 # weight が 10 より下で 8 より上だったら print("もう少し太らせる必要があるようだ…\n") else # それ以外だったら printf("逃げ出した…。 %s!!\n",name) end ◯実行結果 pan{c110015}% ./def_rollplaying_a.rb [~/Ruby] 捨てブタを拾った!! どんな名前にするの?ぶった 「ぶった」 という名前になった。 体重が増えるとおいしくなるよ!! ぶったを世話しよう: [1] エサをあげる? [2] お風呂に入れる? [3] 一緒に寝る? 1 0日目 体重 3 kg ぶひー!! ぶったを世話しよう: [1] エサをあげる? [2] お風呂に入れる? [3] 一緒に寝る? 2 1日目 体重 5 kg ぶひー!! ぶひー!! ぶったを世話しよう: [1] エサをあげる? [2] お風呂に入れる? [3] 一緒に寝る? 2 2日目 体重 8 kg ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! 「ぶった」 はもう少し太らせる必要があるようだ… ----------------------------------------------------------------------- pan{c110015}% ./def_rollplaying_a.rb [~/Ruby] 捨てブタを拾った!! どんな名前にするの? 「ぽーく」 という名前になった。 体重が増えるとおいしくなるよ!! ぽーくを世話しよう: [1] エサをあげる? [2] お風呂に入れる? [3] 一緒に寝る? 3 0日目 体重 1 kg ぶひー!! ぶひー!! ぶひー!! ぽーくを世話しよう: [1] エサをあげる? [2] お風呂に入れる? [3] 一緒に寝る? 3 1日目 体重 2 kg ぶひー!! ぶひー!! ぶひー!! ぽーくを世話しよう: [1] エサをあげる? [2] お風呂に入れる? [3] 一緒に寝る? 1 2日目 体重 6 kg ぶひー!! ぽーくを世話しよう: [1] エサをあげる? [2] お風呂に入れる? [3] 一緒に寝る? 2 3日目 体重 10 kg ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! 「ぽーく」 は逃げ出した…。 ぽーく!! ------------------------------------------------------------------------ pan{c110015}% ./def_rollplaying_a.rb [~/Ruby] 捨てブタを拾った!! どんな名前にするの? 「ぽーく」 という名前になった。 体重が増えるとおいしくなるよ!! ぽーくを世話しよう: [1] エサをあげる? [2] お風呂に入れる? [3] 一緒に寝る? 3 0日目 体重 0 kg ぶひー!! ぶひー!! ぶひー!! ぽーくを世話しよう: [1] エサをあげる? [2] お風呂に入れる? [3] 一緒に寝る? 3 1日目 体重 0 kg ぶひー!! ぶひー!! ぶひー!! ぽーくを世話しよう: [1] エサをあげる? [2] お風呂に入れる? [3] 一緒に寝る? 2 2日目 体重 2 kg ぶひー!! ぶひー!! ぽーくを世話しよう: [1] エサをあげる? [2] お風呂に入れる? [3] 一緒に寝る? 1 3日目 体重 6 kg ぶひー!! ぽーくを世話しよう: [1] エサをあげる? [2] お風呂に入れる? [3] 一緒に寝る? 1 4日目 体重 11 kg ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! ぶひー!! 「ぽーく」 はまるまる太った。 いただきまーす!! ◯考察 それぞれのコメントが体重に合わせて出ているので、このプログラムは正しいと いえる。 3.感想 RPGゲームは、キャラクターのセリフや行動などによってステータスが変化した りするので method の考え方を利用していると思う。 4.参考文献 西村まどか 基礎プログラミング II 第 6 回 (目的に応じて使ってみよう) 「映画の星づけランキング」 http://roy/~madoka/2011/r2/06/r2_06_08_theme_07_aryavg.html 西村まどか 基礎プログラミング II 第 6 回 (目的に応じて使ってみよう) 「るびおっち」 http://roy/~madoka/2011/r2/06/r2_06_11_theme_09_rubiocci.html