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ächeDas 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:
| Schreibweise | Wirkung |
|---|---|
"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 $aAusgabe
9 3 3.5 1 1024 4.0 5 9 4 3 1 1 1 1267650600228229401496703205376 3.142 15
So führst du den Code aus: Datei hallo.tcl speichern und mit tclsh hallo.tcl ausführen (Tcl von tcl-lang.org).
Merke
- Ein Tcl-Programm ist eine Folge von Befehlen:
befehl arg1 arg2 setsetzt Variablen,$xliest,[befehl]setzt das Ergebnis ein"..."substituiert,{...}nicht;expr {...}rechnet- Alles ist ein String; Zahlen werden bei Bedarf als Zahlen interpretiert
Aufgabe
Berechne die Hypotenuse eines Dreiecks mit den Katheten 3 und 4 mit expr.