1.何番まで実施したか
  5番まで作成しました。


2.作成したプログラム
#!/usr/koeki/bin/ruby
# -*- coding: utf-8 -*-

total = 0
number = 1

print"レポートの得点を計算する。\n" 

while true 
  printf"%d回目の点数を入力して下さい(終了はexit)\n",number  
   score = gets.chomp!
   if score =="exit"
   number -= 1
   break
   end
   
   if score.to_f < 0 
   print"もう一度入力してください\n" 
   redo
   elsif score.to_f > 8
    print"得点が8点以上です。よろしいですか?(正しければy誤っていればn)\n"
    y = gets.chomp!
   if y == "y" 
   end
   if y == "n"
     redo 
    end
   end
      total += score.to_f  
 
  if number ==8
    break
  end
  number += 1
  end   
 
   
  
   
  

ave = total/number

printf("%d回分のレポートの合計は%0.1f点です。\n",number,total)
printf("平均得点は%0.1f点です。\n",ave)


3.プログラムの実行結果
sime{c115xxx}% chmod +x report3.rb                                  [~/program]
sime{c115xxx}% ./report3.rb                                         [~/program]
レポートの得点を計算する。
1回目の点数を入力して下さい(終了はexit)
9
得点が8点以上です。よろしいですか?(正しければy誤っていればn)
y
2回目の点数を入力して下さい(終了はexit)
6
3回目の点数を入力して下さい(終了はexit)
7
4回目の点数を入力して下さい(終了はexit)
5
5回目の点数を入力して下さい(終了はexit)
8
6回目の点数を入力して下さい(終了はexit)
9
得点が8点以上です。よろしいですか?(正しければy誤っていればn)
y
7回目の点数を入力して下さい(終了はexit)
5
8回目の点数を入力して下さい(終了はexit)
6
8回分のレポートの合計は55.0点です。
平均得点は6.9点です。
sime{c115xxx}%       
sime{c115xxx}% ./report3.rb                                         [~/program]
レポートの得点を計算する。
1回目の点数を入力して下さい(終了はexit)
20
得点が8点以上です。よろしいですか?(正しければy誤っていればn)
n
1回目の点数を入力して下さい(終了はexit)

2回目の点数を入力して下さい(終了はexit)

3回目の点数を入力して下さい(終了はexit)

4回目の点数を入力して下さい(終了はexit)

5回目の点数を入力して下さい(終了はexit)

6回目の点数を入力して下さい(終了はexit)

7回目の点数を入力して下さい(終了はexit)

8回目の点数を入力して下さい(終了はexit)

8回分のレポートの合計は0.0点です。
平均得点は0.0点です。


4.プログラムの説明 
1行目 #!/usr/koeki/bin/rubyはrubyインタプリタのあるディレクトリを指定している。
2行目 日本語文字コードがEUC-JPであることを示している。
4行目:レポートの合計点を記録する変数totalを指定する。
5行目:レポートの回数を記録する変数numberを指定する。
7行目:purint文で文字を表示する。
9行目:while trueでレポートの点数を入力する作業を繰り返しの対象とする。
10行目:printf文で変数numberを表示しながらレポートの得点入力をうながす文
章を表示する。
11行目:変数scoreにgets.chomp!メソッドを用いて入力されたものを変数に入れ
ていく。
12行目:if文で変数scoreに入力されたものが"exit"である場合以下の流れにそっ
と上から処理していく。(whileの中は適応されるものから上から順に処理する。)
また、==があることにとって==以下が変数と合致することでこの処理に突入する
という文である。
13行目:変数numberは元もとの数として1が代入されているため、1を減らして処
理を続ける必要がある。このプログラムでは処理の最期の方に変数numberに1を
足す文が書かれているためbreakをしようとするこのif文中の行では回数から1を
減らす処理をする。
14行目:breakでwhile-endからの繰り返しを抜ける。
15行目:ifに対してのend
17行目:if文で11行目に入力した変数scoreが0よりも小さい値の時にこの処理を
行う。
18行目:print文で文字を表示する。
19行目:redoで繰り返しの先頭(レポートの得点を入力するところ)へ戻る。
20行目:elsifで17行目のifを満たさずこの行の条件を満たす時に処理を行う2つ
めのif文である。入力した変数scoreが8よりも大きい場合この処理を行う。
21行目:print文で質問を投げかけ、次に入力する数値の選択を指示する文を表示
している。
22行目:変数yにgets.chomp!メソッドを用いて入力されたものを変数に入れ
てる。
23行目:if文で変数yの値がyで合致するときに処理される行である。
24行目:17行目に対するend
25行目:if文で変数yの値がnで合致するときに処理される行である。
26行目:redoで繰り返しの先頭(レポートの得点を入力するところ)へ戻る。
27行目:20行目に対してのend
28行目:23行目に対してのend
30行目:変数totalに11行目で入力した変数scoreを.to_fで実数として足していく。
32行目:if文で変数numberが8になったときにこの行の処理を行う。
33行目:breakで繰り返しから抜ける。32行目の条件を満たす場合に適応し、処理
される。
34行目:32行目に対してのend
35行目:変数numberに1ずつ繰り返しの毎に足していく。
36行目:while に対してのend
43行目:変数aveに平均点を求めるため、レポートの合計点数からレポートの提出
回数で割って平均点を求める計算式である。
45行目:printf文で変数numbero(レポート回数)と変数total(レポート合計点数)
を表示する。レポートの合計点数は小数点を含む可能性があるため、%0.1fとし小数点
第1位まで表示する。
46行目:printf文で変数(ave)を表示する。変数aveも小数点を含む可能性がある
ため、%0.1fとし小数点第1位まで表示する。


5.感想
今回の課題の範囲を学習する会の講義を
体調不良で休んでしまったので、講義で学ぶ内容を
TAの北條さんにお願いし、一から教えてもらいました。
前回よりも変数が増え、説明するのも難しく、
だいぶ時間がかかりましたが、なんとか完成できてよかったです。
TAの先生に助けてもらったので、自信はないのですが、
思い切って5番まで実施してみました。


6.参考文献
http://roy/~naoya/ruby/5.htmlのページを何度も見ました。
また、TAの北條さんにお願いし、
講義内容の説明、課題の説明をしてもらいました。