AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TRUE/FALSE Part

Ein Thema von EWeiss · begonnen am 30. Mär 2015 · letzter Beitrag vom 2. Apr 2015
Antwort Antwort
Seite 3 von 5     123 45      
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#21

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 21:31
Sorry,

in meinem abendlichen Schnupfen- und Erkältungswahn muss ich auch noch meinen Senf dazugeben:
Ich habe mich mit diesem Thema auch schon mal herumgeärgert.

Meines Erachtens ist die Definition der Konstanten True und False schlicht kontraintuitiv, da man in der Aussagenlogik keinerlei Probleme mit einem Vergleich (x = True) hätte.
Ich möchte mich nicht zu weit aus dem Fenster lehnen, aber True bedeutet in der natürlichen Sprache nunmal "wahr" und False bedeutet "falsch", und dann war ja da noch dieser Hinweis "benenne Deine Objekte und Variablen (und Konstanten) so, dass man die Bedeutung leicht erkennen kann".

Aber wie gesagt: Schnupfen und Erkältung - nichts für ungut

lg Caps

Edit:

In schwach typisierten Sprachen wie PHP ist es manchmal tatsächlich notwendig, direkt auf den Wahrheitswert zu prüfen, allerdings deshalb, weil man implizit den Typ mit überprüft:
Code:
if (x === true) { ... }
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."

Geändert von Caps (30. Mär 2015 um 21:37 Uhr) Grund: Nießen
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#22

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 21:32
Im Zitat von EWeiss steht:
Zitat:
True = 1
und dies ist eben nicht richtig, denn laut Delphi, nachzulesen unter "Boolesche Typen" ist True eben nicht 1 sondern:
Zitat:
Ord(True) = 1
Und dies ist ein gewaltiger Unterschied, den ich mit einfachen Mittel belegt habe, in dem ich einfach einen Integerwert 1 in der If-Bedingung verwendet habe.

Klar, dass dies nicht funktionieren kann, aber es sollte eben verdeutlichen, dass True eben nicht 1 ist.

Bei anderen Boolschen Typen also nicht Boolean sondern ByteBool, WordBool oder LongBool ist Ord(True) auch nicht 1 sondern ungleich 0.
Wie Daniel schon sagte..
Zitat:
Wir haben hier viele gute und sachliche Argumente gehört - aber lasst doch die Erbsenzählerei sein.
Nicht jedes Wort gehört auf die Goldwaage.
Ich dachte das jeder versteht was damit gemeint war. (Ohne Erbsen zu zählen)
Programmiere nicht erst seit gestern und wollte nur wissen ob die Art ob man auf True vergleichen soll oder nicht
Kosmetischer Natur ist.
Das wurde ja letztendlich geklärt.


gruss

Geändert von EWeiss (30. Mär 2015 um 21:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#23

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 21:46
Ja, in PHP und Co. ist das ein Sonderfall, da dort "alles" als Boolean ausgewertet werden kann, also auch 0 und 1 oder -1 (die Integer).
Genauso, wie man das auch in Delphi machen kann, z.B. mit einen Variant.

Aber etwas umgestellt, kann man das if (x === true) { ... } auch als if (is_bool(x) and x) { ... } darstellen und schon wird haben wir das =True auch weg, aber dort bevorzuge ich auch das Kürzere.

Ich weiß auch garnicht, ob der "Boolean" in PHP überhaupt mehr als 2 Zusände haben kann, also wie dort die Zuweisungen/Auswertungen genau arbeiten.
Wenn PHP das abfängt, dann ist ein = True auch nicht schlimm, wobei, wie du schon sagtest, dort x===True dem x=True im Delphi fast gleichzusetzen ist.
[edit] ich meinte natürlich == True ... ja, ein = kann echt böse enden.


Ich glaub ich geh bald schlafen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (30. Mär 2015 um 21:55 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#24

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 21:50
Meines Erachtens ist die Definition der Konstanten True und False schlicht kontraintuitiv, da man in der Aussagenlogik keinerlei Probleme mit einem Vergleich (x = True) hätte.
Ich möchte mich nicht zu weit aus dem Fenster lehnen, aber True bedeutet in der natürlichen Sprache nunmal "wahr" und False bedeutet "falsch", und dann war ja da noch dieser Hinweis "benenne Deine Objekte und Variablen (und Konstanten) so, dass man die Bedeutung leicht erkennen kann".
Um es auf den Punkt zu bringen: False ist 0. Das ist meiner Kenntnis nach das Einzige auf was man sich verlassen kann. Alles andere ist True.

Das heißt: ein Byte bietet 256 Möglichkeiten. False ist 0, die restlichen 255 Möglichkeiten sind True.

Gegen False zu prüfen sollte nie falsch sein, aber man kann mit True 254 mal daneben liegen.
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#25

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 21:51
Ich glaube in PHP sind es reservierte Wörter, aber das glaube ich nur, weil sie blau werden, wenn ich sie eintippe

Fragt sich natürlich trotzdem, wie die interne Repräsentation aussieht...
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#26

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 21:55
[...]
Das heißt: ein Byte bietet 256 Möglichkeiten. False ist 0, die restlichen 255 Möglichkeiten sind True.

Gegen False zu prüfen sollte nie falsch sein, aber man kann mit True 254 mal daneben liegen.
Das spricht dafür, dass nicht das Byte sondern das Bit die kleinste addressierbare Einheit sein sollte!


Schluss, ich muss ins Bett.
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#27

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 21:56
Genauso wie man das auch in Delphi machen kann, z.B. mit einen Variant.
Siehe Post #12.

Wobei man dort schön sieht, dass man dann expliziet auf if (var = true) then prüfen muss, wenn man tatsächlich TRUE benötigt und nicht nur "ergibt Wahr".


Um es auf den Punkt zu bringen: False ist 0.
Wenn man sich es richtig angewöhnt, dann gibt es keine Diskussionen.

False ist nicht 0 sondern
Code:
Ord(False) = 0
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.

Geändert von BadenPower (30. Mär 2015 um 21:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#28

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 22:00
Wobei man dort schön sieht, dass man dann expliziet auf if (var = true) then prüfen muss, wenn man tatsächlich TRUE benötigt und nicht nur "ergibt Wahr".
Ja und nein ... siehe mein PHP-Beispiel if (is_bool(x) and x) { ... } , also VarIsBool(x) and X .
Aber dort gibt es einen Sonderfall, denn Variant speichert den "Boolean" als WordBool (2 Byte), beim Auslesen als Boolean (1 Byte), nimmt Delphi eine Typkonvertierung vor und gibt entweder True (1), False(0) oder eine Exception (nicht konvertiervar) raus,
denn einfach nur abschneiten (billig casten) kann falsch sein, da $0100 Wahr ist, aber $00 somit ein Problem wäre.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (30. Mär 2015 um 22:04 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#29

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 22:10
False ist nicht 0 sondern
Code:
Ord(False) = 0
Der Wert von False ist 0. Es ist egal ob Ord('A') 65 ergibt, das Byte von A hat den Wert 65.

Byte(False)
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#30

AW: TRUE/FALSE Part

  Alt 30. Mär 2015, 22:20
False ist nicht 0 sondern
Code:
Ord(False) = 0
Der Wert von False ist 0. Es ist egal ob Ord('A') 65 ergibt, das Byte von A hat den Wert 65.

Byte(False)
Merkst Du was?
Du hast mich doch gerade bestätigt.

Der 'Ordinalwert von False ist 0' und nicht 'False ist 0'.
Denn "A" ist ja auch nicht 65, aber der Ordinalwert.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz