新しく発言する  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回)
Re: つづき(式の評価eval)  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/03/08 14:44:12 ** この記事は1回修正されてます
つづき


FUNCTION factor(s$) !因子
LET CntOfNOT=0 !補演算子の数

LET t$=token$(s$)
IF t$="¬" OR t$="〜" OR t$="!" THEN !補演算なら
LET p=p+1 !eat it

LET CntOfNOT=1

LET t$=token$(s$)
DO WHILE t$="¬" OR t$="〜" OR t$="!" !補演算が続けば
LET p=p+1 !eat it

LET CntOfNOT=CntOfNOT+1

LET t$=token$(s$) !次へ
LOOP
END IF
CALL push(stack_Eval,sp_Eval, CntOfNOT) !save it


LET t$=token$(s$)
IF t$="(" THEN !括弧なら
LET p=p+1 !eat it

LET v=propositional_expression(s$) !命題
!LET v=boolean_expression(s$) !式

CALL CheckToken(s$,")") !閉じ括弧か確認する

ELSE
LET v=num(s$) !数を得る
END IF


CALL pop(stack_Eval,sp_Eval, CntOfNOT) !restore it
LET t$=token$(s$)
IF t$="'" THEN !補演算なら
LET p=p+1 !eat it

LET CntOfNOT=CntOfNOT+1

LET t$=token$(s$)
DO WHILE t$="'" !補演算が続けば
LET p=p+1 !eat it

LET CntOfNOT=CntOfNOT+1

LET t$=token$(s$) !次へ
LOOP
END IF

IF MOD(CntOfNOT,2)=1 THEN LET v=BitNOT(v) !v=!v


LET factor=v
END FUNCTION

FUNCTION num(s$) !数
LET c=func(s$)
IF c>=0 THEN !組込み関数なら
LET v=cTBL(c)

ELSE
LET c=var(s$)
IF c>0 THEN !変数なら
LET v=vTBL(c) !1=A,2=B,…,26=Z

ELSE
LET c=digit(s$)
IF c>=0 THEN !数値なら
LET v=cTBL(c)
ELSE
CALL Error("不正な文字です。")
END IF

END IF

END IF

LET num=v
END FUNCTION

FUNCTION func(s$) !組込み関数
LET t$=token$(s$)
IF t$="φ" THEN !空集合
LET p=p+1 !eat it
LET func=0
ELSEIF t$="Ω" THEN !普遍集合
LET p=p+1 !eat it
LET func=1
ELSE
LET func=-1
END IF
END FUNCTION

FUNCTION var(s$) !変数
LET t$=UCASE$(token$(s$)) !大文字へ
IF "A"<=t$ AND t$<="Z" THEN
LET p=p+1 !eat it
LET var=ORD(t$)-ORD("@") !オフセット @=0,A=1,B=2,…,Z=26
ELSE
LET var=-1
END IF
END FUNCTION

FUNCTION digit(s$) !1文字の数字(2進法)
LET t$=token$(s$)
IF "0"<=t$ AND t$<="1" THEN
LET p=p+1 !eat it
LET digit=VAL(t$) !値
ELSE
LET digit=-1
END IF
END FUNCTION
  │  └つづき 山中和義 2008/03/08 14:44:53 
  │   └つづき(メイン) 山中和義 2008/03/08 14:46:11  (修正1回)
  真理値表(truthtable)から論理式(論理関... 山中和義 2008/03/10 10:55:33 
  !真理値表から多変数多項式をつくる 山中和義 2008/04/08 14:22:27 

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