Die Schleife ist ein gemeinsames Element in allen Programmiersprachen. Delphi hat drei Kontrollstrukturen, die Codeblöcke wiederholt ausführen: for, repeat… till und while… do.
Angenommen, wir müssen eine Operation eine feste Anzahl von Malen wiederholen.
// Zeige 1,2,3,4,5 Nachrichtenfelder
var j: ganze Zahl;
Start
zum j: = 1 zu 5 tun
Start
ShowMessage ('Box:' + IntToStr (j));
Ende;
Ende;
Der Wert einer Kontrollvariablen (j), die eigentlich nur ein Zähler ist, bestimmt, wie oft eine for-Anweisung ausgeführt wird. Das Schlüsselwort für das Einrichten eines Zählers. Im vorhergehenden Beispiel wird der Startwert für den Zähler auf 1 gesetzt. Der Endwert wird auf 5 gesetzt.
Wenn die for-Anweisung ausgeführt wird, wird die Zählervariable auf den Startwert gesetzt. Delphi als prüft, ob der Wert für den Zähler kleiner als der Endwert ist. Wenn der Wert größer ist, wird nichts getan (die Programmausführung springt zur Codezeile, die unmittelbar auf den for-Schleifen-Codeblock folgt). Wenn der Startwert kleiner als der Endwert ist, wird der Hauptteil der Schleife ausgeführt (hier: das Meldungsfeld wird angezeigt). Schließlich fügt Delphi dem Zähler eine 1 hinzu und startet den Vorgang erneut.
Manchmal muss man rückwärts zählen. Das bis zu Das Schlüsselwort gibt an, dass der Wert eines Zählers bei jeder Ausführung der Schleife um eins dekrementiert werden soll (es ist nicht möglich, ein anderes Inkrement / Dekrement als eins anzugeben). Ein Beispiel für eine for-Schleife, die rückwärts zählt.
var j: ganze Zahl;
Start
zum j: = 5 bis zu 1 tun
Start
ShowMessage ('T minus' + IntToStr (j) + 'Sekunden');
Ende;
ShowMessage ('Für Sequenz ausgeführt!');
Ende;
Hinweis: Es ist wichtig, dass Sie den Wert der Steuervariablen niemals in der Mitte der Schleife ändern. Dies führt zu Fehlern.
Das Schreiben einer for-Schleife in eine andere for-Schleife (Verschachteln von Schleifen) ist sehr nützlich, wenn Sie Daten in eine Tabelle oder ein Raster einfügen / anzeigen möchten.
var k, j: ganze Zahl;
Start
// Diese Doppelschleife wird 4x4 = 16 mal ausgeführt
zum k: = 1 zu 4 tun
zum j: = 4 bis zu 1 tun
ShowMessage ('Box:' + IntToStr (k) + ',' + IntToStr (j));
Ende;
Die Regel für das Verschachteln von for-next-Schleifen ist einfach: Die innere Schleife (j counter) muss abgeschlossen sein, bevor die nächste Anweisung für die äußere Schleife angetroffen wird (k counter). Wir können dreifach oder vierfach verschachtelte Schleifen oder sogar mehr haben.
Hinweis: Im Allgemeinen sind die Schlüsselwörter begin und end nicht unbedingt erforderlich, wie Sie sehen können. Wenn begin und end nicht verwendet werden, wird die Anweisung, die unmittelbar auf die for-Anweisung folgt, als Hauptteil der Schleife betrachtet.
Wenn Sie Delphi 2005 oder eine neuere Version haben, können Sie die "neue" Iteration für Elemente in Auflistungsstilen für Container verwenden. Das folgende Beispiel zeigt die Iteration über Zeichenfolgenausdrücke: Überprüfen Sie für jedes Zeichen in der Zeichenfolge, ob das Zeichen entweder "a" oder "e" oder "i" ist..
const
s = 'Über Delphi-Programmierung';
var
c: char;
Start
zum c im s tun
Start
wenn c im ['a', 'e', 'i'] dann
Start
// etwas tun
Ende;
Ende;
Ende;
Manchmal wissen wir nicht genau, wie oft eine Schleife durchlaufen soll. Was ist, wenn wir eine Operation wiederholen möchten, bis wir ein bestimmtes Ziel erreichen??
Der wichtigste Unterschied zwischen der while-do-Schleife und der repeat-until-Schleife besteht darin, dass der Code der repeat-Anweisung immer mindestens einmal ausgeführt wird.
Das allgemeine Muster beim Schreiben einer Schleife vom Typ repeat (and while) in Delphi lautet wie folgt:
wiederholen
Start
Aussagen;
Ende;
bis um Bedingung = wahr
während Bedingung = wahr tun
Start
Aussagen;
Ende;
Hier ist der Code zum Anzeigen von 5 aufeinanderfolgenden Meldungsfeldern mit der Funktion "Wiederholen bis":
var
j: ganze Zahl;
Start
j = 0;
wiederholen
Start
j: = j + 1;
ShowMessage ('Box:' + IntToStr (j));
Ende;
bis um j> 5;
Ende;
Wie Sie sehen, wertet die repeat-Anweisung eine Bedingung am Ende der Schleife aus (daher wird die repeat-Schleife mindestens einmal ausgeführt)..
Die while-Anweisung hingegen wertet eine Bedingung am Anfang der Schleife aus. Da der Test oben ausgeführt wird, müssen wir in der Regel sicherstellen, dass die Bedingung sinnvoll ist, bevor die Schleife verarbeitet wird. Ist dies nicht der Fall, kann der Compiler entscheiden, die Schleife aus dem Code zu entfernen.
var j: ganze Zahl;
Start
j = 0;
während j < 5 tun
Start
j: = j + 1;
ShowMessage ('Box:' + IntToStr (j));
Ende;
Ende;
Die Prozeduren "Break" und "Continue" können verwendet werden, um den Ablauf sich wiederholender Anweisungen zu steuern: Die Prozedur "Break" bewirkt, dass der Ablauf der Steuerung eine for-, while- oder repeat-Anweisung beendet und mit der nächsten Anweisung fortgesetzt wird, die auf die Schleifenanweisung folgt. Weiter ermöglicht es dem Steuerungsfluss, mit der nächsten Iteration der wiederholten Operation fortzufahren.