EMZETT.
Login

Kurz: Tcl (Tool Command Language, 1988, John Ousterhout) ist eine kleine, einbettbare Skriptsprache mit extrem einfacher Syntax: Alles ist ein Befehl, und alles ist ein String.

Teil des Kurses Tcl

Kapitel 1 von 8 im Kurs Tcl. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Was ist Tcl?

Tcl (Tool Command Language, 1988, John Ousterhout) ist eine kleine, einbettbare Skriptsprache mit extrem einfacher Syntax: Alles ist ein Befehl, und alles ist ein String. Ein Programm ist eine Folge von Befehlen der Form befehl arg1 arg2 .... Es gibt nur wenige Regeln (die zwölf Regeln der Dodekalogie), dafür sind sie überall gleich.

Tcl wird in der Chip-Entwicklung (EDA-Werkzeuge), für Netzwerk- und Testautomatisierung (Expect), in Datenbanken (SQLite stammt von Tcl-Autor D. Richard Hipp) und für grafische Oberflächen mit Tk eingesetzt – Tk wird auch von Python (tkinter) und Perl verwendet.

Ausführen

tclsh hallo.tcl           # Skript ausführen
tclsh                     # interaktive Konsole (%-Eingabeaufforderung)
wish gui.tcl              # Skript mit Tk-Oberfläche

Das erste Programm

puts "Hallo, Welt!"
set name "Mia"
puts "Hallo, $name!"
puts "1 + 2 = [expr {1 + 2}]"
puts -nonewline "ohne Zeilenumbruch"
puts ""
puts stdout "auf stdout"

Ausgabe:

Hallo, Welt!
Hallo, Mia!
1 + 2 = 3
ohne Zeilenumbruch
auf stdout

set setzt Variablen, $name liest sie, [...] führt einen Befehl aus und setzt das Ergebnis ein (Befehlssubstitution), expr rechnet.

Die drei Anführungsarten

Das ist der Schlüssel zu Tcl:

SchreibweiseWirkung
"text $x [cmd]"Substitution von Variablen und Befehlen
{text $x [cmd]}keine Substitution (wörtlicher Text)
[cmd args]Befehl ausführen und Ergebnis einsetzen
set x 5
puts "Doppelt: $x und [expr {$x * 2}]"
puts {Geschweift: $x und [expr {$x * 2}]}
puts "Maskiert: \$x und \[kein Befehl\]"
puts "Tab:\tZeilenumbruch folgt\nZweite Zeile"
set text "a b c"
puts [llength $text]
puts "Unicode: äöü € ä"

Ausgabe:

Doppelt: 5 und 10
Geschweift: $x und [expr {$x * 2}]
Maskiert: $x und [kein Befehl]
Tab:	Zeilenumbruch folgt
Zweite Zeile
3
Unicode: äöü € ä

Rechnen mit expr

Rechnen geschieht mit expr. Setze den Ausdruck in geschweifte Klammern – das ist schneller und sicherer:

puts [expr {7 + 2}]
puts [expr {7 / 2}]
puts [expr {7 / 2.0}]
puts [expr {7 % 3}]
puts [expr {2 ** 10}]
puts [expr {sqrt(16)}]
puts [expr {abs(-5)}]
puts [expr {max(3, 9, 4)}]
puts [expr {round(3.5)}]
puts [expr {int(3.99)}]
puts [expr {10 > 5 && 3 < 4}]
puts [expr {"abc" eq "abc"}]
puts [expr {5 == 5.0}]
puts [expr {2 ** 100}]
puts [format "%.3f" [expr {atan(1) * 4}]]
set a 4
incr a
incr a 10
puts $a

Ausgabe:

9
3
3.5
1
1024
4.0
5
9
4
3
1
1
1
1267650600228229401496703205376
3.142
15

Achtung

Ohne Klammern wertet Tcl den Ausdruck doppelt aus (expr $a + $b statt expr {$a + $b}) – langsamer und anfällig für Fehler. Ganzzahldivision 7 / 2 ergibt 3, nicht 3.5.

Merke

  • Ein Tcl-Programm ist eine Folge von Befehlen: befehl arg1 arg2
  • set setzt Variablen, $x liest, [befehl] setzt das Ergebnis ein
  • "..." substituiert, {...} nicht; expr {...} rechnet
  • Alles ist ein String; Zahlen werden bei Bedarf als Zahlen interpretiert

Übungsaufgabe

Berechne die Hypotenuse eines Dreiecks mit den Katheten 3 und 4 mit expr.

Quiz zur Selbstkontrolle

Weiter im Kurs

Weiter: Kontrollfluss und Prozeduren

Alle Kapitel: Tcl im Überblick