Kleines Logikproblem (AND / NOT)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Kleines Logikproblem (AND / NOT)

Beitrag 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! :)
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Kleines Logikproblem (AND / NOT)

Beitrag 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.
Bild
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Kleines Logikproblem (AND / NOT)

Beitrag 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 ... ? :?
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: Kleines Logikproblem (AND / NOT)

Beitrag 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.
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Kleines Logikproblem (AND / NOT)

Beitrag 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.
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Antworten