Next: Prozeduren
Up: Kontrollstrukturen
Previous: Verzweigungen
Im Bezug auf Schleifen stehen gleich mehrere Alternativen zur Auswahl. Für Iterationen
einer Variablen bietet sich die for-Schleife, für Iterationen über eine Liste die
foreach-Schleife und für Abbruchkriterien die while-Schleife an. In
den folgenden Beispielen wollen wir jede Variante mit einer Einsatzmöglichkeit vorstellen.
- for-Schleife
Die for-Schleife benötigt
vier Listen (in geschweifte
Klammern eingeschlossen) als Argumente. In der ersten wird der Iterationsvariablen
ein Startwert zugewiesen. In der zweiten wird das Abbruchkriterium definiert
(durch Vergleichsoperatoren wie <, >, <=, >=, ==,
!=). In der dritten wird der Variablen bei jedem Schritt ein Wert zugewiesen
(z.B. durch incr a zur Erhöhung um 1 oder incr a -5
zur Verminderung um 5). Und in der vierten und letzten steht das Skript welches bei
jedem Schleifendurchlauf ausgeführt werden soll (Schleifenrumpf). Wichtig ist hier,
daß die geöffnete geschweifte Klammer der vierten Liste in der ersten Zeile der
for-Schleife steht, da sonst diese Liste nicht als Argument des Befehls
for erkannt wird.
for {set i 1} {$i <= 10} {incr i} {
puts "Nummer $i"
}
- while-Schleife
Die while-Schleife benötigt nur zwei Listen als
Argumente, und zwar das Abbruchkriterium als erstes, und das Skript des
Schleifenrumpfes als zweites.
set i 1
set abbruch 0
while {abbruch != 1} {
incr i
puts "Nummer $1"
if {i == 5} {
set abbruch 1
}
}
- foreach-Schleife
Diese dritte Schleifenform eignet sich hervorragend, um
ein Skript für jedes Element einer Liste (welche z. B. Dateinamen enthält)
auszuführen. Hierzu benötigt sie als erstes Argument eine Variable, in welcher
bei jedem Schritt das aktuelle Element gespeichert wird. Als zweites die Liste
selbst und als drittes wieder den Schleifenrumpf.
set liste {test.c test2.c a.out}
foreach i $liste {
rm $i
}
Wenn sich ein Tcl-Skript in einer Schleife befindet, so kann es diese durch
einen Aufruf von break oder continue
abbrechen. Sollen nur einzelne
Iterationen der Schleife übersprungen werden so wird der Befehl continue benutzt,
welcher bewirkt, daß der Schleifenrumpf übersprungen und in einer while-Schleife
das Abbruchkriterium sofort wieder ausgewertet wird, bzw. in einer for-Schleife
die Laufvariable (drittes Argument) verändert wird und anschließend das Abbruchkriterium
ausgewertet wird.
Next: Prozeduren
Up: Kontrollstrukturen
Previous: Verzweigungen
Sascha Scherer
Fri Dec 6 09:58:01 MET 1996