Deutsch
Quelltexte/ Codesnippets

Ternäre (Dreiwertige) Logikfunktionen (XProfan-11)

 

p.specht

In der von George Boole begründeten zweiwertigen Logik gibt es nur Wahr und Falsch. Was aber, wenn man es einfach noch nicht entscheiden kann, aber soweit weiterarbeiten soll, wie es eben auf Grund der Datenlage bereits möglich ist? Dann benötigt man statt zwei eben drei Werte: Hinzu kommt der Wert "M" (engl. Maybe: Vielleicht, möglicherweise, kann_sein/wäre_erlaubt/weiss_nicht").


Eine Rosettacode-Aufgabe  [...]  fordert nun die geeignete Realisierung dieser dreiwertigen Logikfunktionen, die ich im nachfolgenden 3NOT(), 3AND(), 3OR(), 3XOR(), 3Equ() für die Gleichheitsfunktion und 3Imp() für die Implikationsfunktion (Wenn a dann b) genannt habe. Sie liegen nun in XProfan-11 vor, wobei ich den in der Literatur verwendeten Wert "M" oder "?" durch "2" angenähert habe. 0 bleibt weiterhin "false" und 1 weiterhin "true/Wahr). Wert wurde auch auf die Logiknormierung gelegt: ein Funktionswert 0 oder 2 bleibt erhalten, jeder andere Wert wird zu logisch wahr = 1 normiert. Die Funktionen harren nun einer vernünftigen Anwendung.
Windowtitle "Ternäre (Dreiwertige) Logikfunktionen"
Cls

proc 3val :parameters a%

    case a%=0:return 0
    case a%=2:return 2
    return 1

endproc

proc 3not :parameters a%

    case a%=2:return 2
    return not(a%)

endproc

proc 3and :parameters a%,b%

    if a%=0

        return 0

    elseif a%=2

        case b%=0:return 0
        return 2

    else

        return 3val(b%)

    endif

endproc

proc 3or :parameters a%,b%

    if a%=0

        return 3val(b%)

    elseif a%=2

        case (b%=0) or (b%=2):return 2
        return 1

    else

        return 1

    endif

endproc

proc 3Equ :parameters a%,b%

    if a%=0

        return 3not(b%)

    elseif a%=2

        return 2

    else

        return 3val(b%)

    endif

endproc

proc 3xor :parameters a%,b%

    if a%=0

        return 3val(b%)

    elseif a%=2

        return 2

    else

        return 3not(b%)

    endif

endproc

proc 3Imp :parameters a%,b%

    if a%=0:return 1

    elseif a%=2

        case b%=1:return 1
        return 2

    else

        return 3val(b%)

    endif

endproc

Test:
appendmenubar 100," 0 = false (F), 1 = true (T), ?=2: "+\
"weiss-nicht/möglicherweise/erlaubt/kann_sein/vielleicht (M, Maybe)"
declare a%,b%
print
print " -------------------------------"
print "   a b not_a and or xor <=> ==>"

whileloop 0,4,2:a%=3val(&Loop)

    whileloop 0,4,2:b%=3val(&Loop)

        print " -------------------------------"
        print " |",a%,b%,"|",3Not(a%),"|",3and(a%,b%),"|",3or(a%,b%),"|",
        print  3xor(a%,b%),"|",3Equ(a%,b%),"|",3Imp(a%,b%),"|"

    endwhile

endwhile

print " -------------------------------"
beep
waitinput
End
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
29.05.2021  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.492 Betrachtungen

Unbenanntvor 0 min.
p.specht20.11.2021
Uwe Lang20.11.2021
Manfred Barei19.11.2021
Wilfried Friebe17.11.2021
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

p.specht (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie