Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Die while-do-Schleife (https://www.delphipraxis.net/117247-die-while-do-schleife.html)

Farhan 14. Jul 2008 21:17


Die while-do-Schleife
 
Servus,

und zwar geht um folgenden Code:

Delphi-Quellcode:
var i, max : Integer;
richtig : Boolean;
begin
{...}
i := 2;
richtig := true;
while richtig do
begin
i := i*i;
richtig := i < max;
end;
{...}
end;
In dem Tutorial, wovon ich das Beispiel erhalten habe, steht folgender Satz: Damit es keine Verwirrung gibt: der Code hat nichts mit ʺi!ʺ zutun!

Meine Frage: Womit hat der Code zutun?

Ich wäre dankbar für eure Hilfe.

MfG,
Farhan

[edit=Luckie]Delphi-Tags gesetzt. Beim nächsten mal bitte selber machen. Mfg, Luckie[/edit]

mkinzler 14. Jul 2008 21:20

Re: Die while-do-Schleife
 
Wie meinst du das? Was der Code macht?

Luckie 14. Jul 2008 21:33

Re: Die while-do-Schleife
 
Warum fragst du nicht den Autor des Tutorials?

Farhan 14. Jul 2008 21:39

Re: Die while-do-Schleife
 
Zitat:

Zitat von mkinzler
Wie meinst du das? Was der Code macht?

Allgemeiner....womit hat der Code zutun? Wenn er nicht mit " i " zutun hat.

Luckie 14. Jul 2008 21:44

Re: Die while-do-Schleife
 
Der Autor hat nur die Funktionsweise eine while-Schleife demonstriert. Der Schleifenrumpf ist ihm dabei unerheblich.

Farhan 14. Jul 2008 22:04

Re: Die while-do-Schleife
 
Zitat:

Zitat von Luckie
Warum fragst du nicht den Autor des Tutorials?

Gut, danke für den Tipp! Ich habe ihm eben gerade eine Mail gesendet.

Edit: Mal ne Frage gant nebenbei. Der Schleifenrumpf ist doch der Teil, der bei diesem Code zwischen begin und end steht, also die Anweisungen?

freak4fun 14. Jul 2008 22:47

Re: Die while-do-Schleife
 
Könntest du die Quelle angeben? Es könnte der Fall sein, das da etwas aus dem Zusammenhang gerissen wurde. Zum Beispiel, dass eine Schleife abhängig von i gezeigt wurde. :glaskugel: Wobei hier die Schleifensteuerung auch indirekt von i abhängig ist. :gruebel:

Luckie 14. Jul 2008 22:50

Re: Die while-do-Schleife
 
Zitat:

Zitat von Farhan
Edit: Mal ne Frage gant nebenbei. Der Schleifenrumpf ist doch der Teil, der bei diesem Code zwischen begin und end steht, also die Anweisungen?

Richtig.

Cyf 14. Jul 2008 23:10

Re: Die while-do-Schleife
 
Die Schleife wird hier solange wiederholt, wie Richtig true ist, dabei wir bei jeden Schleifendurchlauf mit
Delphi-Quellcode:
richtig := i < max;
geschaut ob das derzeitige i noch kleiner als das gesetzte Maximum ist, ist dies erfüllt, wird Richtig true gesetzt, ansonsten false (und die Schleife bricht ab).

Luckie 14. Jul 2008 23:18

Re: Die while-do-Schleife
 
Wobei man das auch verkürzen könnte:
Delphi-Quellcode:
while i < max do
begin
  i := i*i;
end;

Farhan 15. Jul 2008 00:11

Re: Die while-do-Schleife
 
Zitat:

Zitat von Luckie
Der Autor hat nur die Funktionsweise eine while-Schleife demonstriert. Der Schleifenrumpf ist ihm dabei unerheblich.

Genau so ist es auch! Der Autor hat mir erst vorkurzem geantwortet. :-D

Edit:

@Cyf: Ja, richtig erklärt. Der Autor hat es mir auch so ähnlich erklärt.

@Luckie: Raffiniert, deine Methode zum Verkürzen. Ganz logisch! :wink:

Amateurprofi 15. Jul 2008 00:22

Re: Die while-do-Schleife
 
Zitat:

Zitat von Luckie
Wobei man das auch verkürzen könnte:
Delphi-Quellcode:
while i < max do
begin
  i := i*i;
end;

Das ist zwar kürzer, bringt aber nicht unbedingt die gleichen Resultate.
Da vor der Schleife richtig = True gesetzt wird, wird (in der Originalversion) die Schleife, unabängig von i und max, mindestens 1 Mal durchlaufen.

In #1 wurde (vermutlich unbeabsichtigt) eine While Schleife benutzt, um eine Repeat Schleife zu simulieren.

also :

Delphi-Quellcode:
repeat
   i := i*i;
until i>=max;

mkinzler 15. Jul 2008 05:37

Re: Die while-do-Schleife
 
Die anderen Werte werden aber auch gesetzt

Amateurprofi 15. Jul 2008 08:14

Re: Die while-do-Schleife
 
Zitat:

Zitat von mkinzler
Die anderen Werte werden aber auch gesetzt

ja, aber aus dem in #1 abgebildeten code-fragment ist nicht ersichtlich, mit welchem Wert "max" belegt wird.

mkinzler 15. Jul 2008 08:19

Re: Die while-do-Schleife
 
Da es sich um eine loakle Variable handelt, wird sie bestimmt gesetzt.
Das Beispiel erscheint aber so oder so ein schlechtes zu sein

Luckie 15. Jul 2008 08:42

Re: Die while-do-Schleife
 
Zitat:

Zitat von Amateurprofi
Das ist zwar kürzer, bringt aber nicht unbedingt die gleichen Resultate.
Da vor der Schleife richtig = True gesetzt wird, wird (in der Originalversion) die Schleife, unabängig von i und max, mindestens 1 Mal durchlaufen.

Ich bin davon ausgegangen, dass natürlich i und max entsprechend gesetzt werden.

Amateurprofi 15. Jul 2008 17:56

Re: Die while-do-Schleife
 
Zitat:

Zitat von mkinzler
Da es sich um eine loakle Variable handelt, wird sie bestimmt gesetzt.
Das Beispiel erscheint aber so oder so ein schlechtes zu sein

Es ist nicht die Frage ob sie gesetzt wird, sonder, mit welchem Wert sie gesetzt wird.
Abhängig hiervon liefert Luckies "verkürzter" Code identische oder auch andere Ergebnisse als der Originalcode.

Worauf ich hinweisen wollte ist, daß man beim Optimieren von Routinen darauf achten muß, daß der "optimierte" Code die selben Ergebnisse liefert, wie der Originalcode.
Darüber, daß das Beispiel ein gar gräßliches ist, herrscht, glaube ich, kein Zweifel.


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