En Tcl toute variable est une chaîne. Pour affecter un variable on utilise l'instruction set:
% set a 2 2Si la variable n'existai pas, elle est crée lors de la première affectation.
%puts Salut Salut %puts Bonjour yves can not find channel named "Bonjour"Pour pouvoir insérer des espaces dans une chaîne il faut la mettre entre guillemets:
%puts "Bonjour yves" Bonjour yves
% puts $a 2 %puts "La valeur de a est:$a" La valeur de a est:2Le caractère $ placé devant le nom d'une variable indique à l'interpréteur de la remplacer par son contenu.
if {info exists a} {
puts "La variable a vaud:$a"
} else {
puts "La variable a n'existe pas"
}
Pour détruire une variable:
unset a
% expr 3 + 4 7 % expr 2 + 3*4 14Par défaut la division de deux entiers donne un résultat entier:
% expr 5/2 2Pour obtenir un résultat décimal, il faud qu'au moins l'un des chiffres soit décimal:
% expr 5.0/2 2.5ou
% expr 5/2.0 2.5
Une chaîne de caractère peut être considéré comme une liste ou les espaces servent de séparateurs:
% set liste "zero un deux trois quatre cinq" zero un deux trois quatre cinqLongueur d'une liste:
% llength $liste 6
%lindex $liste 3 troisVous remarquerez que le premier élément d'une liste a pour index 0.
%foreach mot $liste {
puts $mot
}
zero
un
deux
trois
quatre
cinq
%set album(titre) "A Bigger Bang" A Bigger Bang
%set album(1,titre) "Rough Justice" Rough JusticeOn ne peut pas affecter de valeur à une variable de type tableau:
% set album 1 can't set "album": variable is array
% set a 1
% if {$a > 0} {
puts "a est positif"
} else { ;# le else doit être sur la même ligne que l'accolade fermante
puts "a est négatif"
}
Attention ! on ne peut insérer des saut de ligne qu'entre les accolades:
% if {$a > 0}
{
puts "a est positif"
}
Ceci provoquera une erreur.
% for {set i 0} {$i<10} {incr i} {
puts $i
}
% set i 0
% while {$i<10} {
puts $i
incr i
}
% set a 3
switch $a {
1 { puts un }
2 { puts deux }
3 { puts trois }
4 { puts quatre }
default { puts "erreur" }
}
set id [open $nom_fichier "r"]Options d'ouverture:
gets $id ligneécriture:
puts $id "une ligne"Fermeture du fichier:
close $idVérifier l'existence d'un fichier:
if { [file exists $monfichier]} {
puts "$monfichier existe"
} else {
puts "Fichier introuvable:\n $monfichier"
}
proc nom_de_procedure { argument1 argument2 ... } {
return 1
}
%set chaine "Bonjour" Bonjour %puts [string length $chaine] 7
#include <tcl.h> #include <tk.h> Tcl_Main(int , char ** , init_Tcl);
int init_Tcl(Tcl_Interp *interp)
{
// Initialisation TCL:
if (Tcl_Init(interp) != TCL_OK) {
fprintf(stderr, "Tcl_Init failed: %s\n", interp->result);
return TCL_ERROR;
}
// Initialisation TK:
if (Tk_Init(interp) != TCL_OK) {
fprintf(stderr, "Tk_Init failed: %s\n", interp->result);
return TCL_ERROR;
}
}
Pour permettre l'appel de procédures C à partir du script tcl:
Tcl_CreateCommand(interp, str_nom_proc_tcl, nom_proc_C , (ClientData) 0,NULL);