条件の複合化の例題として,うるう年の判定をやってみましょう.
ある西暦y年がうるう年であることは,グレゴリオ暦では次の規則で決められています.
こんな訳で,西暦2000年は,めでたくうるう年になることになります.
地球が太陽のまわりを1回まわる時間は,約365.2422日です.うるう年,より正確にはうるう日(leap day)はこの調節をしています. 4年に1日を追加すると,平均が365.25日になります. これに加えて100年に1日へらすと平均は365.24日になります. さらに400年に1日追加すると平均が365.2425日になります. これで,3000年使ってもやっと1日だけ狂うだけの規則となりました.
この規則の要素は順に
と書けます.これを組み合わせてゆきましょう.まず,4の倍数で100の倍数ではない値は
(y % 4 == 0) && (y % 100 != 0)
と書けます.100に関する判定は!(y % 100 == 0) としても同じです.
400に関する判定は,上記の判定ではダメだけれどもというぐあいに例外的につけ加えるものなので,またはで追加します.
(y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)
表し方はこの他にも存在しますが,これが一番わかりやすいでしょう.
26.1.4.8 またはと否定 | 26.1.4.9 うるう年 | 26.1.4.10 判断の複合化 | ||
2009年度版に向けて現在作業中です.
このページに関してお気づきの点がありましたら
コメント投稿システムまでお願いします.
|
Sat, 01 Jan 2005 20:15:58 JST (1672d) |