1.1番を実施 2.作成したプログラム #!/usr/koeki/bin/ruby # -*- coding: utf-8 -*- syusseki = 0 tensu = 0 sum = 0 while line = gets if /\S\d+\S\s+(\d+)\s+(\S+)/ =~ line syusseki += $1.to_i tensu += $2.to_f end end sum += syusseki + tensu print"+----------+\n" printf("出席点 %d点\n",syusseki) printf("合計 %2.1f点\n",sum) if sum >= 90 print"評価 秀\n" elsif sum >= 80 print"評価 優\n" elsif sum >= 70 print"評価 良\n" elsif sum >= 60 print"評価 可\n" else print"評価 不可\n" end print"+----------+\n" 3.プログラムの実行結果 +----------+ 出席点 21点 合計 69.0点 評価 可 +----------+ 4.プログラムの説明 7行目の\Sは空白以外にマッチ、\d+は1つ以上の数字にマッチ、\Sは空白以外に マッチ、\s+は1つ以上の空白にマッチ、(\d+)は1つ以上の数字にマッチ、\s+は 1つ以上の空白にマッチ、(\S+)は1つ以上の空白以外にマッチを表す。最初の/ と最後の/は正規表現であることを示している。 =~は正規表現にマッチするという比較演算子、lineは変数でファイルから読みこ んだ行が入っている。 8行目の$1は後方参照を表し、$を使うことで7行目の()でくくられた部分にマッ チした部位を()の順番で数字の形で取り出すことができる。この行はto_iなので 値の型は整数で、9行目はto_fなので値の型は実数となる。 5.感想 今回はスムーズにプログラムと説明が書けたと思う。今回は事前に講義内容を 予習していたので理解しながらできたと思う。