vereinfachen von if funktionen
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Bitte streichen, jear, das wurde bloß erfunden. PB unterstützt das Rechnen mit logischen Ausdrücken noch nicht.
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
@AND51
Dies kann (zusammen mit dem Macro Is()) auch in anderen Konstrukten sehr hilfreich sein.
Das steht so in der PB-Hilfe! Oder willst Du mir unterstellen, ich hätte das "erfunden"?Bitte streichen, jear, das wurde bloß erfunden.
Das Beispiel ist kein "Rechnen" mit logischen Ausdrücken. Es ist einzig eine andere Form, eine Bedingungsabfrage zu verwirklichen.PB unterstützt das Rechnen mit logischen Ausdrücken noch nicht.
Dies kann (zusammen mit dem Macro Is()) auch in anderen Konstrukten sehr hilfreich sein.
Code: Alles auswählen
DisableGadget(#Gad, Is(Wert > 50))
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
> Das Beispiel ist kein "Rechnen" mit logischen Ausdrücken.
damit bist du aber auf dem holzweg.
es ist definitiv rechnen mit logischen ausdrücken, und das wird nur durch
das workaround in verbindung mit einer logischen verknüpfung unterstützt.
dass dein beispiel funktioniert, ist geradezu ein zufallstreffer, das liegt an dem AND in dem ausdruck.
beweis:
der absatz wurde in die Help aufgenommen, um das Workaround allgemein kenntlich zu machen,
nachdem allerdings mehrfache rückfragen kamen, wurde von Freak ganz klar ausgesagt, was ich oben angegeben habe,
und der betreffende absatz wurde aus der Help wieder entfernt, in der aktuellen Version sollte er nicht mehr drin sein.
wir hatten dieses thema auch schon mehr als einmal,
ich erinnere mich dass vor ca. 2 jahren wir beide, jear und ich,
uns eingesetzt hatten, boole'sche ausdrücke korrekt zu implementieren,
und es wurde mehrfach festgestellt, dass diese möglichkeit zwar ganz nett sei,
aber keine wirklich notwendigkeit dafür bestünde,
und die umsetzung daher keine hohe priorität besitzt.
damit bist du aber auf dem holzweg.
es ist definitiv rechnen mit logischen ausdrücken, und das wird nur durch
das workaround in verbindung mit einer logischen verknüpfung unterstützt.
dass dein beispiel funktioniert, ist geradezu ein zufallstreffer, das liegt an dem AND in dem ausdruck.
beweis:
Code: Alles auswählen
For t = 0 To 20
s = t * (t > 10)
Debug "t = "+Str(t)+" => s = "+Str(s)
Next
nachdem allerdings mehrfache rückfragen kamen, wurde von Freak ganz klar ausgesagt, was ich oben angegeben habe,
und der betreffende absatz wurde aus der Help wieder entfernt, in der aktuellen Version sollte er nicht mehr drin sein.
wir hatten dieses thema auch schon mehr als einmal,
ich erinnere mich dass vor ca. 2 jahren wir beide, jear und ich,
uns eingesetzt hatten, boole'sche ausdrücke korrekt zu implementieren,
und es wurde mehrfach festgestellt, dass diese möglichkeit zwar ganz nett sei,
aber keine wirklich notwendigkeit dafür bestünde,
und die umsetzung daher keine hohe priorität besitzt.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Nein, das will ich dir selbstverständlich nicht unterstellen. Ich hatte mein Posting editiert, vorher stand da: "Das hat Andre bloß erfunden." Aber ich habs entfernt, weil ich das nicht so anschuldigend gemeint habe, wie man es hätte verstehen können.jear hat geschrieben:Oder willst Du mir unterstellen, ich hätte das "erfunden
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Mal einen Trick:
Wert=1
oder
Wert=0
Statt
>> OffTopic
Ach übrigens, ich würde mich tierisch freuen, wenn ihr mal auf meine Seite geht. Hab sie extra für euch bis heute morgen fertig gestellt.
<<
Dank euch
Wert=1
oder
Wert=0
Code: Alles auswählen
Wert = (Wert + 1)%2
Code: Alles auswählen
if Wert
Wert=0
else
Wert=1
endif
Ach übrigens, ich würde mich tierisch freuen, wenn ihr mal auf meine Seite geht. Hab sie extra für euch bis heute morgen fertig gestellt.
<<
Dank euch

Kinder an die Macht http://scratch.mit.edu/
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
viel zu aufwendig!Xaby hat geschrieben:Code: Alles auswählen
Wert = (Wert + 1)%2
grundsätzlich:
statt %2 verwende &1 => wesentlich performanter.
also für dein konstrukt:
Code: Alles auswählen
Wert + 1 & 1
einfach:
Code: Alles auswählen
Wert = 1 - Wert
Code: Alles auswählen
low = 2
high = 5
range = high + low
toggle = low
For n=0 To 9
toggle = range - toggle
Debug toggle
Next
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Ich finde es trotzdem cool das man das hier machen kann
Nur das geht halt nicht wie schon Kaeru Gaman zeigte aber dnan muss halt ein "AND 1" mit rein ^^
Code: Alles auswählen
x = 127 + 3 * (r < 7 And r > 0) - (z = 7 And r = 1)*100
Debug x
Code: Alles auswählen
x = (z < 6)*2
Debug x
x = (z < 6 And 1)*2
Debug x
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
> statt %2 verwende &1 => wesentlich performanter
RICHTIG!
> Wert + 1 & 1
FALSCH!
Man beachte die höhere Priorität des Operators &. Bei dir würde 1 & 1 immer 1 ergeben und damit den Wert inkrementieren...
>> (Wert + 1) & 1
Müsste es heißen.
RICHTIG!
> Wert + 1 & 1
FALSCH!
Man beachte die höhere Priorität des Operators &. Bei dir würde 1 & 1 immer 1 ergeben und damit den Wert inkrementieren...
>> (Wert + 1) & 1
Müsste es heißen.
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End