Il existe différentes types de boucles en tcl
Une boucle 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 }
ou de façon plus simplifiée le tout sur une seule ligne:
if {condition} {fais ceci} {sinon fais cela}
Pour aller plus loin, je vous renvoi sur la page dédié de la commande IF ici
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 }
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 est un équivalent à la boucle SELECT CASE d'autre langage de programmation. C'est une boucle à 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 un paramètre