[Up][Previous][Next][Top] [Version PDF]

6-6 Structure itérative

Dans une icône de calcul, les 'instructions sont exécutées linéairement de la première (en haut) à la dernière (en bas). Il est souvent utile de pouvoir exécuter plusieurs fois une instruction ou un groupe d'instructions. Une boucle est une partie du programme qui est exécutée plusieurs fois. Nous nous intéressons ici aux boucles à l'intérieur même de l'icône de calcul. En termes d'algorithme, on parle aussi d'itération

Créer un boucle c'est dire par exemple à Authorware: "Répétez 10 fois telles instructions". Pour cela vous spécifiez primo quelles instructions font partie de la boucle et secundo le nombre de répétitions.

repeat with counter := 1 to 10

beep ()

end repeat

Cette instruction dit de répéter la partie encadrée, c'est-à-dire les lignes situées entre la première ligne ('repeat...') et la dernière ('end repeat'). La ligne 'end repeat' n'a pas d'effet en soi, elle délimite simplement ce qui doit être répété (le corps de la boucle). Dans l'exemple ci-dessus, le corps de la boucle comprend une seule instruction "Beep ()", qui émet un 'bip'. Les parenthèses vides indiquent que cette fonction ne prend pas d'argument.

Les termes 'with counter := 1 to 10' indiquent le nombre de répétitions. Au lieu de dire 'répéter 20 fois', on dit de 'commencer avec une variable qui s'appelle 'counter' et qui vaut 1, ajouter 1 à chaque itération, jusqu'au moment où cette variable vaut 10. Le nom de la variable est arbitraire.

Message d'attente

Créez un programme qui affiche le message 'Je prépare les données'. Affichez le curseur 'montre'. Créez un boucle qui, à chaque passage, dessine un rectangle qui se noircit progressivement comme lors de la copie de fichiers.

Le nombre d'itérations peut être exprimé par un décompte: 'with counter := 10 down to 1'. Vous pouvez aussi fixer la fin de la boucle par une condition. Dans le cas, les instructions sont répétées tant que ('while') la condition est vérifiée.

largeur := 10

longueur := 100

repeat while largeur < longueur

largeur := largeur + 10

longueur := longueur + 1

Box (-1, 100,100, 100+longueur,100+largeur)

end repeat

Dans l'exemple ci-dessus, la largeur est initialement inférieure à la longueur, mais, à chaque itération, la première augmente de 10 et la seconde de 1. La boucle est répétée tant que la largeur est inférieure à la longueur. Essayez-le.

Le corps d'une boucle peut contenir de multiples instructions, et notamment une autre boucle. Testez le programme suivant.

repeat with N1 := 1 to 30

repeat with N2 := 1 to 25

X := N1 * 20

Y := N2 * 20

circle (-1, X , Y, X + 10, Y +10)

end repeat

end repeat

Pour chaque valeur de N1, ce programme exécute la boucle concernant N2. Donc, pour N1=1, il considère toutes les valeurs de N2, de 1 à 25. Il passe ensuite à N1=2 et reconsidère toutes les valeurs de N2, de 1 à 25, et ainsi de suite. Comme N1 et N2 sont respectivement utilisés pour calculer les coordonnées horizontales et verticales, les différents cercles sont dessinés colonne par colonne (les coordonnées X et Y sont obtenues en multipliant respectivement N1 et N2 par 20 simplement pour rendre les effets plus visibles à l'écran).

Prenez l'habitude d'indenter vos programmes c'est-à-dire d'aligner verticalement les éléments qui sont associés: le premier 'end repeat' marque la fin de la boucle sur N2 alors que le second 'end repeat' marque la fin de la boucle sur N1. On visualise ainsi mieux l'emboîtement des boucles, un peu comme des poupées russes.

Dessin de cercles

Modifiez le programme ci-dessus de telle sorte que les petits disques apparaissent rangée par rangée au lieu de colonne par colonne.