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.感想
今回はスムーズにプログラムと説明が書けたと思う。今回は事前に講義内容を
予習していたので理解しながらできたと思う。