2010年03月09日(火)
if文の注意点(3) [プログラミング]
if文の条件式の書き方には色々あります。
前回と同じ例を取り上げると、10から20までと80から90までの場合に条件が成立する場合は次のように書けました。
if((x > 10 && x < 20) || (x > 80 && x < 90))
今度は、この条件の否定、つまり、10から20までと80から90までの場合でない場合に何か条件分岐するケースを考えてみます。
このように数値の大小比較だったら、10以下か、20以上80以下か、90以上の場合ということになるので、そのまま
if(x <= 10 || (x >= 20 && x <= 80) || x >= 90)
と書くことができます。
もっと簡単に考えると、10から20までと80から90までの場合でないということで、条件の前に否定を表す「!」という記号をつけてもOKです。但し、否定する条件全体は括弧で囲んでください。
if(!((x > 10 && x < 20) || (x > 80 && x < 90)))
その他にも、各条件を否定して、&&と||を入れ替えるという方法もあります。各条件の否定というのは、x>10の否定ならx<=10という具合に不等号を逆にすることです。すると、
if((x <= 10 || x >= 20) && (x <= 80 || x >= 90))
のように書けます。これはド・モルガンの定理として知られている変形の仕方です。
条件の否定を使うとif文を書き換えることができます。例えば、
if(条件1)
{
処理1
}
else
{
処理2
処理3
処理4
}
というプログラムがあったとします。ここで条件1を否定すると、
if(!条件1)
{
処理2
処理3
処理4
}
else
{
処理1
}
と書くことができます。
どちらがいいかはケースバイケースでしょうが、条件式の意味と処理内容を対応させるように書くと、後で見てわかりやすいプログラムになると思います。
人に解読されるとまずいプログラムだと話は別ですが(^^)
Tweet
Posted at 13時41分






