Bedingungen bei While/Until: Auswertung unterschiedlich

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Sicro
Beiträge: 963
Registriert: 11.08.2005 19:08
Kontaktdaten:

Bedingungen bei While/Until: Auswertung unterschiedlich

Beitrag von Sicro »

Code: Alles auswählen

a = 3
While a > 0 Or #False
  a - 1
  Debug a
Wend

Debug "Or #False wird nicht beachtet"
Debug "----------------"

a = 3
Repeat
  a - 1
  Debug a
Until a = 0 Or #True

Debug "Or #True wird beachtet"
Debug "----------------"

a = 1
If a <> 0 Or #False
  Debug "Or #False wird nicht ausgeführt. Das ist ja bekannt und ok so."
EndIf
While ignoriert das "Or False", Until hingegen nicht.
While verarbeitet die Bedingung also wie If: Trifft die erste Bedingung zu, wird die zweite ignoriert.

Sollte das nicht einheitlich sein?
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
- chris -
Beiträge: 195
Registriert: 24.08.2005 19:52
Wohnort: Stadtallendorf

Re: Bedingungen bei While/Until: Auswertung unterschiedlich

Beitrag von - chris - »

Code: Alles auswählen


a = 3
While a > 0 Or a = #False
  a - 1
  Debug a
Wend

Bei "Or #False" ist die Bedingung nie erfüllt.

Code: Alles auswählen


a = 3
Repeat
  a - 1
  Debug a
Until a = 0 Or a = #True

Bei "Or #True" wird die Repeat Schleife sofort verlassen
PB v5.72 x86/x64
Windows 10 Pro 64bit
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: Bedingungen bei While/Until: Auswertung unterschiedlich

Beitrag von Chimorin »

Funktioniert doch richtig.

OR ist das logische oder.
0 or 0 = 0
0 or 1 = 1
1 or 0 = 1
1 or 1 = 1
Sobald ein Argument wahr ist, funktioniert die Sache. Das, was du brauchst, ist das logische Und, AND.

Du trägst bei der Whileschleife or #False ein, bei der Repeatschleife or #True. Das ist schon etwas anderes ;)
Bild

- formerly known as Bananenfreak -
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Bedingungen bei While/Until: Auswertung unterschiedlich

Beitrag von Nino »

Chimorin hat geschrieben:Du trägst bei der Whileschleife or #False ein, bei der Repeatschleife or #True. Das ist schon etwas anderes ;)
So ist es. :-)
Der Titel sollte heißen: "#True/#False-Auswertung unterschiedlich".

Und es wäre schön, wenn einfache Verständnisfragen nicht in der "Bugs"-Abteilung gepostet würden.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Bedingungen bei While/Until: Auswertung unterschiedlich

Beitrag von NicTheQuick »

Nino hat geschrieben:Und es wäre schön, wenn einfache Verständnisfragen nicht in der "Bugs"-Abteilung gepostet würden.
Und schon ist es im richtigen Forum. Ich hab den Thread heute Nacht zwar schon gelesen, aber mir ist gar nicht aufgefallen, dass er im falschen Forum ist.
Benutzeravatar
Sicro
Beiträge: 963
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Bedingungen bei While/Until: Auswertung unterschiedlich

Beitrag von Sicro »

Code: Alles auswählen

While a > 0 Or #False
Ich war beim Programmieren an diesem Abend so sicher, dass "a > 0 Or #False" #False wegen "Or #False" ergibt und habe das Verhalten von While vorschnell als Bug gewertet, ohne zu hinterfragen, ob ich mich vielleicht irre.

Nach einem hartem Arbeitstag sollte man einfach nicht mehr programmieren :freak:

Ich werde beim nächsten "Bug"-Fund nochmal eine Nacht drüber schlafen, bevor ich ihn melde :allright: Sorry :)
Zuletzt geändert von Sicro am 28.04.2015 19:45, insgesamt 1-mal geändert.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: Bedingungen bei While/Until: Auswertung unterschiedlich

Beitrag von Chimorin »

Achwas. Sowas hilft irgendwem bestimmt.
Wahrscheinlich wird es nicht nur 1 geben, der in diesem Jahr nach diesem Thema googelt :D
Bild

- formerly known as Bananenfreak -
Antworten