< 作成したプログラム(1) >


#!/usr/koeki/bin/ruby
# -*- coding: utf-8 -*-

total = 0
number = 1

print"8回分のレポートの合計得点を求めます。\n"

while number <= 8
   printf("%d回目のレポートの得点は?\n", number)
   score = gets.chomp!.to_f
   total += score
   number += 1
end
printf("8回のテストの合計は%.1fです。\n",total)




< プログラム(1)の実行結果 >


sime{c115xxx}% ./report2a.rb                                        [~/program]
8回分のレポートの合計得点を求めます。
1回目のレポートの得点は?
7.5
2回目のレポートの得点は?
7
3回目のレポートの得点は?
7
4回目のレポートの得点は?
7
5回目のレポートの得点は?
7.5
6回目のレポートの得点は?
7.5
7回目のレポートの得点は?
7
8回目のレポートの得点は?
7
8回のテストの合計は57.5です。


< プログラム(1)の説明 >


8回分のレポートの合計点数が知りたいので、numberの初めの値を1、繰り返し継続
条件をnumber <= 8とし、繰り返しを継続する条件whileとendを使う。


whileとendの中には以下の繰り返し行う処理を入力する。


   printf("%d回目のレポートの得点は?\n", number)
   score = gets.chomp!.to_f
   total += score
   number += 1


・上段2つについて

 getsメソッドにchomp!メソッドをつけ、バックスラッシュエヌを取り除く。そ
 の後、to_fメソッドをつけて、文字列を実数に変換する。よって、小数点以下
 を含む数字を表示できる。


・下段2つについて

代入演算子「+=」を使うことで、回数が加算されるとともに、合計に点数が加算
される。


・printf("8回のテストの合計は%.1fです。\n",total)

テストの合計は小数点が含まれるので%fにする。小数点第1位までにすると%.1f
となる。





< 作成したプログラム(2) >


#!/usr/koeki/bin/ruby
# -*- coding: utf-8 -*-

print"平成22年1月末日時点での酒田市民の年齢を調べます。\n"

goukei=0
ninzu=1

while
  line = gets
  goukei += line.to_f
  ninzu +=1
  heikin=goukei/ninzu

end

printf("平均年齢は%3.1f歳です。\n",heikin)





< プログラム(2)の実行結果 >


sime{c115xxx}% ./report2b.rb population.csv                         [~/program]
平成22年1月末日時点での酒田市民の年齢を調べます。
平均年齢は47.5歳です。





< プログラム(2)の説明 >


前提:平均年齢を調べるためには市民の年齢の合計と、全市民の人数が必要。


まず、while line=getsでデータを読みこめる間、繰り返し処理を行うようにす
る。


・goukei += line.to_f

goukeiにlineの値を加算代入している。to_fを付けて文字列を実数に変換し、小
数点以下を含む数字を表示できるようにする。


・ninzu +=1

人数を最初、ninzu=1と設定したので、while-endの繰り返しから抜けると繰り返
しの回数(人数)が代入される。


・heikin=goukei/ninzu

年齢の平均(heikin)は、市民の年齢の合計(goukei)を全市民の人数(ninzu)で割
る(/)と求められる。



・printf("平均年齢は%3.1f歳です。\n",heikin)

三桁まで表示するため%3、小数点を含む数字を使うのでf、小数点第一位までと
いう縛りがあるので.1を付ける。よって%3.1fになる。





< 感想 >
説明を書きながら確かめていくことで、より理解できた。