情報科学概論
2001.5.8の復習課題 解答例およびコメント
1868年以降2001年までの西暦と月を指定すると元号に直すスクリプトを作成せよ。ただし、ターミナルのコマンドラインから年号と月を入力する方法はまだ学習していないのでスクリプト上に変数としてあらかじめ記述しておくこと。例えば、スクリプト上に
year = 1958
と言うように定義されていたとすると以下の例のように
$ ruby task5-8.rb
のように表示されるものである。そのような出力形式を行うためには教科書のp.23にあるprintを使う必要があるので予習が必要である。また、主に使用するのはif構文となる。初めに年を判断して元号を決めるが、元号切り替わりの年は月まで含めた判断をする必要があるため、多重の構成となる。(endの使い方に注意するのを忘れずに。)いきなりではちょっと難しいけど挑戦してみよう。なお、以下のような元号切り替えを使うこととする。
この例題は、ただひたすらifによる条件判定、printによる表示、の繰り返しだけを行うものであったので、中身は単純であるがどれだけ正確にスクリプトを書けるか、を問うものであった。その結果、元号の切り替え年を正確に入れていない、print文の中身が正確でない、という理由から不合格としたものが多かった。細かいところにまで注意が行き届くかどうかの判定に利用した。また、1968-2001年以外の西暦に関する例外処理は今回は合否判断には含めていない。
実際のスクリプト
課題
month = 9
昭和 33 年 9 月
作成したスクリプトは動作を確認したらメールの本文に記述すること。添付形式を使用しないように注意。
解答例およびコメント
year = 1868
month = 12
if year < 1912
print "明治 ", year - 1867, "年 ", month, "月\n"
else
if year == 1912
if month < 8
print "明治 ", year - 1867, "年 ", month, "月\n"
else
print "大正 ", year - 1911, "年 ", month, "月\n"
end
else
if year < 1926
print "大正 ", year - 1911, "年 ", month, "月\n"
else
if year == 1926
if month < 12
print "大正 ", year - 1911, "年 ", month, "月\n"
else
print "昭和 ", year - 1925, "年 ", month, "月\n"
end
else
if year < 1989
print "昭和 ", year - 1925, "年 ", month, "月\n"
else
print "平成 ", year - 1988, "年 ", month, "月\n"
end
end
end
end
end
アルゴリズムとしては以下のようなものを採用している。
解答の案内ページに戻る