Langage tcl › Les boucles

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

Conseil: toujours écrire les tests sous la forme suivante:

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.

Panneau VKZ .101 Dreieck 900mm Attention

Attention, les opérations mathématiques sont interdites sur les chaînes de caractères, en particulier il faut remplacer:

 

$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