Seite 1 von 1

Kleines Logikproblem (AND / NOT)

Verfasst: 23.05.2018 17:42
von diceman
Hallöchen,
Ich stehe gerade etwas auf dem Schlauch mit einem kleinen Logik-Issue, welches ich gerne verstehen würde.
Und zwar war ich davon ausgegangen, daß sich folgende beide Code-Snippets exakt gleich verhalten würden.
Tun sie aber nicht.

Beispiel 1 ("foo" wird 3x angezeigt):

Code: Alles auswählen

a = 0
b = 0
For count = 1 to 3
    If Not (a And b)
        a = 1
        Debug "foo"
    Endif
Next
Beispiel 2 ("foo" wird 1x angezeigt):

Code: Alles auswählen

a = 0
b = 0
For count = 1 to 3
    If Not a And Not b
        a = 1
        Debug "foo"
    Endif
Next
Vielen Dank! :)

Re: Kleines Logikproblem (AND / NOT)

Verfasst: 23.05.2018 17:58
von NicTheQuick
Nach De Morgan ist

Code: Alles auswählen

Not (a And b) = (Not a) Or (Not b)
Während

Code: Alles auswählen

Not a And Not b = (Not a) And (Not b) = Not (a Or b)
ist.

Re: Kleines Logikproblem (AND / NOT)

Verfasst: 23.05.2018 18:02
von diceman
Wow, Danke!
Hab, ehrlich gesagt, noch nie was von De Morgan gehört. :oops: :oops: :oops:
Wie bin ich bislang so nur durchs Leben gekommen ... ? :?

Re: Kleines Logikproblem (AND / NOT)

Verfasst: 23.05.2018 18:11
von Josh
Im Zweifelsfall überlege dir einfach die Eval-Schritte:

Code: Alles auswählen

;Wenn a = 0
If Not (a And b)
If Not (0 And 0)
If Not (0)
If 1

;Wenn a = 1
If Not (a And b)
If Not (1 And 0)
If Not (0)
If 1

------------------------

;Wenn a = 0
If Not a And Not b
If Not 0 And Not 0
If 1 And 1
If 1

;Wenn a = 1
If Not a And Not b
If Not 1 And Not 0
If 0 And 1
If 0
In der Hilfe findest du unter 'Variablen, Typen und Operatoren' eine Prioritätenliste der Operatoren. Die Position von 'NOT' ist für mich auch nicht ganz logisch, ist aber leider mal so.

Re: Kleines Logikproblem (AND / NOT)

Verfasst: 23.05.2018 18:36
von diceman
Josh hat geschrieben:In der Hilfe findest du unter 'Variablen, Typen und Operatoren' eine Prioritätenliste der Operatoren. Die Position von 'NOT' ist für mich auch nicht ganz logisch, ist aber leider mal so.
Danke, ich schau's mir gleich mal an. Bin tatsächlich total geplättet, daß ich bislang ÜBERHAUPT funktionierenden Code schreiben konnte, ohne mir jemals Gedanken über Prioriäten der Operatoren zu machen. Dachte, mit eifrig Klammern setzen wäre ich auf der sicheren Seite (habe sogar einen regelrechten Klammerfetisch entwickelt :twisted: ) ...
Man lernt nie aus.