Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Prism fragen zu den schleifen (https://www.delphipraxis.net/113197-fragen-zu-den-schleifen.html)

mcfit 4. Mai 2008 13:03


fragen zu den schleifen
 
guten tag,

ich hab mal ne frage zu den schleifen von delphi. man unterscheidet ja in zählschleife (for ..to..do), schleife mit anfangbedingung (while..do) und in schleife mit endbedingung (repeat..until).

meine frage ist jetzt was sind die jeweiligen vor und nachteile dieser schleifen und was sind typische anwendung für die jeweilige schliefe???

thx

mfg

mkinzler 4. Mai 2008 13:10

Re: fragen zu den schleifen
 
Eine For Schleife ist auch eine Entry-Condition-Loop. Die Besonderheit ist das zu Beginn schon bekannt ist, wie oft sie durchlaufen wird.
Entry-Condition-Loop: Abweisend, d.h. wird u.U. nie durchlaufen, Bedingung muss wahr sein, das Körper ausgeführt wird.
Exit-Condition-Loop: Nichtabweisend, d.h. wird auf jedenfall einmal ausgeführt. Bedingung muss wahr sein, das abgebrochen wird

mcfit 6. Mai 2008 19:44

Re: fragen zu den schleifen
 
und was wäre jetzt ein typisches beispiel?? also für for - schleifen ist mir dat jetzt klar aber für while und repeat noch nicht ganz weil sie am grunde ähnlich sind??

mfg

mkinzler 6. Mai 2008 19:55

Re: fragen zu den schleifen
 
While ist eine Entry-Condition; eine Repeat eine Exit-Condition-Loop

Klaus01 6. Mai 2008 20:20

Re: fragen zu den schleifen
 
... oder man könnte auch sagen,

while ist eine kopfgesteuerte Schleife, weil hier am Anfang der Schleife entschieden
wird, durchlaufe ich die Schleife oder nicht.

repeat until ist eine fussgesteuerte Schleife, weil hier am Schleifenende entschieden
wird, durchlaufe ich die Schleife ein weiteres Mal oder nicht.
Bei fussgesteuerten Schleifen wird der Schleifenkörper mindestens
einmal durchlaufen.

Grüße
Klaus

grenzgaenger 6. Mai 2008 22:12

Re: fragen zu den schleifen
 
Zitat:

Zitat von mcfit
man unterscheidet ja in zählschleife (for ..to..do), schleife mit anfangbedingung (while..do) und in schleife mit endbedingung (repeat..until).

tja, nicht ganz. es gibt nur zwei arten von schleifen, die kopf- und die fussgesteuerte. die fussgesteuerte ist wird nach der standkontrollstruktur repeat-until genannt und wird mind. einmal durchlaufen. die kopfgesteuerte wird meist mit while oder mit for (spezialfall der while) gebildet. Wobei die beiden schleifenarten auch mit anderen sprachmitteln gebildet werden könnten. vgl. Nassi-Schneiderman.

zur kopfgesteuerten ist noch zu sagen, dass es nicht gewährleistet ist, dass diese durchlaufen wird.

<HTH>

rotfc 6. Mai 2008 22:35

Re: fragen zu den schleifen
 
Ohne den Vorrednern widersprechen zu wollen/können:

Die FOR-Schleifen wissen vorher, wann sie aufhören sollen.

Die WHILE-Schleifen erfahren ihre Abbruch-Bedingung oft erst in der Schleife selbst.

mkinzler 6. Mai 2008 22:37

Re: fragen zu den schleifen
 
Trotzdem ist die For-Schleife meistens als While-Schleife implementiert

rotfc 6. Mai 2008 23:16

Re: fragen zu den schleifen
 
Zitat:

Zitat von mkinzler
Trotzdem ist die For-Schleife meistens als While-Schleife implementiert

Stimmt (fast immer). Und nun was?

mkinzler 7. Mai 2008 05:35

Re: fragen zu den schleifen
 
Zitat:

Und nun was?
Was meinst du?

angos 7. Mai 2008 08:21

Re: fragen zu den schleifen
 
Leute Leute, BackToTopic ;). Der Neue möchte gerne Beispiele zu den Schleifen:

repeat/until: Gehen wir von einem Quiz mit meheren Antwortversuchen aus: Jede Frage wird mindestens einmal gestellt, kann aber auch
öfters gestellt werden. also lohnt sich dort repeat until
Delphi-Quellcode:
repeat
  Textausgabe: "Welches Delphiforum ist das Beste?"
  warte auf Benutzereingabe
until Benutzereingabe = 'Delphi Praxis';
while: Wir haben eine Datei mit einer unbekannten Anzahl von Zeilen. Nun lesen wir solange aus der Datei aus bis alles gelesen ist. Es kann aber auch sein, dass die Datei komplett leer ist, dann darf das gar nicht ausgeführt werden:

Delphi-Quellcode:
while not Eof(File) do // Solange das ende der Datei nicht erreicht ist
begin
  Readln(File, string); // Lese aus der Datei
  ... // und dann mach was damit
end;

rotfc 7. Mai 2008 09:22

Re: fragen zu den schleifen
 
Zitat:

Zitat von mkinzler
Zitat:

Und nun was?
Was meinst du?

Naja, Du hast eben Recht ;-)

skyobserver 7. Mai 2008 12:04

Re: fragen zu den schleifen
 
Im Hinblick auf die Geschwindigkeit sollte man vielleicht noch
erwähnen, daß die FOR-Schleife die mit "Abstand" langsamste aller
Schleifen ist.
Eine WHILE- oder REPEAT-Schleife mit Zähler-Variable und entsprechender
Inkrementierung/Dekrementierung (Hoch-/Runterzählen) ist schneller.

Der Unterschied ist aber so minimal, daß man ihn in normalen Programmen
niemals spüren würde und daher nur dann mit WHILE eine FOR-Schleife "baut"
wenn es gilt das allerletzte "Quäntchen" Zeit rauszuholen.


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