SSブログ

今更、判定文で迷っている。 [プログラミング]

今、if文の中の判定文で迷っていた。元々判定をしているところに、!で否定を加えて判定している。

if ( !A ){
  処理1;
}
else
{
  処理2;
}

こんな感じ。

単体でやるならまだ分かるんだけど、その後に || で追加判定させなければならなかった。元のところが否定でひっくり返しているんだから、他の判定文もひっくり返して使えばいいんじゃ?、と普通に考えたのだが、追加条件が複数で訳がわからなくなってしまった。動作もうまくいっていない。


しょうがないからif文判定の元々の中身を!で否定せずに、その後のelseで分けられているところをひっくり返した。
if ( A || "追加の判定文"){
  処理2;
}
else
{
  処理1;
}


そうしたら論理的に非常にすっきりして、すんなり条件を足すことができた。そんなのわかんないのお前だけだよと言われそうだが、わざわざ条件を否定して、分岐実行させるところを逆にする理由も強い意味がない限りは使わない方がわかりやすい気がするんだけどなぁ。否定することによって、わかりやすい時もたくさんあるんだけど、後で条件を足すときには否定でない方がわかりやすい。

そしてAの判定文が範囲だったりすると、それを否定して逆にしちゃうと一筋縄に行かない気がする。実際上手くいかなかった。単純に変数の単一判定(イコール0とか)であれば、否定しても他のも否定で裏返せば何とかなる気はするんだけど、それをつなぐ演算子をひっくり返さないといけないとか直感的に非常にわかりづらい状態にはなる。複数の条件を足さないといけなかったりすると、もはや記述上上手くいくやり方を書くぐらいしかできなくなってしまう。

結局、true,falseの話なんだけど、ドモルガンの法則とかあんまり理解できなかったしね。今でも使い方がよくわかんないよ。プログラミングにはあんがい数学の知識はいらないところは多いけど、ある程度行くと知ってないと話にならない部分が出てくるのは公然の秘密w。機械学習には使うだけならそこまで難しい数学の知識はいらないけど、作ろうしたり細かいことをしようとするとやっぱりそこそこ必要になってきたり突き当ったりするわけで。

でも、画像扱う時にjpegのフーリエ変換がわからなくても使えるしね。まぁそういうもんだよね。プログラミングは内部処理がわかんなくても、APIさえわかっていれば使えるところがいいよね。

コメント(0) 
共通テーマ:パソコン・インターネット

コメント 0