「すぐわかる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)だけですんでいる。
やはり、こうでないとなぁ。
| 固定リンク
「Perl」カテゴリの記事
- 「すぐわかるPerl」 8.10 ディレクトリのリカーシブ処理(その2)(2009.02.24)
- 「すぐわかるPerl」 8.10 ディレクトリのリカーシブ処理(その1)(2009.02.23)
- 「すぐわかるPerl」 7.6 マッチした文字列と、その前後の文字列を扱う変数(2008.06.17)
- 「すぐわかるPerl」 8.9 コマンドの入出力に入出力を切り替える(2008.11.12)
- 「すぐわかるPerl」 8.8 標準入出力以外のファイルの制御(2008.10.08)









コメント