AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Unterschied While-Schleife <-> RepeatUntil-Schleife
Thema durchsuchen
Ansicht
Themen-Optionen

Unterschied While-Schleife <-> RepeatUntil-Schleife

Ein Thema von Crattely · begonnen am 26. Sep 2012 · letzter Beitrag vom 7. Mär 2013
 
Popov
(Gast)

n/a Beiträge
 
#6

AW: Unterschied While-Schleife <-> RepeatUntil-Schleife

  Alt 26. Sep 2012, 16:02
Also repeat-until nimmt man, wenn die Schleife mindestens ein Mal ausgeführt werden soll. Hier ein kleines Beispiel:

Delphi-Quellcode:
var
  Eingabe: string;
begin
  repeat
    Eingabe := InputBox('Eingabe', 'Geben sie einen Namen ein', '');
  until Trim(Eingabe) <> '';

  ShowMessage('Der Name lautet: ' + Eingabe);
end;
Die repeat-until Schleife achtet hier drauf, dass ein Name eingegeben wird. Zuerst wird über InputBox nach einem Namen gefragt. Wird ein leeres Feld zurückgegeben (das wird in until geprüft) geht es zurück zu repeat und die Frage wird wiederholt. Das Ganze wird wiederholt bis die Eingabe nicht leere ist.

Ein weiteres Beispiel. Gesucht sind Zufallszahlen 2, 5 oder 7. In der Schleife wird einfach eine Zufallszahl zwischen 0 und 9 erzeugt, aber so lange wiederholt bis die Zufallszahl entweder 2, 5, oder 7 ist.

Delphi-Quellcode:
var
  k: Integer;
begin
  Randomize;
  repeat
    k := Random(10);
  until (k = 2) or (k = 5) or (k = 7);

  ShowMessage('Die Zufallszahl aus 2, 5 oder 7 lautet: ' + IntToStr(k));
end;
-----------------

Bei while wird zuerst geprüft ob die Schleife überhaupt nötig ist. Ein schönes Beispiel findet man zu Pos Funktion:

Delphi-Quellcode:
var
  S: string;
begin
  S := ' 123.5';
  { Leerzeichen in Nullen konvertieren }
  while Pos(' ', S) > 0 do
    S[Pos(' ', S)] := '0';
end;
In S ist eine Zahl die vorne paar Leerzeichen enthält. In der while Zeile wird zuerst geprüft ob sich in S noch ein Leerzeichen befindet, wenn ja dann wird es in der Schleife durch ein 0 Zeichen ersetzt.

Vereinfacht könnte man sagen, dass es bei while bereits ein Ergebnis gibt, das lediglich mit Hilfe von while-Schleife irgendwie noch bearbeitet oder überprüft wird. Bei repeat wird in der Schleife erst das Ergebnis erzeugt und dann unter until überprüft. Wie gesagt, vereinfacht dargestellt.
  Mit Zitat antworten Zitat
 


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 12:32 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