Seite 5 von 6
Verfasst: 15.04.2006 22:26
von Kaeru Gaman
im ersten beispiel fehlen sowieso die klammern um den ausdruck...
aber geht ja trotzdem nicht..
es scheint, als ob erst du die verwendung von "Or #False" (bzw. "#False Or") der (nicht existente) "Typ" 'Boolean' auf den ausdruck ge-cast-et wird.
aber da es dann funktioniert, und ebenso bei verwendung innerhalb von If-statements,
finde ich es merkwürdig, daß es nicht einfach so bestandteil einer rechnung sein kann.
nochmal ein hinweis:
ist falsch, es muss
heißen.
Die Klammern kennzeichnen den Ausdruck als Boole'schen Ausdruck innerhalb einer Berechnung.
Verfasst: 16.04.2006 06:59
von mk-soft
@IngolfZ,
Sorry noch wegen den rauen ton von mir.
André hat Fed und fr34k darüber informiert. Mal abwarten was Fred dazu sagt
@Kaeru Gaman,
hiermit funktioniert es auch für PB4
Code: Alles auswählen
Macro IsTrue(Ext)
(#False Or(Ext))
EndMacro
Macro IsFalse(Ext)
(#False Or Not(Ext))
EndMacro
a = 60
Debug IsTrue(a > 65)
b = 10 + IsTrue(a>65) * 20
Debug b
b = 10 + IsFalse(a>65) * 20
Debug b
hatte ich schon mal geschrieben. kannst ja mal ausprobieren.
Osterfeuer war gut. Frohe Ostern euch noch

Verfasst: 16.04.2006 09:58
von horst
Kaeru Gaman hat geschrieben:...Die Klammern kennzeichnen den Ausdruck als Boole'schen Ausdruck innerhalb einer Berechnung.
Klammern kennzeichnen eigentlich Ausdrücke von der Art, die durch den jeweiligen Kontext bestimmt wird. Und da gibt es zum Beispiel einen arithmetischen Kontext oder einen Konditionen-Kontext. Ich halte nichts davon, beides zu vermischen, genauer gesagt, ich stimme mit Fred überein, dass Boolsche Ausdrücke nicht wie arithmetische behandelt werden sollten.
Dagegen halte ich es für sauber und korrekt, Boolsche Ausdrücke durch eine
Funktion in einen arithmetischen Kontext zu überführen, also z.B. in der Form
Is(BooleanExpression).
Ein Boolscher Ausdruck ist zunächst einmal WAHR oder UNWAHR, was mit Werten überhaupt nichts zu tun hat.
Erst wenn WAHR/UNWAHR in einer Programmiersprache bestimmten Werten zugeordnet wird, z.B. #true=1 und not true aka #false=0, ist es möglich, einen Boolschen Ausdruck zu bewerten. Dabei wird eine Methode angewendet, die nichts mit Arithmetik zu tun hat, deren Resultat aber ein numerischer Wert ist. Ein typischer Fall für eine Funktion also.
IMHO ist die Vermischung von Boolschen und arithmetischen Ausdrücken unsauberer (wenn auch nicht ungewöhnlicher) Programmierstil.
Um es nochmal zu sagen: Dass wir eine einfache Nutzung von Boolschen Ausdrücken in PureBasic brauchen, ist unbestritten. Ich halte dafür allerdings eine nur Funktion für angemessen.
Verfasst: 16.04.2006 10:55
von Kaeru Gaman
@mk
> hiermit funktioniert es auch für PB4
> hatte ich schon mal geschrieben.
hatte ich auch schon zur kenntnis genommen, und das "#False Or" hatte ich selbst auch erwähnt.
@horst
das ist eine argumentation! du hast mich überzeugt.
> Dass wir eine einfache Nutzung von Boolschen Ausdrücken in PureBasic brauchen, ist unbestritten. Ich halte dafür allerdings eine nur Funktion für angemessen.
is ok for me.
ob diese form einer funktion allerdings als procedure implementiert wird,
oder vielleicht besser aus performance-gründen als compilermacro,
bitte ich noch zu überdenken.
einen extra-call halte ich für ungünstig.
> André hat Fred und fr34k darüber informiert. Mal abwarten was Fred dazu sagt
da bin ich aber auch mal gespannt...
euch allen auch ein fröhliches Frühlingsfest / Fruchtbarkeitsfest / Passah / Pessach
Verfasst: 16.04.2006 11:06
von horst
Kaeru Gaman hat geschrieben:
ob diese form einer funktion allerdings als procedure implementiert wird,
oder vielleicht besser aus performance-gründen als compilermacro,
bitte ich noch zu überdenken.
Da mach ich mir bei Fred keine Sorgen. Chr(n) zum Beispiel braucht auch keine runtime Procedure.
Verfasst: 16.04.2006 19:40
von ullmann
Hallo,
aus mehreren anderen Sprachen kenne ich
0 = False
alle anderen Werte = True (werden als True bei IF akzeptiert)
-1 = True (Rückgabewert von Not False)
Um IF Then Befehle zu vermeiden, habe ich oft logische Ausdrücke in mathematische Ausdrücke eingebaut. Das hat in anderen Sprachen immer funktioniert.
Es sollte deshalb unbedingt auch in PB funktionieren, und nicht erst mit unnützen Konvertierungsfunktionen wie oben vorgeschlagen.
Gestört hat mich, dass ich in mathematischen Ausdrücken True erst mit -1 multiplizieren musste oder statt Addition eine Subtraktion verwenden musste. Das hat den Ausdruck ein klein wenig unübersichtlicher gemacht.
Seit einiger Zeit arbeite ich mit Lotus 123, hier ist der Rückgabewert für True +1. Das gefällt mir besser. Eingebaut in mathematischen Ausdrücken sind diese besser lesbar.
Rainer
Verfasst: 17.04.2006 12:17
von jear
@Horst
Dagegen halte ich es für sauber und korrekt, Boolsche Ausdrücke durch eine Funktion in einen arithmetischen Kontext zu überführen, also z.B. in der Form Is(BooleanExpression).
Völlige Übereinstimmung. Hoffen wir also, dass Fred das so macht. Schließlich wollen wir nicht alle naselang das Thema wieder aufwärmen müssen. Solange tut es aber auch ein Macro.
Code: Alles auswählen
Macro Is(BooleanExpression)
(#False Or(BooleanExpression))
EndMacro
a = 50 : Debug Is(a<60) : Debug Is(a=60) : Debug Is(a>60)
a = 60 : Debug Is(a<60) : Debug Is(a=60) : Debug Is(a>60)
a = 70 : Debug Is(a<60) : Debug Is(a=60) : Debug Is(a>60)
File.s = "Test.vob"
IsVOB.b = Is(LCase(GetExtensionPart(file)) = "vob")
Debug IsVOB
Frohe Restostern!
Verfasst: 18.04.2006 20:25
von freak
Also implementiert werden wird es, aber wann genau steht noch nicht fest.
@Kaeru Gaman:
Ich erntete Spott von anderen Usern, Ignoranz von Freak, und
Fred hielt es offenbar für unter seiner Würde, überhaupt zu antworten.
...wahrscheinlich hat er aber einfach so sehr den Überblick verloren, dass er überhaupt nicht in der Lage wäre, das zu implementieren, selbst wenn er wollte. Dann hat er halt einfach nicht den Mumm, das zuzugeben.
Also bei solchen Aussagen brauchst du dich nicht zu wundern wenn du ignoriert wirst... nur mal so als Tipp.
Verfasst: 18.04.2006 20:33
von Kaeru Gaman
> Also bei solchen Aussagen brauchst du dich nicht zu wundern wenn du ignoriert wirst... nur mal so als Tipp.
solche aussagen kommen im nachhinein, wenn man nicht für voll genommen wird, obwohl man mit ner vernünftigen frage ankommt.
nur mal so als tipp.
interessant auch, dass eine aussage wie
> Also implementiert werden wird es, aber wann genau steht noch nicht fest.
erst hier und jetzt kommt, aber wenn ich mal im englischen forum frag krieg ich blöde sprüche zu hören.
Verfasst: 18.04.2006 22:09
von freak
Ich habe lediglich geantwortet das das ganze für mich keine wirkliche Priorität ist.
Das hat nichts mit nicht für voll nehmen zu tun.
Das du gleich eingeschnappt bist wenn es nicht nach deiner Meinung geht kann ich ja nicht ändern.
Errinnert irgendwie an ein Kind das nicht das Spielzeug kriegt das es haben will...
Im übrigen stand zu dem Zeitpunkt noch keine Entscheidung fest, desshalb
konnte ich eine Aussage wie die obige auch nicht machen.