新しく発言する  EXIT  インデックスへ

論理演算や集合演算の計算して、その結果を...


  論理演算や集合演算の計算して、その結果を真理値表やベン図で表す 山中和義 2008/03/08 14:38:52  (修正1回)
  つづき(真理値表、ベン図) 山中和義 2008/03/08 14:41:15 
  │└つづき(式の評価eval) 山中和義 2008/03/08 14:43:25  (修正1回)
  │ └つづき 山中和義 2008/03/08 14:44:12  (修正1回)
  │  └つづき 山中和義 2008/03/08 14:44:53 
  │   └つづき(メイン) 山中和義 2008/03/08 14:46:11  (修正1回)
  真理値表(truthtable)から論理式(論理関... 山中和義 2008/03/10 10:55:33 
Re: 論理演算や集合演算の計算して、その結果を真理値表やベン図で表す  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/03/10 10:55:33
真理値表(truth table)から論理式(論理関数f)をつくる

!※論理式を真理値表で表現する

LET N=3 !変数の数

!真理値表
! f A,B,C
DATA 0 !0,0,0=0 ※2進法とみなす順
DATA 0 !0,0,1=1
DATA 0 !0,1,0=2
DATA 1 !0,1,1=3
DATA 0 !1,0,0=4
DATA 1 !1,0,1=5
DATA 1 !1,1,0=6
DATA 1 !1,1,1=7

!f(A,B,C)=A'BC+AB'C+ABC'+ABC=AB+BC+CA



!主加法標準形に直す(シャノンの展開定理)

DIM T(2^N) !論理関数f
MAT READ T !f=T(abc)

CALL BooleanDisplayExpression(N,T) !f=Σm(3,5,6,7)
CALL BooleanDisplayExpression2(N,T) !f=ΠM(0,1,2,4)



!補助ルーチン
DEF Bit(x,m)=MOD(INT(x/2^m),2) !mビット目を得る ※正の整数


!表示ルーチン
SUB BooleanDisplayExpression(N,T()) !論理式の表示(主加法標準形)
FOR i=0 TO 2^N-1
IF T(i+1)=1 THEN
CALL BooleanDisplayTerm(N,i,"") !その他の記号 *・・∩∧&
IF i<2^N-1 THEN PRINT " + ";
END IF
NEXT i
PRINT
END SUB
SUB BooleanDisplayTerm(n,v, op$) !項の表示
FOR j=1 TO N !A,B,C,…の文字をそれぞれ1回ずつ含む ※'は否定
!!!IF Bit(v,N-j)=0 THEN PRINT "¬"; !その他の記号 〜 ̄!
PRINT CHR$(j+ORD("A")-1);
IF Bit(v,N-j)=0 THEN PRINT "'";
IF j<N THEN PRINT op$; !演算子
NEXT j
END SUB

SUB BooleanDisplayExpression2(N,T()) !論理式の表示(主乗法標準形)
FOR i=0 TO 2^N-1
IF T(i+1)=0 THEN
PRINT "( ";
CALL BooleanDisplayTerm(N,i,"+") !∪∨|
PRINT " )";
END IF
NEXT i
PRINT
END SUB

END
  !真理値表から多変数多項式をつくる 山中和義 2008/04/08 14:22:27 

 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。