第 6 回 目的に応じて使ってみよう レポート課題 氏名:菊池綾 学籍番号:c1100644 語学クラス:英語6 コース(系):政策マネジメント 1.筆記問題 A. alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"] の"a"は、配列の1つ目の要素なので、alphabet[0]と表せる。 ここから数えていくと、 a => 0 b => 1 c => 2 d => 3 e => 4 f => 5 g => 6 h => 7 i => 8 j => 9 k => 10 l => 11 m => 12 n => 13 o => 14 p => 15 q => 16 r => 17 s => 18 t => 19 u => 20 v => 21 w => 22 x => 23 y => 24 z => 25 以上より、alphabet[18]は "s" となる。 alphabet[40]は、配列に含まれない値を指しているため "nil(空)" を返す。 2.プログラム問題 A. i.考えた設定 テストの点数を入力し、その平均を求める。 ii.作ったプログラム def_statistic.rb #!/usr/koeki/bin/ruby def average(score) #関数を設定。averageは平均。 sum = 0.0 #合計値は小数点第一位まで四捨五入して表示。 for points in score #forは繰り返しメソッド。変数pointsに入力されたscoreの値を入れる動作を繰り返す。 sum += points #合計(sum)にscoreの値が代入されたpointsの値を加算。 end #forのend sum / score.length #計算式。.lengthはscoreに代入された値の数を返すメソッド。 end #defのend student = Array.new #変数studentを配列とする宣言。 i = 0 #変数iの初期値を0とする。 line = 0 #変数lineの初期値を0とする。 print"※ 入力を終了して結果を表示するときは Ctrl-d を入力\n\n" #コメントを表示。 while true #while trueは繰り返しメソッド。 print"テストの得点を入力: " #コメントを表示。 line = gets #変数lineに入力した値を代入。 # p i #確認のため配列の中身(繰り返しの数)を表示。 if line == nil #空白(今回はC-d)を入力したとき、 break #繰り返しから抜ける。 end #ifのend student << line.to_i #配列studentの一番最後の要素としてlineに代入された値を足していく。 #to_iは値を整数に変換。 student[i] = line.to_i # # p student #確認のため配列の中身(入力された値)を表示。 i += 1 #変数iに1加算する。 end #whileのend printf("\n 平均点は %3.1fです。\n",average(student)) #結果の表示。 #defでつくったaverageの計算式にstudentの値を代入して計算、 #実数値で小数点第一位まで表示させる。 iii.変更点 特になし。 iv.実行結果 pan{KIKUCHI Aya}% ./def_statistic.rb [~/Ruby] ※ 入力を終了して結果を表示するときは Ctrl-d を入力 テストの得点を入力: 50 テストの得点を入力: 60 テストの得点を入力: 40 テストの得点を入力: 70 テストの得点を入力: 80 テストの得点を入力: ^D 平均点は 60.0です。 v.考察 C-dで終われているため、繰り返し部分は正しいと思われる。 計算結果が正しいか確かめるために、ktermでbc -lを実行。 pan{c110064}% bc -l [~/Ruby] (50+60+40+70+80)/5 60.00000000000000000000 答えが合っているので正しく計算できている。 3.感想 休んだ講義だったため、講評に載せられていた友達のレポートを参考にした。 簡単なプログラムだが、計算式を作ることで自分の手で計算する手間が省けると いうことが分かった。 defを使えば値がもっと大きな数の場合も自動で計算できるが、式をつくる際に は、なるべく手順が少ない計算にする必要があると思った。 4.参考文献など 齋藤陽香さんのレポート http://roy/~madoka/2011/r2/06/rpt/c110088.txt 第6回 目的に応じて使ってみよう 西村まどか http://roy/~madoka/2011/r2/06/