1.作成したプログラム(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 average = total / 8 printf("8回分のレポートの合計は%.1f点です。\n",total) printf("8回分のレポートの平均は%.1f点です。\n",average) 2.プログラム(1)の実行結果 sime{c118xxx}% ./report2a.rb [~/program] 8回分のレポートの合計得点を求めます。 1回目のレポートの得点を入力して下さい。 6 2回目のレポートの得点を入力して下さい。 6 3回目のレポートの得点を入力して下さい。 5 4回目のレポートの得点を入力して下さい。 6.7 5回目のレポートの得点を入力して下さい。 5.6 6回目のレポートの得点を入力して下さい。 7.8 7回目のレポートの得点を入力して下さい。 5 8回目のレポートの得点を入力して下さい。 8 8回分のレポートの合計は50.1点です。 8回分のレポートの平均は6.3点です。 3.プログラム(1)の説明 1と2行目:おまじない、必ず書く。 3行目:total(合計点)の初期値を0に設定。 4行目:number(レポートの回数)の初期値を0に設定。 5行目:printメソッドで""内を表示し、何が出来るプログラムか理解させる。 6行目:while文のはじまり。 numberの値が8以上になったら、繰り返しが終了するように設定。 7行目:printメソッドで""内を表示し、各回数のレポートの得点を入力して もらう。 8行目:得点を実数として受け取る。 9行目:加算代入によって、total(全体の合計点)の現在の値に score(各回数の得点)を加算する。 10行目:加算代入によって、number(レポートの回数)の現在の値に1を加算する。 11行目:while文を終了する。 12行目:レポートの平均を求めるため、total(全体の合計)割る8(レポートの 回数)をする。 13行目:printfメソッドで""内を表示し、total(全体の合計点)を小数第一位まで表 示する 14行目:printfメソッドで""内を表示し、average(平均点)を表示する。 4.作成したプログラム(2) #!/usr/koeki/bin/ruby # -*- coding: utf-8 -*- sum = 0 ninzu = 0 while line = gets sum += line.to_f ninzu += 1 end average = sum / ninzu printf("合計の値は%dです。\n",sum) printf("酒田市の人口は%d人です。\n",ninzu) printf("酒田市の平均年齢は%.1f歳です。\n",average) 5.プログラム(2)の実行結果 sime{c118xxx}% ruby report2b.rb population.csv [~/program] 合計の値は5389434です。 酒田市の人口は113343人です。 酒田市の平均年齢は47.0歳です。 6.プログラム(2)の説明 1・2行目:おまじない、必ず書く。 3行目:sum(合計の値)の初期値を0に設定。 4行目:ninzu(酒田市の人口)の初期値を0に設定。 5行目:while文のはじまり。変数lineにpopulation.csvのデータを代入する。 読みこめる間は繰り返し処理を行うように設定。 6行目:加算代入によって、sum(合計の値)に変数lineの値を代入。to_fを付け、デー タの値を実数として受け取る。 7行目:ninzu(人数)を求めるため加算代入を使って、一行(一人分の値)ずつ1 を足し算をしていく。 8行目:while文が終了。 9行目:average(平均年齢)を求めるため、sum(合計の値)割るninzu(酒田市の 人口)を計算する。 10行目:printfメソッドで""内を表示し、sum(合計の値)を表示する。 11行目:printfメソッドで""内を表示し、ninzu(酒田市の人口)を表示する。 12行目:printfメソッドで""内を表示し、average(平均年齢)を表示する。 7.感想 今回は難しい課題だと聞いて、早めにとりかかろうと思い、さっそく終わらせ ました。授業で他の人のプログラムの説明をみて、私の前回のレポートでは不 充分だと感じたので、今回はなるべく詳しく書きました。時間はかかりましたが、 理解力がより高まったので、やってよかったです。 2つ目の課題は、人口の求め方が難しかったのですが、やわらかい頭になって授 業で作成したプログラムや授業の資料をみて試行?錯誤していたら、自力でも上手くいったのでよかったです。 理解が深まると、難しいプログラミングも楽しくなって来ました。これからもっ と難しいものに出逢うと思うので、このモチベーションをたもったまま頑張り たいです。 8.参考文献 授業用ページ 9.添付ファイル