Benutzer:Arbol01/tcl
Die Syntax von Tcl (und somit auch Tk) ist sehr einfach aufgebaut. Grundeinheit eines Tcl-Programmes sind Befehle. Diese sind normalerweise mit einer Zeile der Quelle identisch. Wenn das letzte Zeichen einer Zeile der Backslash (inverse Schrägstrich \) ist, wird der Befehl in der nächsten Zeile fortgeführt. Dies ist z.B. sinnvoll, wenn lange Definitionen grafischer Elemente in Tk eingegeben werden. Als Trenener zwischen dem Befehlsnamen und den Argumenten dienen Leerzeichen (Tabulator, Blank).
Befehl arg1 arg2...
Jedes Argument (wie auch der Befehlsname) wird als Zeichenkette (String) aufgefasst. Sollen Leerzeichen darin vorkommen, muss das Argument mit doppelten Anführungszeichen (") geklammert werden:
Befehl arg1 "arg 2 mit Blanks" arg3
Ein wichtiges Prinzip von Tcl ist die Ersetzung. Das heisst, das beim Verarbeiten eines Befehls bestimmte Teile durch Variablen oder Ergebnisse von Befehlen ersetzt werden. Um diesen Vorgang möglichst effektiv zu gestalten (Zeitverhalten bei der Programmausführung), werden Namen einzusetzender Variablen durch Dollar-Zeichen ($) gekennzeichnet, Befehlsergebnisse durch eckige Klammern ([...]) eingefügt.
Befehl1 $VarArg1 [Befehl2 arg21 arg22 ..] arg3...
Soll für ein Argument die Ersetzung ausser Kraft gesetzt werden, wird dieses durch geschweifte Klammern ({...}) markiert (dies setzt auch die Bedeutung von Zeilenend als Ende des Befehls ausser Kraft):
Befehl { ein Argument, in dem $-Zeichen NICHT interpretiert werden und das aus drei Zeilen besteht } arg2 $Var3...
Eine Besonderheit von Tcl/Tk ist, dass auf diese Weise auch die in anderen Programmiersprachen speziell in der Syntax verankerten Kontrollstrukturen und Steuermöglichkeiten mit Mitteln der Syntax darstellbar sind. In diesem Sinne sind auch alle Kontrollstrukturen nur einfache Befehle. So wird z.B. eine Funktion definiert, indem man den PROC-Befehl mit drei Argumenten (Name Parameter Body) versehen aufruft. Um sofortige Ersetzung von Variablen und Befehlen zu verhindern, wird das zweite Argument (der Body) üblicherweise durch geschweifte Klammern geschützt:
proc MeinBefehl einArg { erster Befehl ... return $Ergebnis }
Ergänzende und weiterführende Informationen sind der zu Tcl/Tk gehörenden Dokumentation zu entnehmen.
Ähnlich wie bei REXX gibt es bei Tcl keinen Variablentyp. Im Gegensatz zu REXX muß aber in Tcl die Variable deklariert werden:
set hallo "Guten Morgen" puts stdout $hallo
Eine Rechenoperation der Form
set a 27 set b 15 puts stdout $a + $b
ist in Tcl nicht möglich. Stattdessen muß man so vorgehen:
set a 27 set b 15 puts stdout [ expr $a + $b ]
Das expr wertet die Variablen $a und $b aus.
Funktionen sehen in tcl ähnlich wie in anderen Programmiersprachen wie C oder Pascal aus:
proc name { parameter } { . . return Rückgabewert }
Aufgerufen werden sie z.B. auf folgende Weise:
set variable [name parameter]
Beispiel für eine Funktion
[Bearbeiten]proc fakultät { n } { if {$n == 0} { set n [expr $n + 1]} if {$n == 1} { set n [expr $n * 1]} if {$n >= 2} { set n [expr $n * [fakultät [expr $n - 1]]]} return $n }
Aufruf:
puts [fakultät 6]
Literatur
[Bearbeiten]- Paul Raines & Jeff Tranter, tcl/tk in a Nutshell, ISBN 1-56592-433-9
- Paul Rainers, Deutsche Übersetzung von Peter Klicman. Tcl/Tk kurz & gut. O'Reilly, Köln, 2000. ISBN 3-89721-210-2.
- John K. Ousterhout. Tcl und Tk. Addison-Wesley, München, 1995. ISBN 3-89319-793-1.
- Behandelt die veralteten Versionen Tcl 7.3 und Tk 3.6.
- Mark Harrison & Michael McLennan. Effektiv Tcl/Tk programmieren. Addison Wesley Longman Verlag GmbH, Bonn, 1998. ISBN 3-8273-1409-7.