« com Master★★★2006(過去問)をやってみた | トップページ | com Master★★★過去問 2005 12月期をやってみた »

2007年11月 7日 (水)

「すぐわかるPerl」3.2 3分裂以上したい場合のelsif

■3つ以上の選択肢の場合
・ある数を3分割した場合のあまりを求めるプログラム

#! C:\Perl\bin\perl -w
# mod3 -- 奇数か偶数かを調べる

$n = 6; #奇数か偶数かを判定する数をここで設定
$amari = $n % 3;
if ($amari==0){
print "zero ";
} elsif ($amari==1){
print "ichi ";
} else {
print "ni ";
}
print "desu\n";

実行結果
C:\Documents and Settings\sironekotoro\デスクトップ>perl perlsample
zero desu

elsif:上のif分が偽、かつelsifの後ろの条件が真の場合、それに続くブロックを実行する。

■ifだけで記述する方法
if文の中のif文に入れている。これをネスト、入れ子という。

#! C:\Perl\bin\perl -w
# mod3 -- 奇数か偶数かを調べる

$n = 5; #奇数か偶数かを判定する数をここで設定
$amari = $n % 3;
if ($amari==0){
print "zero ";
} else{
if ($amari==1){
print "ichi ";
}
else {
print "ni";
}
}
print "desu\n";

実行結果
C:\Documents and Settings\sironekotoro\デスクトップ>perl perlsample
nidesu

書いてみるとこうなる。

if (条件文 1) {
条件文1が真のときに実行される命令1;
条件文1が真のときに実行される命令2;
} elseif(条件文 2){
条件文2が偽のときに実行される命令1;
条件文2が偽のときに実行される命令2;
} else{
条件が偽のときに実行される命令a;
条件が偽のときに実行される命令b;
}

■うるう年の判定
条件がたくさんある計算として、うるう年の計算が有名。

1.4で割り切れない年はうるう年ではない
2.4で割り切れるときはうるう年
3.しかし、100で割り切れる年はうるう年ではない
4.しかし、400で割り切れる年はうるう年

これを条件の範囲の大きい順に並べてみる
1>2>3>4

条件の厳しい順に並べるとこうなる
4>3>2>1

無謀ながら、ここまでを読んで自らでスクリプトを書いてみる

#! C:\Perl\bin\perl -w
# uruu -- うるう年判定

$year = 1700; #奇数か偶数かを判定する数をここで設定

$amari400=$year % 400;
$amari100=$year % 100;
$amari4=$year % 4;
if ($amari400==0){
print "$year ha uruu ";
}
elsif($amari100=0){
print "$year ha uruu de nai";
}
elsif($amari4=0){
print "$year ha uruu de nai";
}
else{
print "$year ha uruu de nai";
}
print "desu\n";

実行結果
C:\Documents and Settings\sironekotoro\デスクトップ>perl perlsample
Found = in conditional, should be == at perlsample line 15.
Found = in conditional, should be == at perlsample line 12.
1700 ha uruu de naidesu

美しくは無いけど、どうだろうか。

#! C:\Perl\bin\perl -w
# uruu -- うるう年判定(教科書)

$n = 2007;

if (($n % 400 ) == 0){
print "uruu doshi";
}elsif(($n % 100 ) == 0){
print "uruu de nai";
}elsif (($n % 4 ) == 0) {
print "uruu dosi";
}else {
print "uruu de nai";
}

教科書のを見ると、関数が一個($n)だけですんでいる。
やはり、こうでないとなぁ。

|

« com Master★★★2006(過去問)をやってみた | トップページ | com Master★★★過去問 2005 12月期をやってみた »

Perl」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/214806/16950726

この記事へのトラックバック一覧です: 「すぐわかるPerl」3.2 3分裂以上したい場合のelsif:

« com Master★★★2006(過去問)をやってみた | トップページ | com Master★★★過去問 2005 12月期をやってみた »