第 7 回 ゼミ紹介 レポート課題 氏名:下妻 匡哉 学籍番号:c1101164 語学クラス:英語(6) コース(系):地域共創コース 1-A.レポート課題 a.仕様書 仕様書 このプログラムは、前期と後期の基礎プログラミングでやった内容から、今自分 ができる精いっぱいの技術を用いて作った。 ある社会調査で、或る駅から酒田駅までの一週間の乗客(利用者)を入力し、その 合計、平均を求めるのを補助するプログラムである。 <使い方> 指示に従って駅名や数値を入力する。あとは、プログラムが自動でやってくれます。 <使用上の注意> 1日目にいきなり Ctrl-D を入力するとエラーが発生しますのでお控えください。 <連絡先> このプログラムに対するする、感想・助言・要望・愚痴・説教などは下記まで。 c110116@e.koeki-u.ac.jp -------------------- b.プログラム (1)考えた設定 前期と後期の基礎プログラミングでやった内容から、ある社会調査で、或る 駅から酒田駅までの一週間の乗客(利用者)を入力し、その合計、平均を求め るのを補助するプログラムができる、と考えた。 (2)作成したプログラム #!/usr/koeki/bin/ruby def average(total) # defメソッドを設定 sum = 0 # 初期値を0とする for human in total # human の中に total を代入して、繰り返す。 sum += human # 合計を求める公式 end # for の end printf("乗客の合計は %d 人です\n", sum) # 入力された人数の合計を表示 sum / total.length # sam で求めた合計を total で割って平均を求める end # defメソッドの end passenger = Array.new # 配列 passenger を作る print("社会調査補助プログラム、起動\n") # 説明文 sleep 2 # 表示されるまでの時間感覚を2秒空ける print("とある地域から酒田駅までの乗客の利用を調べます\n") # 説明文 sleep 1 # 表示されるまでの時間感覚を1秒空ける STDERR.print("起点駅を入力してください:") # 起点駅の入力を促す start = gets.chomp! # 入力された変数 start を実数として持ってくる printf("%s〜酒田間の鉄道の乗客の人数を調べます\n", start) # 説明文 print("7日分の乗客の人数を教えてください。\n") # 説明文 number = 1 # 日数の変数 number の初期値を1とする ninnzuu = Array.new # 入力された変数 ninnzuu は配列とする sleep 1 # 表示されるまでの時間感覚を1秒空ける while true STDERR.printf("%d日目の乗客の人数は?(終了はCtrl-D)\n",number) # 入力を促す説明文 ninnzuu = gets # ninnzuu を持ってくる if ninnzuu == nil # もし ninnzuu に Ctrl-D が入力された場合 break # While true(繰り返し)から抜ける end # if の end number += 1 # number(日数)が1日づつ進んでいくようにする passenger << ninnzuu.to_f # 配列 passenger に ninnzuu を小数に変換して追加 if number >= 8 # もし 8日目に突入しそうな場合 break # While true(繰り返し)から抜ける end # if の end end # While true の end print("\n") # 1行空けて表示させる printf("乗客の平均は %3.1f 人です\n", average(passenger)) # def メソッドと配列 passenger を基に、平均を求め、表示する (3)もとにしたプログラム 授業で作成したプログラムや、過去のレポートなどを参考にして、変数な ど変えて作成した。 参考プログラム report4a.rb(基礎プログラミングI 第6回) def_statistic.rb(基礎プログラミングII第6回) (4)実行結果 <最後まで入力した場合> pan{c110116}% ./Max.rb [~/public_html/advertise2] 社会調査補助プログラム、起動 とある地域から酒田駅までの乗客の利用を調べます 起点駅を入力してください:余目 余目〜酒田間の鉄道の乗客の人数を調べます 7日分の乗客の人数を教えてください。 1日目の乗客の人数は?(終了はCtrl-D) 300 2日目の乗客の人数は?(終了はCtrl-D) 350 3日目の乗客の人数は?(終了はCtrl-D) 345 4日目の乗客の人数は?(終了はCtrl-D) 333 5日目の乗客の人数は?(終了はCtrl-D) 555 6日目の乗客の人数は?(終了はCtrl-D) 200 7日目の乗客の人数は?(終了はCtrl-D) 150 乗客の合計は 2233 人です 乗客の平均は 319.0 人です <途中まで入力なおかつ割り切れない計算> pan{c110116}% ./Max.rb [~/public_html/advertise2] 社会調査補助プログラム、起動 とある地域から酒田駅までの乗客の利用を調べます 起点駅を入力してください:余目 余目〜酒田間の鉄道の乗客の人数を調べます 7日分の乗客の人数を教えてください。 1日目の乗客の人数は?(終了はCtrl-D) 485 2日目の乗客の人数は?(終了はCtrl-D) 489 3日目の乗客の人数は?(終了はCtrl-D) 581 4日目の乗客の人数は?(終了はCtrl-D) 583 5日目の乗客の人数は?(終了はCtrl-D) ^D 乗客の合計は 2138 人です 乗客の平均は 534.5 人です (5)考察 計算が正しいかどうかを確かめるために、bc -lで確かめ算を行った。 <最後まで入力した場合> pan{c110116}% bc -l [~/public_html/advertise2] 300 + 350 + 345 + 333 + 555 + 200 + 150 2233 2233 / 7 319.00000000000000000000 quit <途中まで入力なおかつ割り切れない計算> pan{c110116}% bc -l [~/public_html/advertise2] 485 + 489 + 581 + 583 2138 2138 / 4 534.50000000000000000000 quit この結果、プログラムの実行結果と確かめ算の計算結果が一致した。よっ て、このプログラムは正しくて、正常に作動していると言える。 -------------------- d.広告ページ リンク先 : http://roy/~c110116/advertise2/index.html -------------------------------------------------------------------------------- 2.感想 今回、プログラムを作るに当たって、前期と後期に習ったプログラムを足して 混ぜて作ったが、結構苦労した。 事実、エンターテイメント性で見ると、前期に作った個人の最高傑作の方が 面白い。しかし、プログラムの質(内容?)は今回の方が濃いと自覚している。 ホームページ共々、とても時間がかかったがなんとか完成に漕ぎ着けたので よかった。 -------------------------------------------------------------------------------- 3.参考文献 http://roy/~madoka/2011/r2/06/r2_06_08_theme_07_aryavg.html 西村 まどか 基礎プログラミングII 第 6 回 「目的に応じて使ってみよう」 映画の星づけランキング http://roy/~madoka/2011/r2/06/r2_06_10_theme_08_while.html 西村 まどか 基礎プログラミングII 第 6 回 「目的に応じて使ってみよう」 while文で入力するとき http://roy/~naoya/ruby/6.html 神田 直弥 基礎プログラミングI 第 6 回 「配列」 自作プログラム report4a.rb(基礎プログラミングI 第6回) def_statistic.rb(基礎プログラミングII第6回) ------------------------- 東北公益文科大学 公益学部 2年 下妻 匡哉 C110116@f.koeki-u.ac.jp -------------------------