閏年(うるうどし)かどうかを判定する
閏年の判定方法は以下のようになります。
まず、4で割り切れるかどうかを判定します。4で割り切れるということが閏年であることの必要条件です。4で割り切れなければ閏年ではありません。
閏年(うるう年)かどうかを判定するサンプルです。
use strict;
use warnings;
# 1900年は閏年でない、2000年は閏年、2003は閏年でない、2004年は閏年。
print "(1)閏年の判定を行う。\n";
my @years = (1900, 2000, 2003, 2004);
for my $year (@years) {
if (is_leap_year($year)) {
print "$year年は閏年です。\n";
}
else {
print "$year年は閏年ではありません。\n";
}
}
# 閏年を判定する関数。
sub is_leap_year {
my $year = shift;
# 4で割り切れなければ閏年ではない。
return if $year % 4;
# 100で割り切れ、かつ400で割り切れなければ
# 閏年ではない。
return if !( $year % 100 ) && ( $year % 400 );
# それ以外は閏年。
return 1;
}
閏年(うるう年)かどうかを判定する。
閏年の判定方法は以下のようになります。
まず、4で割り切れるかどうかを判定します。4で割り切れるということが閏年であることの必要条件です。4で割り切れなければ閏年ではありません。
return if $year % 4;
上記の判定で4で割り切れたものだけが残されます。サンプルの例でいうと ( 1900, 2000, 2003, 2004 ) のうち、( 1900, 2000, 2004 ) が残ります。
次に「100で割り切れてかつ400で割り切れない」という判定をします。この条件に合致するものは閏年ではありません。この条件に合致するのは1900です。
return if !( $year % 100 ) && ( $year % 400 );
上記の判定で、( 2000, 2004 )が残ります。これらが閏年です。
Perlゼミ

