Delphi-PRAXiS
Seite 3 von 9     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   for-Schleife gegen über while-Schleife (https://www.delphipraxis.net/131246-schleife-gegen-ueber-while-schleife.html)

RWarnecke 21. Mär 2009 15:10

Re: for-Schleife gegen über while-Schleife
 
Zitat:

Zitat von sx2008
Das Result wird doch im Register EAX gehalten.
Indem man das Result so spät wie möglich zuweist, gibt man dem Compiler die Möglichkeit das Register frei zu verwenden.

Was heißt das jetzt genau ? Wenn ich das Result := False am Anfang der Funktion setze, brauche ich mir keine Gedanken darm zu machen, muss ich jetzt Exit oder Break benutzen. Desweiteren finde ich den Code lesbarer und übersichtlicher.

Keldorn 21. Mär 2009 15:16

Re: for-Schleife gegen über while-Schleife
 
Zitat:

Zitat von jaenicke
Zitat:

Zitat von Keldorn
Auf der anderen Seite aber heute noch zuläßt, das eine PLZ als integer deklariert wird :wall:

Naja, die Architektur ist 32-Bit, insofern ist es durchaus sinnvoll auch eine 32-Bit Zahl zu benutzen.

ich wohne in Sachsen, wir haben eine "016XX" als PLZ ;-). Das meine ich damit, daß eine PLZ nicht als Integer definiert werden sollte. Egal, wie, den Aufwand den Du betreiben mußt, die 0 irgendwo wieder herzuzaubern ist enorm. Wir bekommen heute noch Briefe, wo nur "16XX" drauf steht, und sowas sollte nicht vorkommen und wer weiß, wieviel schon falsch sortiert/ausgeliefert wurde.

sobald Du auch ans internationale denkst, gibts in den Nachbarländern genug Beispiele, die Buchstaben oder Leerzeichen in der PLZ enthalten haben.
Deswegen ist eine PLZ kein integer, sondern ein string und grad ein Lehrer sollte einem sowas beibringen ;-).

jaenicke 21. Mär 2009 15:35

Re: for-Schleife gegen über while-Schleife
 
Ja, es gibt ein paar Länder (weniger als 10 weltweit AFAIK), die andere Zeichen drin haben. Leider u.a. die USA.

Strings sind viel aufwendiger im Programm, deshalb lohnt es hier eher bei internationaler Software nach Ländern zu unterscheiden und nur in den wenigen Ländern tatsächlich die aufwendigen Stringoprationen zu benutzen. In dem Fall reichen Strings mit einer Länge von 10 Zeichen (USA).

Die führenden Nullen darf man natürlich nicht vergessen, aber bei einer Darstellung der gespeicherten Zahl ist das eigentlich klar.

Luckie 21. Mär 2009 15:58

Re: for-Schleife gegen über while-Schleife
 
Mir ging es eigentlich weniger um Laufzeitoptimierung, sondern eher um Optimierung in Richtung sauberen Code. Und die eigentliche Aufgabe ist auch eher nebensächlich.

Und das eine Poistleitzahl mit Null anfängt ist eher ein Problem der Post. Wenn die sich selber so eine Ausnahme eingabeut haben, müssen sie auch selber zu sehen, wie sie damit klar kommen. Aber das sollte nicht Thema hier sein.


Zitat:

Zitat von omata
Zitat:

Zitat von Luckie
Unser Lehrer hat heute gemeint, dass man es möglichst vermeiden sollte aus Schleifen zu springen. Und wenn es nötig sein sollte, sollte man es im Schleifenkopf machen, also eine while-Schleife nehmen.

Da habt ihr ja einen sehr guten Lehrer :thumb: :thumb:

Ich finde solche pauschalen Aussagen immer etwas bedenklich, wenn nicht sogar gefährlich. Ich denke, das ist immer Situations abhängig.

Meflin 21. Mär 2009 16:04

Re: for-Schleife gegen über while-Schleife
 
