2014年4月6日日曜日

人で無しのための計算機理論入門 その10 プログラムの基礎 その4 地味だけ ど大事な論理式


さて、とうとう10回目になったこの「 人で無しのための計算機理論入門」。一応、情報機器を使用したり、それ以上にプログラムさえ書いたりして使いこなしたりする上で、基本的な事項をきちんと押さえておくことがいかに大事かということをお伝えできたと思います。ほら、基本理論て意外に大切でしょう?ということです。
 
これ以上のことを説明し出すと、非常に専門的になりすぎて、普通の人が知っておけば便利だな、という内容から少し遠ざかってしまうことになりそうですので、一旦ここで、この「計算機理論入門」は区切りをつけさせていただきたいと思います。これまで読んでいただき本当にありがとうございました。
 
さて、その記念すべき最終回は、やはり地味に基本を押さえていきたいと思います。
 
以前、二進数とブール代数(論理式)について、「P=NP?問題の覚え書き」というブログの「 充足問題について その前に」という記事で、割合詳しく述べさせていただきました。
 
ここでは、分岐に欠かせない、論理式について、もう一度復習をしておきたいと思います。
 
ところで、「その7」でCPUは、

 0(ゼロ)フラグ:計算の結果が0の時に1、そうでないときは0
 マイナスフラグ: 計算の結果が負の時に1、そうでないときは0
 
というフラグを立てる、というお話をしました。
 
こういう風にフラグというもので計算結果を出したあと分岐をするということは何となくおわかりでしょうが、複数の条件が重なった場合の分岐はどうするか、ここで、論理式というものが必要になります。
 
たとえば、「もし、毎年4月はじめの日曜日 晴れだったら花見実行のメールをメンバーに出す だけど 雨が降ったら中止」というプログラムを書きたいとします。
 
いくつかの表し方があるとは思いますが、たとえば、
 
 ・Dを日付型の変数と定義
 ・Dに今日の日付を記憶
 ・Dが
   4月であるか?
    かつ
   最初の日曜であるか?
  をそれぞれ調べるサブルーチンを呼び出し、
  条件を満たせば、次へ進む。
  そうでなければ終了
 ・天気は晴れ? =>花見メール
  天気は雨?  =>中止メール
 
というように要素を分解して表せば計算機のプログラム的になるのは分かりますよね。(その他の天候の時は空気を読めということです。空気読むのは日本人として大事ですよ、ほんとうに。それができないから(ry)
 
ところで、上の例で条件による分岐のところで”かつ”という言葉が出てきました。少し抽象して
 
 条件Aを満たす
 かつ  
 条件Bを満たす
 
というのは条件Aと条件Bが両方満たされて初めて次に進めるわけですから、ある条件を満たしたとき立つフラグを1それ以外を0とすれば、
 
 条件Aのフラグ     0  1  0  1
 条件Bのフラグ     0  0  1  1
 AかつBをみたす?   0  0  0  1 
 
となり、かけ算したときの計算の結果と同じです。これを論理積と言い、その筋の学問の記号では∧と表します(集合の積集合の記号∩に似ていますが、0か1の2値しかないので、どちらかに決まるということで尖っていると思ってください)。
 
また、同様に「または」、というのもありますが、表にすると
 
 条件Aのフラグ     0  1  0  1
 条件Bのフラグ     0  0  1  1
 AまたはBをみたす?  0  1  1  1
 
となり、かけ算したとき計算の結果と同じです。これを論理積と言い、その筋の学問の記号では∨と表します(∧と同様に集合の和集合の記号∪に似ていますが、はやり、論理式では0か1の2値しかないので、どちらかに決まるということで尖っているわけです)。
 
他に、もちろん、否定(記号:¬)と言うものもありますが、これは
 
 条件Aのフラグ     0  1
 条件Aの否定      1  0
 
と、わかりやすいです。
 
こういう数式を扱う学問にブール代数というのがあるのですが、言語の中には0をFalse、1をTureと表現する、ブーリアン型というのがあります。これはブール代数からきているわけですね。
 
だから、プログラム言語によっては、分岐の条件の部分で0以外の値にすればとすれば常に真と判断するという言語もありまして、慣れないととわかりにくいバグになりますから、気をつけてくださいね。
 
以上です。
 
最後まで地味なこの講座にお付き合いいただきまして本当にありがとうございました。まだ、葉桜の咲くこの時期にこうして一つ書き物を終了させることができたことを本当にうれしく存じます。
 
つたない講座でしたが、何とか終わらせることができましたのはみなさまのご声援と叱咤激励の賜であり、繰り返しになりますが、心より感謝の意を表させて頂きます。
 
                             平成26年4月吉日

0 件のコメント:

コメントを投稿