Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   c(f^=g^=f^=g;) nach Delphi (https://www.delphipraxis.net/21407-c-f%5E%3Dg%5E%3Df%5E%3Dg%3B-nach-delphi.html)

Skiron 2. Mai 2004 16:05


c(f^=g^=f^=g;) nach Delphi
 
ich habe folgende Quellcodezeile, welche in C 2 Zahlen ohne Hilfsvariable vertauscht:
Code:
int f = 2, g = 3;
f^=g^=f^=g;
nun möcht ich das in Delphi auch machen. Geht das irgendwie?

^ ist xor


[Edit] Beitrag erweitert [/Edit]

himitsu 2. Mai 2004 16:09

Re: c(f^=g^=f^=g;) nach Delphi
 
In Delphi geht das (glaube ich) nicht, also um 'ne Hilfsvariable wirst du wohl nicht rumkommen.

Delphi-Quellcode:
h := f; f := g; g := h;

toms 2. Mai 2004 16:26

Re: c(f^=g^=f^=g;) nach Delphi
 
Geht doch:

Delphi-Quellcode:
  a:=a+b;
  b:=a-b;
  a:=a-b;
oder:

Delphi-Quellcode:
    a := a xor b;
    b := a xor b;
    a := a xor b;

Skiron 2. Mai 2004 16:30

Re: c(f^=g^=f^=g;) nach Delphi
 
cool!
danke!!

himitsu 2. Mai 2004 16:32

Re: c(f^=g^=f^=g;) nach Delphi
 
OK, aber mit dieser Variante kann es auch zu Problemen kommen.

(versuch mal 3.000.000.000.000 und 0,000.000.000.003 zu tauschen ^^)

alcaeus 2. Mai 2004 16:33

Re: c(f^=g^=f^=g;) nach Delphi
 
@himitsu: Berechtigter Einwand, aber so ein Vertauschen kommt sicher sehr häufig vor. Für "normale" Zahlen funktioniert Toms Lösung sicher.

Sebastian Nintemann 2. Mai 2004 16:35

Re: c(f^=g^=f^=g;) nach Delphi
 
Hallo!

Bist du denn auch sicher, dass solch ein Code wirklich einen Sinn macht (auch der von Toms)?

Die rechtsassoziativen Zuweisungsoperatoren von C können ja durchaus oft sehr praktisch sein, aber bei so einem Ding würd ich himitsus Code allemal vorziehen.
Ist doch eine Mordsaufwand bis du (falls du es mal vergessen haben solltest ;)) geschweigedenn jemand anderes durchschaut hat was dieser Code macht.

Da würd ich an deiner Stelle lieber auf Leserlichkeit (= Wartbarkeit = Fehlerunanfälligkeit [rechtsassoziativ :mrgreen:] ) setzen. Zumal: Was macht schon eine lokale Hilfsvariable?

Viele Grüße, Sebastian

Skiron 2. Mai 2004 16:39

Re: c(f^=g^=f^=g;) nach Delphi
 
na ja, es geht in manchen programmen nicht darum, sie so lesbar wie möglich zu machen, sondern manchmal auch so unlesbar wie möglich.
v.a. wenn das prog für die Schule is und man den prof. nicht mag, der das Prog verbessern muss!

alcaeus 2. Mai 2004 16:41

Re: c(f^=g^=f^=g;) nach Delphi
 
Zitat:

Zitat von Skiron
na ja, es geht in manchen programmen nicht darum, sie so lesbar wie möglich zu machen, sondern manchmal auch so unlesbar wie möglich.
v.a. wenn das prog für die Schule is und man den prof. nicht mag, der das Prog verbessern muss!

:lol: Auch ein Grund so etwas einzusetzen, ich nehme solchen Code normalerweise nur bei "Wetten", ansonsten ist er mir auch zu unübersichtlich

Sebastian Nintemann 2. Mai 2004 16:43

Re: c(f^=g^=f^=g;) nach Delphi
 
@Skiron:
Och wie gemein :mrgreen:

Aber pass auf, auch die Leserlichkeit gehört zur Qualität eines Codes und kann deshalb mit in die Wertung einfließen.

Viele Grüße, Sebastian

Skiron 2. Mai 2004 16:50

Re: c(f^=g^=f^=g;) nach Delphi
 
Zitat:

Zitat von Grotesquery
@Skiron:
Och wie gemein :mrgreen:

Aber pass auf, auch die Leserlichkeit gehört zur Qualität eines Codes und kann deshalb mit in die Wertung einfließen.

Viele Grüße, Sebastian

stimmt auch wieder...

man kann ihm aber immer noch einreden, dass der Quellcode (aufgrund der Kommentare) leserlich ist, und ob jemand dann die einzelnen Teile des Algos versteht, eine andere Frage ist, die nicht unbedingt vom Quellcode, sondern mehr von der Person abhängig ist!! :zwinker: :mrgreen:

Sebastian Nintemann 2. Mai 2004 17:08

Re: c(f^=g^=f^=g;) nach Delphi
 
Kommentare sind natürlich immer gut, aber ein selbsterklärender Code macht sie ja auch wieder überflüssig...

Da sehe ich auch einen großen Vorteil von Pascal gegenüber C - der code ist IMHO wesentlich übesichtlicher (allein schon durch die Verwendung menschlicher Worte zb für Operatoren).
Zum Angeben (vor Laien oder "Script-Kiddies" ;) - Profis werden leserlichen Code dem kryptischen Platzsparcode vorziehen) kann man dann natürlich C wieder besser gebrauchen.
Vielleicht lässt sich dein Prof ja beeindrucken :wink:

Viele Grüße,
Sebastian //der morgen Abi schreibt und sich etwas ablenkt - will heißen: sorry, ist ein bisschen OT geworden...

SirThornberry 2. Mai 2004 17:24

Re: c(f^=g^=f^=g;) nach Delphi
 
Also negativ beurteilen dürfte der Prof so etwas nicht. Wer täglich solchen source schreibt sieht sofort was der source bewirkt (ich würde es ni sehen). Und man kann/sollte ja nicht einfach negativ beurteilen weil man zu blöd/unwissend ist etwas zu verstehen

Für eine Negativbeurteilung spricht das der Source zusätzliche Rechenoperationen ausführt (+ und -) und somit die performance mindert

NicoDE 2. Mai 2004 17:35

Re: c(f^=g^=f^=g;) nach Delphi
 
Zitat:

Zitat von himitsu
(versuch mal 3.000.000.000.000 und 0,000.000.000.003 zu tauschen ^^)

Zitat:

Zitat von Skiron
Code:
int

Ich seh da kein Problem :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 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