Italia
Fonte/ 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 possibile ist? Dann necessario 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() per die Gleichheitsfunktion und 3Imp() per die Implikationsfunktion (Wenn a dann b) genannt habe. Sie liegen nun in XProfan-11 vor, wobei Io l' 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


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

1.501 Views

Untitledvor 0 min.
p.specht20.11.2021
Uwe Lang20.11.2021
Manfred Barei19.11.2021
Wilfried Friebe17.11.2021
Di più...

Themeninformationen

Dieses Thema hat 1 subscriber:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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