ここでMayaヘルプ「値の検証と比較を行う」を再度見直してみた。
ここの表では、
「比較演算子」には「評価」
「論理演算子」には「Trueになる条件」
という項目がそれぞれある。
これは前回の「論理演算(2)AND/OR」で少し紹介した、
Electronic Journal1671号(ブール代数とクロード・シャノン)の説明における「C」にあたる。
第1は「AND演算」です。
「A AND B = C」という数式について考えます。
これは「~かつ~」という意味になります。
論理学的な言葉でいうと、「Aが正しくかつBも正しいときだけ、Cも正しい」ということになります。
第2は「OR演算」です。
これは「~または~」という意味になります。
同じ数式について考えると、「AかBのどちらかが正しければCは正しい」ということになります。
ここであえて、この点を強調したのは、
通常、論理演算を考えるとき、AとBの結果と考える。
実は結果としてCの状態が変化したり変化しなかっりするだけで、
A,B,Cはいつもそこに存在している。
比較演算子や論理演算子を使うときに、結果Cについては頭で推測するだけで、
わざわざプログラムの中に書いたりはしない。(変数へ結果を代入することはあるかもしれない)
眼にはみえないが、存在しており、プログラムの実行には大きな影響をあたえるにもかかわらずである。
デバッグにおいて、重要なことだと思うが、
それらの演算子を使うとき、かならずその結果がTrueかFalseで存在している
ということを忘れないようにしたい。
できればちゃんとその結果を紙にでも書いて、しっかり確認することで、プログラミング作業において、
自分がその演算で今何をやっているのか、
結果がどうなるのか
をしっかり把握しておくことができる。
--------------------
「if...else」の説明にあるMelの例で考えてみる。
(ここでは変数に代入しプリント文は簡略化してある。)
---------------
$x = 20
if ($x > 10) {
print("It's greater than 10!");
}
---------------
これによりPrint文が実行されることになる。
ここで比較演算子の式に注目すると
$x > 10
は
20 > 10
である。
文章にすると「20は10より大きい」
そしてこの評価は「True」である。
それによりIF文がTrueとうことで、括弧内の
print文が実行されることになる。
もし、評価がTrueであるかどうかを明確にしないと、
いろいろなことが推測の上で考えなくてはならなくなり、
考えることが増える。
この場合は単純なのでそれほどでもないが、もっと複雑なスクリプトでは
混乱を招くことになるだろう。
0 件のコメント:
コメントを投稿