For- und While-"Schleifchen" sind intern eigentlich gleich.
Bei den Repeat-Until-"Schleifchen" wird nur der Ausdruck zuletzt ausgewertet
Delphi-Quellcode:
for i := i2 to i3 do begin
if xyz then break;
end;
// entspricht (bzw)
i := i2;
while i <= i3 do begin
if xyz then break;
inc(i);
end;
// nja, eigentlich mehr diesem, wenn man bedenkt,
// daß Delphi i3 nur zu Begin der Schleife auswertet und das ergebnis zwischenspeichert
i := i2;
e := i3;
while i <= e do begin
if xyz then break;
inc(i);
end;
// und Delphi macht intern aus der For-, bzw der 2. While-Schleife dieses
i := i2;
e := i3;
Loop:
if i > e then goto LoopExit;
if xyz then goto LoopExit;
inc(i);
goto Loop;
LoopExit:
// PS: das ganze mit Repeat-Until, statt While, sieht etwa so aus
i := i2;
e := i3;
Loop:
if xyz then goto LoopExit;
inc(i);
if i <= e then goto Loop;
LoopExit:
// alles ohne CodeOptimierung
so und jetzt sage mal einer GOTO / Exit / Break seien so schlecht, wenn intern eh alles auf GOTO+IF aufbaut
Am Ende hat alles seine Vor- und Nachteile.
Und ich versuch das zu verwenden, welches in der entsprechenden Situation am Übersichtlichsten/Einfachsten ist.
[add] *rote kästen ignorier*
[add]
Nur hier sollten endlich mal alle den Unterschied zwischen EXIT und Break/Continue begreifen
Exit - beendet die Prozedur/Funktion
Break - beendet die Schleife