Il existe différentes types de boucles en tcl
Les boucles conditionnelles
Une conditionnelle s'écrit sous la forme:
if condition bloc ou bien if condition bloc1 else bloc2 ou bien if condition bloc1 elseif condition2 bloc2 ... else bloc n
Remarque importante: cette instruction s'écrit sur la même ligne, on ne peut insérer des sauts de lignes qu'à l'intérieur des accolades, ainsi:
% set a 4 % if {$a > 0} { puts $a} else {puts -$a}
#incorrect car le else n'est pas sur la même ligne que le bloc
if {condition} { bloc } else { bloc }
La condition doit, contrairement au C, être un "vrai" booléen (0 pour faux ou 1 pour vrai). Si la condition est composée de plus d'une opération arithmétique, il faut la mettre sous la forme [expr condition] qui force une évaluation mathématique et/ou booléenne de la
condition.
$chaîne1 == $chaîne2
par
[string compare $chaîne1 $chaîne2]==0
string compare est une fonction qui renvoie 0 si les deux chaînes comparées sont identiques. La bibliothèque string regroupe un nombre appréciable de commandes de traitement de chaînes de caractères.
La boucle FOR
Un boucle "FOR" s'écrit sous la forme:.
for initialisation condition incrémentation bloc
De la même manière que les tests, une boucle "FOR" s'écrit sur une même ligne, il ne peut y avoir des sauts de ligne qu'à l'intérieur d'accolades.
Exemple d'utilisation de la boucle FOR:
% for {set i 1} {$i<=10} {incr i} { puts $i }
En résumé, voici un conseil d'écriture de la boucle FOR:
for {initialisations} {condition} {incrémentations} { bloc }
La boucle WHILE (tant que)
Une boucle "WHILE" s'écrit sous la forme:
while condition bloc
Comme toute instruction Tcl/Tk, cette commande s'écrit sur la même ligne. Ainsi on ne peut mettre des sauts de lignes que dans des blocs délimités par des accolades:
Par exemple :
% set a 1 % while {$a>0} { puts $a set a [expr a - 1]
#décrémentation de a }
En résumé voici un conseil de la boucle WHILE :
while {condition} { bloc }
La boucle SWITCH
La boucle SWITCH est un équivalent à la boucle SELECT CASE d'autre langage de programmation.
C'est une boucle qui a un branchement à choix multiples
Le branchement à choix multiples s'écrit de la manière suivante:
switch chaîne modèle 1 bloc 1 ... modèle n bloc n
ou bien
switch chaîne modèle 1 bloc 1 ... modèle n bloc n default blocdefault
petit exemple :
switch $mavaleur { 0 {fonction1} 1 {fonction2} 2 {fonction3 $unparametre} }
Dans cet exemple la variable $mavaleur peut prendre 3 cas :
si $mavaleur éest égal à 0 alors j'exécute la fonction1
si $mavaleur éest égal à 0 alors j'exécute la fonction2
si $mavaleur éest égal à 0 alors j'exécute la fonction3 en lui passant unparametre