| |
|
|
p.specht
| dans qui de George Boole begründeten zweiwertigen Logik gibt es seulement véritable et faux. quoi mais, si on es simple encore pas entscheiden peux, mais soweit weiterarbeiten soll, comme plan sur Grund qui Datenlage bereits possible ist? ensuite nécessaire on statt deux plan trois Werte: Hinzu venez qui Wert "M" (engl. Maybe: peut-être, möglicherweise, kann_sein/wäre_erlaubt/weiss_nicht").
une Rosettacode-devoir [...] fordert eh bien qui geeignete réalisation cette dreiwertigen Logikfunktionen, qui je im nachfolgenden 3NOT(), 3AND(), 3OU(), 3XOR(), 3Equ() pour qui Gleichheitsfunktion et 3Imp() pour qui Implikationsfunktion (si a ensuite b) genannt habe. vous liegen eh bien dans XProfan-11 avant, wobei Je l' dans qui Literatur verwendeten Wert "M" ou bien "?" par "2" angenähert habe. 0 bleibt weiterhin "false" et 1 weiterhin "true/véritable). Wert wurde aussi sur qui Logiknormierung gelegt: un Funktionswert 0 ou bien 2 bleibt conservé, chacun autre Wert wird trop logisch véritable = 1 normiert. qui Funktionen harren eh bien einer vernünftigen Anwendung.
Windowtitle "Ternäre (Dreiwertige) Logikfunktionen"
Cls
proc 3val :parameters a%
cas a%=0:return 0
cas a%=2:return 2
return 1
endproc
proc 3not :parameters a%
cas a%=2:return 2
return not(en%)
endproc
proc 3and :parameters a%,b%
si a%=0
return 0
elseif a%=2
cas b%=0:return 0
return 2
d'autre
return 3val(b%)
endif
endproc
proc 3or :parameters a%,b%
si a%=0
return 3val(b%)
elseif a%=2
cas (b%=0) or (b%=2):return 2
return 1
d'autre
return 1
endif
endproc
proc 3Equ :parameters a%,b%
si a%=0
return 3not(b%)
elseif a%=2
return 2
d'autre
return 3val(b%)
endif
endproc
proc 3xor :parameters a%,b%
si a%=0
return 3val(b%)
elseif a%=2
return 2
d'autre
return 3not(b%)
endif
endproc
proc 3Imp :parameters a%,b%
si a%=0:return 1
elseif a%=2
cas b%=1:return 1
return 2
d'autre
return 3val(b%)
endif
endproc
Test:
appendmenubar 100," 0 = faux (F), 1 = vrai (T), ?=2: "+\
"weiss-pas/möglicherweise/erlaubt/kann_sein/peut-être (M, Maybe)"
declare a%,b%
imprimer
imprimer " -------------------------------"
imprimer " a b not_a and or xor <=> ==>"
whileloop 0,4,2:a%=3val(&Boucle)
whileloop 0,4,2:b%=3val(&Boucle)
imprimer " -------------------------------"
imprimer " |",a%,b%,"|",3Not(en%),"|",3and(a%,b%),"|",3or(a%,b%),"|",
imprimer 3xor(a%,b%),"|",3Equ(a%,b%),"|",3Imp(a%,b%),"|"
endwhile
endwhile
imprimer " -------------------------------"
beep
waitinput
Fin
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 29.05.2021 ▲ |
|
|
|