AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Unterschied zw. Repeat Until u. While do
Thema durchsuchen
Ansicht
Themen-Optionen

Unterschied zw. Repeat Until u. While do

Offene Frage von "Chrissi91"
Ein Thema von Chrissi91 · begonnen am 3. Nov 2007 · letzter Beitrag vom 12. Nov 2007
Antwort Antwort
Seite 2 von 3     12 3      
Muetze1
(Gast)

n/a Beiträge
 
#11

Re: Unterschied zw. Repeat Until u. While do

  Alt 3. Nov 2007, 22:01
Wieso? Vorteil vom Trekker ist die off-road Fähigkeit, das ist gleichzeitig der Nachteil vom Reisebus. Aber dafür hat der Reisebus Vorteile bei dem Sitzplatzangebot...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Unterschied zw. Repeat Until u. While do

  Alt 3. Nov 2007, 22:15
Das sind für mich keine vor- oder Nschteile, das sind für mich Folgen der unterschiedlichen Verwendungszwecke. Man kann keine Äpfel mit Birnen vergleichen. Wa aber interessant wäre, wäre mal eine gegenüberstellung einer for-Schleife in C/C++ und einer Pascal for-Schleife. Stichwort: Veränderbarkeit der Laufvariablen. Da könnte man mal die Vor- und Nachteile diskutieren und auf die interne implementation eingehen, warum das so ist und was das für etwaige Folgen hat. Würde mich sogar mal interessieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#13

Re: Unterschied zw. Repeat Until u. While do

  Alt 3. Nov 2007, 22:49
Was mich auch interessieren würde: Wann benutzt man was? Ich nehm immer die, auf die ich Lust habe.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#14

Re: Unterschied zw. Repeat Until u. While do

  Alt 3. Nov 2007, 22:50
Du benutzt etwas dann, wenn es Sinn macht, das Gegenteil nicht zu benutzen... Wie schon gesagt: mindestens ein Durchlauf ist gewollt, nimm repeat, ansonsten while. Und nun?
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Unterschied zw. Repeat Until u. While do

  Alt 4. Nov 2007, 00:40
Zitat von Chrissi91:
Ich nehm immer die, auf die ich Lust habe.
Das kann ich mir schlecht vorstellen, es müsste in deinem Programm zu Fehlern kommen.


Hier ein Beispiel für die repeat..until Schleife: Ich suche ein Koordinatenpaar, welches nicht belegt ist:
Delphi-Quellcode:
var
  X, Y: Integer;
begin

repeat
  X := Random(MaxX);
  Y := Random(MaxY);
until AreValidCoords(X, Y);

end;
Die Zuweisung von X und Y muss auf jeden Fall einmal erfolgen, nicht sinnvoll wäre eine while-schleife:
Delphi-Quellcode:
var
  X, Y: Integer;
  Valid: Boolean;
begin

Valid := false;
while (not Valid)
begin
  X := Random(MaxX);
  Y := Random(MaxY);

  Valid := AreValidCoords(X, Y);
end;

end;
Oliver Hanappi
Besucht meine neue Homepage: http://oli.hux.de
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#16

Re: Unterschied zw. Repeat Until u. While do

  Alt 4. Nov 2007, 01:37
Das eine ist eine Kopf-Abfrage, das andere eine Fuß-Abfrage.

Bei einer Kopf-Abfrage wird zuerst gefragt ob der in der Schleife befindliche Code ausgeführt werden soll.

Die Fuß-Abfrage wird genommen wenn der Code in der Schleife auf jeden Fall mindestens einmal ausgeführt werden soll.

Hier ein Beispiel für Fuß-Abfrage (ungeprüft):

Delphi-Quellcode:
var
  s, s2: String;
begin
  s := 'erster zweiter dritter vierter letzter'; // Beispiel mit Text
  //s := ''; // Beispiel für leer

  repeat

    s := Trim(s);

    if Pos(' ', s) > 0 then
      begin
        s2 := Copy(s, 1, Pos(' ', s));
        Delete(s, 1, Pos(' ', s))
      end
    else
      begin
        s2 := s;
        Delete(s, 1, Length(s))
      end;

    if s2 <> 'then
      ShowMessage(s2)
    else
      ShowMessage('String ist leer');

  until Length(s) = 0;
end;
Wenn s Text enthält werden alle Wörter einzeln angezeigt. Ist s leer, bekommt man den Hinweis, das s leer ist.

Fußabfragen werden meiner Kenntnis nach seltener genommen, da der Code zumindest einmal durchlaufen werden muß, und das muß erst nötig sein. Bei Kopfschleifen weiß man vorher auf was man sich einläßt.
  Mit Zitat antworten Zitat
Tom

Registriert seit: 8. Jan 2003
318 Beiträge
 
RAD-Studio 2009 Pro
 
#17

Re: Unterschied zw. Repeat Until u. While do

  Alt 4. Nov 2007, 08:23
Das Beispiel hingt ein wenig. Da s durchaus beim 1. Durchlauf leer sein kann (''), ist eine While-Schleife sinnvoller.


Gruß Tom
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: Unterschied zw. Repeat Until u. While do

  Alt 4. Nov 2007, 11:59
Man beachte aber bitte mein Beispiel
Oliver Hanappi
Besucht meine neue Homepage: http://oli.hux.de
  Mit Zitat antworten Zitat
Benutzerbild von nachti1505
nachti1505

Registriert seit: 7. Apr 2007
188 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: Unterschied zw. Repeat Until u. While do

  Alt 4. Nov 2007, 15:33
Zitat von idontwantaname:
Man beachte aber bitte mein Beispiel
Hab wohl wieder mal diese saftigen, roten Dinger auf den Augen... aber in deinem Beispiel sind doch beide Schleifen in der Ausgabe äquivalent (= beide liefern einen gültigen Punkt...)

Meines Wissen ist, mit einem bißchen zaubern, sowieso jede Fußgesteuerte in eine Kopfgesteuerte Schleife und vv. ersetzbar... äh... ODER? Von daher ist selbst:
Zitat:
Ich nehm immer die, auf die ich Lust habe.
kein Problem....
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#20

Re: Unterschied zw. Repeat Until u. While do

  Alt 4. Nov 2007, 17:56
@popov, für dein beispiel wäre allerdings eine kopfgesteuerte schleife sinnvoller... da im verlauf, deine routinen auf auf daten zugreifen möchten welche es ggf. nicht gibt... ;-

zu den beiden anderen beispielen, habe sie mal kurz etwas anderes formatiert...

Delphi-Quellcode:
var
  X, Y: Integer;
begin
  repeat until AreValidCoords(Random(MaxX), Random(MaxY));
end;
Delphi-Quellcode:
var
  X, Y: Integer;
begin
  while (not AreValidCoords(Random(MaxX), Random(MaxY))) do;
end;
und siehe da, diese sind fast identisch...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 05:10 Uhr.
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