« .com Master★★★2007受験してきました! | トップページ | .com Master★★★2007試験結果発表!まであとちょっと。 »

2007年12月11日 (火)

「すぐわかるPerl」3.3 「かつ(and)」と「または(or)」

■■「かつ」は論理積and
1.4で割り切れない年はうるう年ではない
2.4で割り切れkるとしは売る疎し
3.しかし、100で割り切れる年はうるう年ではない
4.しかし、400で割り切れる年はうるう年

この順番で書いた場合のスクリプトは間違い。なぜなら、1000などの100で割り切れる数もうるう年と判定してしまうため。

#! C:\Perl\bin\perl -w
# uruu -- うるう年判定(間違い)

$n = 1000;

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

計算結果
C:\Documents and Settings\sironekotoro\デスクトップ>perl perlsample
uruu dosi

正しく式を構成するためには、下記のように考え直す。

1.4で割り切れない年はうるう年で無い
2.4で割り切れ、かつ100で割り切れない年はうるう年
3.100で割り切れ、かつ400で割り切れない年はうるう年でない
4.1~3いずれにも当てはまらないのはうるう年

「かつ」=二つ以上の条件が両方成立する場合。論理積。

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

$n = 2004;

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

C:\Documents and Settings\sironekotoro\デスクトップ>perl perlsample
uruu dosi

「and」は == や != よりもゆるく結合するため、and以外の演算子を評価してから結合する。

■「または」は論理和or
うるう年の条件を更にまとめる。
1.「4で割れない年」または「100で割り切れ、かつ400で割り切れない年」はうるう年ではない。
2.1の条件に当てはまらない年はうるう年

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

andはorよりも強く結合する。上記の式は
if(条件1) or ((条件2)and(条件3))

if ((条件A) and (条件B) or (条件C)){
命令;
}

条件A条件B条件C命令
実行される
× 実行される
× 実行される
× × 実行されない
× × 実行されない
× × 実行される
× × × 実行されない

まず、「A かつ B」という複合条件が成り立つかどうか、その後に「A かつ B」と「C」のどちらか一方、または両方が成り立つかどうかを考える。

and回路のor結合
if ((条件A) and ((条件B) or (条件C))){
命令;
}

条件A条件B条件C命令
実行される
× 実行される
× 実行される
× × 実行されない
× × 実行されない
× × 実行されない
× × × 実行されない

この場合には、「B または C」が成り立つかどうかを先に考え、その後に「B または C」と「A」が両方成り立つかを考える。

or回路のand結合

コレは後ほど。

|

« .com Master★★★2007受験してきました! | トップページ | .com Master★★★2007試験結果発表!まであとちょっと。 »

Perl」カテゴリの記事

コメント

コメントを書く



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


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



トラックバック

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

この記事へのトラックバック一覧です: 「すぐわかるPerl」3.3 「かつ(and)」と「または(or)」:

« .com Master★★★2007受験してきました! | トップページ | .com Master★★★2007試験結果発表!まであとちょっと。 »