Zitat:

Zitat von Luckie
Und das eine Poistleitzahl mit Null anfängt ist eher ein Problem der Post. Wenn die sich selber so eine Ausnahme eingabeut haben, müssen sie auch selber zu sehen, wie sie damit klar kommen.

:shock: Das ist jetzt hoffentlich nicht dein ernst oder :shock: 0 ist ein ganzes PLZ-Gebiet und durchaus keine Ausnahme. Und du als Programmierer hast hier gefälligst dafür zu sorgen, dass man auch korrekt mit ihnen arbeiten kann, wenn du schon mit Postleitzahlen zu tun hast!

Das hat durchaus auch mit sauberem Code zu tun ;)

Luckie 21. Mär 2009 16:28

Re: for-Schleife gegen über while-Schleife
 
Zitat:

Zitat von Meflin
Zitat:

Zitat von Luckie
Und das eine Poistleitzahl mit Null anfängt ist eher ein Problem der Post. Wenn die sich selber so eine Ausnahme eingabeut haben, müssen sie auch selber zu sehen, wie sie damit klar kommen.

:shock: Das ist jetzt hoffentlich nicht dein ernst oder :shock:

Doch das ist mein Ernst. Die püostleitzahlen wurden zu einer Zeit neu vergeben, als Computer schon weit verbreitet waren. Man hätte sich also durchaus der Problematik bewusst sein können. Man hat aber mal wieder zu kurz gedacht. Und ich muss als Programmierer jetzt den Fehler der Post ausbügeln. Aber das gehört nicht hier her und ich will es acuh nicht weiter diskutieren. Ich muss erstmal eine Lampe aufhängen.

Satty67 21. Mär 2009 17:35

Re: for-Schleife gegen über while-Schleife
 
/Edit: will keine OT-Diskussion forcieren ;)

omata 21. Mär 2009 17:42

Re: for-Schleife gegen über while-Schleife
 
Zitat:

Zitat von Luckie
Ich finde solche pauschalen Aussagen immer etwas bedenklich, wenn nicht sogar gefährlich. Ich denke, das ist immer Situations abhängig.

Nein, da gibt es eine ganz einfache Regel: Wenn man eine Schleife vorzeitig beenden möchte, dann nimmt man niemals eine FOR-Schleife. Das ist ganz einfach und logisch.

jaenicke 21. Mär 2009 17:49

Re: for-Schleife gegen über while-Schleife
 
Zitat:

Zitat von omata
Nein, da gibt es eine ganz einfache Regel: Wenn man eine Schleife vorzeitig beenden möchte, dann nimmt man niemals eine FOR-Schleife. Das ist ganz einfach und logisch.

Und was, wenn es auf die Laufzeit ankommt?
In den meisten Situationen mag es ja egal sein ob ein Schleifendurchlauf einige Rechentakte mehr braucht, aber was, wenn die Schleife millionenfach durchlaufen wird?

Klar: Soll der Benutzer halt warten, dafür ist er ja da...

Eine solche Pauschalisierung ist gefährlich. Man kann natürlich auch while-Schleifen versuchen zu optimieren, aber so einfach wie in diesem Fall ist das nicht immer.

quendolineDD 21. Mär 2009 17:54

Re: for-Schleife gegen über while-Schleife
 
Ich finde es durchaus ok, break oder exit zu verwenden. Gerade wenn man eine Zeit mit C programiert hat, merkt man, dass dies zumindest in C ein gängiger Programmierstil ist - und meiner Meinung nach nicht unbedingt ein "schlechter".
Im Großen und Ganzen würde ich meinen, sollte sich jeder seinen eigenen Stil aneignen und verwenden. In Zeiten der Mehrfachkernprozessoren macht es doch kaum noch Sinn, ob es nun 1 oder 8 Ticks sind, die solch eine banale Abfrage benötigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:34 Uhr.
Seite 3 von 9     123 45     Letzte »    

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