AGB  ·  Datenschutz  ·  Impressum  







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

"if boolean then if" ersetzen

Ein Thema von cltom · begonnen am 5. Sep 2011 · letzter Beitrag vom 5. Sep 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von himitsu
himitsu

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

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 09:40
@xaromz: Theoretisch hast du Recht und dein Code entspricht funktional genau dem ursprünglichen statement, aber praktisch kann man das auf die Version von jfheins zusammankürzen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
228 Beiträge
 
Delphi 12 Athens
 
#2

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 09:45
Himmel. Eine einfache or hat's getan. Danke!

Meine Konstruktionen waren auch nahe dran an dem, was xaromz gefunden hat (in punkto umständlich), aber dann doch falsch ...

peinlich ...

Danke jedenfalls!
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#3

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 09:58
Hallo,
Theoretisch hast du Recht und dein Code entspricht funktional genau dem ursprünglichen statement, aber praktisch kann man das auf die Version von jfheins zusammankürzen.
Das kommt immer darauf an, was gewollt ist. Die beiden Lösungen unterscheiden sich fundamental in ihrer Aussage. Wenn die einfache Variante gemeint ist, dann ist das in Ordnung, aber die Aussage, dass die beiden Statements praktisch gleichwertig sind ist grob falsch. So gesehen war auch der Ursprungscode falsch.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 10:05
Hi xaromz,

magst du mir einmal erlären, wie sich die Aussagen unterscheiden? Ich sehe jetzt erstmal keine Möglichkeit, dass sich das Programm bei der Variante von jfheins anders verhalten sollte als in deiner oder der Ursprungsvariante.


verwirrte Grüße
Ansgar
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#5

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 10:10
Hallo,

das eine Programm ruft die Funktion auf, wenn a) showzero gesetzt ist oder b) y größer Null ist.

Das andere Programm ruft die Funktion auf, wenn a) schowzero gesetzt ist oder b) y größer Null ist, aber showzero nicht gesetzt ist.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#6

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 10:16
Dann hättest du, genauso wie jfheins, ein xor verwenden müssen, da das bei dir grad so nach "entweder" oder klingt. Es macht an dieser Stelle aber wirklich keinen Unterschied im Ergebnis, das würde es nur wenn unterschiedliche Funktionen in den if- und else-Zweigen aufgerufen würden.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#7

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 10:20
Naja..das ursprüngliche konstrukt und die sehr kompakte variante reagieren aber gleich.
Deswegen ist noch die relevanz der zustände zu klären, ich sehe ansonsten auch keinen unterschied.

Ursprünglich:
Wenn showzero gesetzt -> Dann ShowValue
Wenn showzero aber nicht gesetzt und Y wenigstens > Null -> ShowValue

Keiner der beiden zustände schließt den anderen aus. Und wie Medium bereits gesagt(hui RoterKasten^^) wird bei beiden bedingungen dasselbe aufgerufen.
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 10:29
Beide Varianten haben zumindest das selbe Ergebnis. Beweis durch Wahrheitstabelle:

Code:
showzero    |    y > 0    |    ((showzero) || (y > 0))   |    ((showzero) || ((-showzero) && (y > 0)))
   0        |      0      |                0              |                     0
   0        |      1      |                1              |                     1
   1        |      0      |                1              |                     1
   1        |      1      |                1              |                     1
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 10:37
Jupp, das zweite Statment {... else} if y > 0 then entspricht ja if not showzero and (y > 0) then .

Nun kann man die Beiden also zusammenfassen
if showzero or (not showzero and (y > 0)) then (wie xaromz es richtig gemacht hat)

Jetzt noch Kürzen, die Klammern auflösen usw.:
Delphi-Quellcode:
if showzero or (not showzero and (y > 0)) then

// beide AND-Teile in Klammern (damit der nächste Einfügeprozess einfacher zu erkennen ist)
if showzero or ((not showzero) and (y > 0)) then

// das OR auflösen, bzw. OR und AND austauschen ... also den linken OR-Teil in beide AND-Teile einfügen
if (showzero or not showzero) and (showzero or (y > 0)) then

// x or not x = true
if true and (showzero or (y > 0)) then

// nun nur noch "true and ..." rauskürzen und fertig
if showzero or (y > 0) then

[edit]
menno
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Sep 2011 um 10:41 Uhr)
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
228 Beiträge
 
Delphi 12 Athens
 
#10

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 11:11
Falls es für die Diskussion noch erforderlich ist:

y ist eine Variable. Es soll nicht mehr passieren als dass alle Werte angezeigt werden, ausser eben der User will Null-Werte nicht angezeigt haben (und die Werte sind auch wirklich Null).

Ich hoffe, ich hab durch meine urpsrüngliche Problemstellung niemanden auf die falsche Fährte gelockt.

btw. "roter Kasten" wie/wo/was?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz