
Einführung in Tcl
Aufbau einer Tcl Anweisung : Befehlsname Parameter 1 . . . Parameter n
Zeilen, die mit einem #-Zeichen beginnen, gelten in Tcl als Kommentare.
Der Rest der Zeile wird ignoriert.
Tcl ist eine typlose Sprache. Es gibt keine Datentypen wie z.B. in Pascal oder C.
Groß- und Kleinschreibung ist in Tcl/Tk signifikant (vgl. UNIX und C).
_____________________________________________________________________
Substitutionsmechanismen
Tcl liest das zu verarbeitende Kommando ein, führt dann alle Substitutionen durch
und beginnt anschließend mit der Verarbeitung der Resultate.
Tcl kennt drei Substitutionsmechanismen :
(1) Variablensubstitution: $Name wird durch den Inhalt der Variablen ersetzt.
(2) Kommandosubstitution: [Kommando] wird durch das Ergebnis dieses
Kommandos ersetzt.
(3) Backslash-Substitution: notwendig für Sonderzeichen
_____________________________________________________________________
Auswertung von Ausdrücken
Das Kommando expr wertet den übergebenen Ausdruck arithmetisch und logisch
aus. Tcl rechnet mit Fließkommazahlen, wenn mindestens einer der Ausdrücke
eine Fließkommazahl ist.
% expr 2+3
5
% expr log(2.4)
0.875469
expr wird auch für Vergleiche von Zahlen und Zeichenketten eingesetzt.
Es gelten die aus C bekannten Vergleichsoperatoren == != < > <= >=.
Mehrere Bedingungen können logisch durch && (UND), || (ODER) und
! (NICHT) verknüpft werden.
expr liefert 1, wenn die Bedingung erfüllt ist, und 0, wenn die Bedingung
nicht erfüllt ist.
% expr 2<3
1
% expr 2<3 && 4>=5
0
_____________________________________________________________________
Variablen
Variablen werden mit set Werte zugewiesen. Der Befehl unset löscht die
Variable wieder. Wird bei der Auswertung von einem Ausdruck auf den Inhalt
einer Variablen zugegriffen, muß dies durch das $-Zeichen kenntlich gemacht
werden.
% set x 3
3
% set x [expr $x+4]
7
Der Befehl incr erhöht den Inhalt einer Variablen um einen gegebenen Wert.
% set x 3
3
% incr x 4
7
_____________________________________________________________________
Zeichenketten
Tcl kennt zahlreiche Kommandos zum Umgang mit Zeichenketten.
Die meisten der entsprechenden Kommandos bestehen aus zwei
Wörtern:
string und ein weiteres Wort wie z.B. length, das die genaue
Funktion angibt.
% set s "Tcl/Tk"
Tcl/Tk
% string length $s
6
% string toupper $s
TCL/TK
_____________________________________________________________________
Ausgabe von Variablen am Bildschirm
Für die Ausgabe von Variablen am Bildschirm eignet sich puts.
Dem Kommando wird eine Zeichenkette übergeben. Innerhalb
der Zeichenkette können beliebig viele Variablen angegeben werden.
% set x 1
1
% set y 2
2
% set z [expr $x+$y]
3
% puts "$x + $y ergibt $z."
1 + 2 ergibt 3.
_____________________________________________________________________
Listen
Listen werden in Tcl schon aus internen Gründen besonders
gut unterstützt. Jede Zeichenkette mit Leerzeichen kann als Liste
interpretiert werden. Eine Liste besteht aus einer bestimten Anzahl
von Elementen, wobei das erste Element den Index 0, das zweite
Element den Index 1 usw. hat.
% set Liste1 {Hamburg Berlin München Köln}
Hamburg Berlin München Köln
% set Liste2 [list 12 13 14]
12 13 14
% llength $Liste2
3
% lindex $Liste1 2
München
% linsert $Liste1 0 Frankfurt
Frankfurt Hamburg Berlin München Köln
_____________________________________________________________________
Arrays
Ein Array besteht aus einer Menge von Elementen, die alle unter
einer Bezeichnung, dem Namen des Array, gesammelt werden.
Als Arrayindex werden beliebige Strings akzeptiert.
Beispiel für ein Array :
set AktuelleTemperatur(Hamburg) 20.5
set AktuelleTemperatur(München) 18.5
set AktuelleTemperatur(London) 16.9
Arrayzugriff :
set LetzteTemperatur $AktuelleTemperatur(London)
_____________________________________________________________________
Verzweigungen
In Tcl stehen stehen für die Verzweigung folgende Kommandos zur Verfügung :
if {Bedingung} {Kommandos}
elseif {Bedingung} {Kommandos}
else {Kommandos}
Beispiel:
if {$a<10} {
set b 1
} else {
set b 0
}
switch zeichenkette {
Muster_1 {Kommandos}
. . .
Muster_n {Kommandos}
}
Beispiel:
switch $x {
a {puts "Variante A"}
b {puts "Variante B"}
c {puts "Variante C"}
}
_____________________________________________________________________
Schleifen
Tcl kennt drei Kommandos zur Bildung von Schleifen:
while, foreach und for
while {Bedingung} {Kommandos}
foreach Variable Liste {Kommandos}
for {Initialisierung} {Bedingung} {Next} {Kommandos}
Beispiele:
while {$x<=3} {puts $x}
for {set x 1} {$x<=3} {incr x 1} {puts $x}
% foreach x {das ist eine Liste} {puts $x}
das
ist
eine
Liste
_____________________________________________________________________
Prozeduren und Funktionen
Mit dem Kommando proc können eigene Prozeduren bzw. Funktionen
definiert werden. Die Syntax sieht folgendermaßen aus :
proc name {Parameterliste} {Kommandos}
Beispiel:
Funktionsdefinition :
proc maximum {a b} {
if {$a>$b} {
return $a
} else {
return $b
}
}
Funktionsaufruf :
set Max [maximum 4 5]