Hatena::Groupperl

perl初心者

 | 

2008-12-07

うるう年かどうかチェックする。

| 19:30

練習問題として、任意の年($year)がうるう年かどうかチェックするというのを考えてみました。

うるう年の判定条件は、

4で割り切れる年はうるう年

しかし、100で割り切れる年はうるう年ではない

しかし、400で割り切れる年はうるう年

最初に書いたスクリプト

use strict;
use warnings;

my $year = "2008"; #ここに調べたい年を入れる
if ($year % 4 != 0) {
	print "$year年はうるう年ではない\n";
} elsif ($year % 100 == 0) {
	if ($year % 400 == 0) {
		print "$year年はうるう年\n";
	} else {
		print "$year年はうるう年ではない\n";
	}
} else {
	print "$year年はうるう年\n";
}

わかりにくいです。条件が複数ある場合は、一番厳しい条件から書いたほうが良いとのことで、この場合は、400で割り切れるかどうかを最初に判定すると、

use strict;
use warnings;

my $year = "2008"; #ここに調べたい年を入れる
if ($year % 400 == 0) {
	print "$year年はうるう年\n";
} elsif ($year % 100 == 0) {
	print "$year年はうるう年ではない\n";
} elsif ($year % 4 == 0) {
	print "$year年はうるう年\n";
} else {
	print "$year年はうるう年ではない\n";
}

こちらのほうがわかりやすくなりました。

 

ネットでみつけた、シンプルな解答

use strict;
use warnings;
 
my $year = "2008"; #ここに調べたい年を入れる
if ($year % 400 == 0 or ($year % 100 != 0 and $year % 4 == 0)) {
	print "$year年はうるう年\n";
} else {
	print "$year年はうるう年ではない\n";
}

わかりやすいです。

 

追記

トラックバックいただきました。

「うるう年かどうかチェックする」をif~elseを使わずに書いてみた - ishiducaの日記 - Hatena::Group::Perl

うるう年 - negipoのPerl日記 - Hatena::Group::Perl

ありがとうございます。

本を読んで勉強中

16:12

新版Perl言語プログラミングレッスン入門編

新版Perl言語プログラミングレッスン入門編

 

この本を読んで勉強中です。わかりやすくてよいと思います。章の終わりに練習問題があって復習できて、いいですね。

初級者向けの練習問題をもう少しやりたいと思うのですがなかなかみつからないものです。自分で問題を考えられるようになりたいです。

 

はてなスターありがとうございます。tokumuraさん。

ゲスト



トラックバック - http://perl.g.hatena.ne.jp/ukme/20081207
 |