< 作成したプログラム(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になる。
< 感想 >
説明を書きながら確かめていくことで、より理解できた。