提出課題:03回目レポート
本文:

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回のレポートの合計は%5.2fです。\n",total)

2.8回のレポートの合計得点を計算します。
1回目のレポートの得点は?
  10
2回目のレポートの得点は?
  10
3回目のレポートの得点は?
  10
4回目のレポートの得点は?
  10
5回目のレポートの得点は?
  10
6回目のレポートの得点は?
  10
7回目のレポートの得点は?
  10
8回目のレポートの得点は?
  10.5
  8回のレポートの合計得点は80.50です。

3.4行目は変数totalの初期値を0に設定。
  5行目は変数numberの初期値を1に設定。
  9〜14行目はwhile-end。繰り返し表現する際に用いられる。
  9行目、繰り返し継続条件。numberが8以下の間は繰り返し処理を行うことになる。
  10行目、“”内のメッセージを表示。繰り返し継続条件内で繰り返される。%dの部分にnumberを入れ込む。繰り返すたびに値が増えていく。
  11行目、入力されたものを実数に変換してscoreに代入。
  12行目、現在のtotalの値にscoreの値を加える。(入力された値が足されていく。)
  13行目、現在のnumberの値に1を加える。(10行目で指定した、%dの部分の値が増えていく。)
  14行目、endで締める。


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

sum = 0
ninzuu = 0

while line = gets
    #p line
    sum += line.to_f
    ninzuu += 1
end
heikin = sum / ninzuu

printf("酒田市民の平均年齢は%5.1fです。\n",heikin)    

5.酒田市民の平均年齢は 47.5歳です。
 
(termで実行する際は./report2b.rb population.csvとファイル指定)

6.4行目、sumの初期値を0に設定。
  5行目、ninzuuの初期値を0に設定。
  7〜11行目はwhile-end。繰り返し表現する際に用いられる。
  7行目、繰り返し継続条件。getsでファイル内容を読み込む。ファイル内の  データ、1行を1つのデータとして読み込み、変数lineに代入。(読み込むデータがなくなると、繰り返しから抜ける。)
  8行目、lineの中にどのような値が代入されているか、表示して確認できる。最終的なプログラムの目的には不要なので、#で無効化している。
  9行目、sumにlineの値を加算代入。lineの値はto_fで実数に変換。これで、
  10行目、ninzuuの値に繰り返し1を加える。初期値0から、読み込むデータがなくなるまで繰り返し1を足しているので、データの数、すなわち酒田市の全体の人数がわかる。
  11行目、endで締める。
  12行目、前述のプログラムで、年齢の合計(sum)と人数(ninzuu)が求めてあるので、合計割る人数で年齢の平均を計算。

7.あんな大規模なデータをほんの数秒で計算処理できることに驚いた。calcで確認するときに使い方を忘れてしまっていて焦った。だんだん難しくなってきた。これからもっと難しくなると考えると震えがとまらない。

8.なし 

添付:
report2a.rb
report2b.rb
http://e-sahf.jp/class/wp-content/uploads/2023/05/1832364636645262fbb602a.ods