Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Unterschied While-Schleife <-> RepeatUntil-Schleife (https://www.delphipraxis.net/170636-unterschied-while-schleife-repeatuntil-schleife.html)

Bummi 27. Sep 2012 06:58

AW: Unterschied While-Schleife <-> RepeatUntil-Schleife
 
das hast Du:
Delphi-Quellcode:
var
zahl:Integer;
begin
      Zahl:=1;
      Repeat
        Memo1.lines.Add(IntToStr(Zahl));
        Zahl:=Zahl+1;
      Until Zahl<10;
end;
das schätze ich meinst Du, wenn man von einer Schleife sprechen will (oder ich verstehe Dein Beispiel nicht):
Delphi-Quellcode:
var
zahl:Integer;
begin
      Zahl:=1;
      Repeat
        Memo1.lines.Add(IntToStr(Zahl));
        Zahl:=Zahl+1;
      Until Zahl>10;
end;

Sir Rufo 27. Sep 2012 06:59

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

Das ist der weitere besondere Unterschied zwischen den Schleifen
  • WHILE => Start-Bedingung
    Delphi-Quellcode:
    ( i < 10 )
  • REPEAT => Abbruch-Bedingung
    Delphi-Quellcode:
    not ( i < 10 )
    oder
    Delphi-Quellcode:
    ( i >= 10 )

himitsu 27. Sep 2012 09:09

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

Zitat von Sir Rufo (Beitrag 1184620)
Das ist der weitere besondere Unterschied zwischen den Schleifen
  • WHILE => Start-Bedingung
    Delphi-Quellcode:
    ( i < 10 )
  • REPEAT => Abbruch-Bedingung
    Delphi-Quellcode:
    not ( i < 10 )
    oder
    Delphi-Quellcode:
    ( i >= 10 )

Zitat:

Zitat von himitsu (Beitrag 1184579)
Bei REPEAT wird erst der Schleifeninhalt ausgeführt und dann die Abbruchbedingung (eigentlich die Fortzetzungsbedingung) gebrüft,

bei WHILE ein True = Ausführen
bei REPEAT UNTIL ein True = Abbrechen

Man kann es sich auch ganz einfach merken:
True = gehe zum nächsten Befehl (meist die nächste Quellcodezeile)
- WHILE = geh in die nachfolgende Schleife rein
- REPEAT = geh aus der vorherigen Schleife raus

Maya 27. Sep 2012 09:10

AW: Unterschied While-Schleife <-> RepeatUntil-Schleife
 
Ich denke, das kann man drehen und wenden wie man will, wenn man es nur zur Veranschaulichung nutzen möchte und es keinen direkten Nutzen/Zweck/Ziel hat.

Beide Versionen zeigen, dass diese Schleifen unterschiedlich funktionieren. :)

Jonas Shinaniganz 27. Sep 2012 14:01

AW: Unterschied While-Schleife <-> RepeatUntil-Schleife
 
Also für die Schule würde Ich vielleicht ein Beispiel bringen, welches richtig schön anschaulich ist.

Dazu verwendest du am besten stimmige Variablennamen:

Beispiel:

In ein Fass können 10 Eimer Wasser gefüllt werden.
Das Fass darf nicht überlaufen und muss gefüllt werden.

Delphi-Quellcode:
var
  FassIstVoll : Boolean;

While not(FassIstVoll) do
  KippeEimerRein;

repeat
  KippeEimerRein;
until(FassIstVoll)
Wenn das Fass mit 10 Eimern gefüllt ist, würdest du in der repeat Schleife einen Eimer rein kippen, dann würde das Fass überlaufen. In der While Schleife würde dies nicht passieren, weil du zuerst überprüfst ob die Bedingung TRUE ergibt.

Grüße

stina 7. Mär 2013 12:51

AW: Unterschied While-Schleife <-> RepeatUntil-Schleife
 
uses
SysUtils;
var
Zahl1: Integer;
Zahl2: Integer;

begin
repeat

until (zahl1<>zahl2);
Writeln('Zufallszahl: geben sie eine Zahl zwischen 0 und 20 ein. Sie haben 3 Versuche');
randomize;
Zahl2:= Random(20);
readln(Zahl1);
if Zahl1=Zahl2 then write('Richtig es ist:'+IntToStr(Zahl2));
if Zahl1<Zahl2 then write('Falsch es ist zu klein');
if Zahl1>Zahl2 then write('Falsch es ist zu groß');
readln;
writeln('Zweiter Versuch');
readln(Zahl1);
if Zahl1=Zahl2 then write('Richtig es ist:'+IntToStr(Zahl2));
if Zahl1<Zahl2 then write('Falsch es ist zu klein');
if Zahl1>Zahl2 then write('Falsch es ist zu groß');
readln;
writeln('Dritter Versuch');
readln(zahl1);
if Zahl1=Zahl2 then write('Richtig es ist:'+IntToStr(Zahl2));
if Zahl1<Zahl2 then write('Falsch es ist zu klein');
if Zahl1>Zahl2 then write('Falsch es ist zu groß');
readln;
if Zahl1>Zahl2 then write('Die richtige Zahl ist: '+IntToStr(zahl2));
if Zahl1<Zahl2 then write('die richtige Zahl ist: '+IntToStr(zahl2));
readln;



try
{ TODO -oEntwickler -cKonsole Main : Hier Code einfügen }
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;

end.





is das richtig so????? is für zufallszahlen möchte aber wissen ob die schleife richtig is

DeddyH 7. Mär 2013 12:57

AW: Unterschied While-Schleife <-> RepeatUntil-Schleife
 
Editiere Deinen Beitrag doch bitte noch einmal, markiere den Code und drücke dann auf die "Helm"-Schaltfläche, um Delphi-Tags zu setzen. Dadurch wird der Quelltext viel lesbarer.

Dalai 7. Mär 2013 13:00

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

Zitat von stina (Beitrag 1206381)
is das richtig so?????

Auch wenn schon wieder jemand schneller war, frage ich mal ganz unvoreingenommen: Findest du den Code in deinem Beitrag lesbar?

Ich muss(te) mich echt zusammenreißen, um nicht "deutlicher" zu werden...

MfG Dalai

Klaus01 7. Mär 2013 13:55

AW: Unterschied While-Schleife <-> RepeatUntil-Schleife
 
.. was mag das "Hier Code einfügen bedeuten"?

Delphi-Quellcode:
begin

  try
  { TODO -oEntwickler -cKonsole Main : Hier Code einfügen }
  except
  on E: Exception do
    Writeln(E.ClassName, ': ', E.Message);
end;

end.
Dein Schleifenrumpf mag ok. sein.
Delphi-Quellcode:
repeat

until (zahl1<>zahl2);
Allerdings fehlt das was die Schleife tun soll.

Da zahl1 und zahl2 nicht mit einem Wert vorbelegt (initialisiert) sind
hast Du hier eine Endlosschleife, denn innerhalb der Schleife werden die
Werte auch nicht geändert.
Delphi-Quellcode:
versuche :=0;
repeat
  Write('Bitte erste Zahl eingeben: ');
  readln(zahl1);
  Write('Bitte zweite Zahl eingeben: ');
  readln(zahl2);
  if (zahl1 = zahl2) then
    Write('Gewonnen')
  else
    Write('Ein neuer Versuch');

  versuche := versuche +1;

until (zahl1 <> zahl3) or (versuche < 3);

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:21 Uhr.
Seite 2 von 2     12   

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