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]