2.8 BOUCLES WHILE


INTRODUCTION


Vous avez déjà vu l'instruction repeat avec laquelle vous pouvez répéter un un certain nombre de fois un ensemble ou bloc d'instructions.
L'instruction repeat est certainement très utile, mais spécifique à l'invironnement TigerJython.
L'instruction while en revanche, est présente dans de tous les langages de de programmation.

La boucle while est introduite par le mot-clé while, suivi d'une condition de boucle.
Les instructions contenues dans le bloc de la boucle peuvent être répétées aussi longtemps que la condition est satisfaite.

Quand la condition n'est plus satisfaite, le programme continue par l'instruction suivant le bloc de la boucle.


TOILE D'ARAIGNEE


Nous allons utiliser une boucle while pour faire dessiner à la tortue une spirale.
Nous allons pour cela utiliser une variable dont la valeur de départ sera égale à 5 et qui augmentera de 2 à chaque exécution de la boucle.
Tant que la condition a<200 sera vraie, les instructions du bloc de la boucle seront exécutées.

L'instruction makeTurtle() remplace l'image de tortue par celle d'une araignée (spider en anglais).





 


A MEMORISER


Une boucle while est utilisée pour répéter un bloc de programme.
La condition doit être vraie pour que le bloc de programme soit exécuté. 
Si la variable testée dans la condition n'est pas modifiée dans le bloc d'instruction, le programme va continuellement exécuter les instructions de la boucle, et on a alors une "boucle sans fin".

Dans notre environnement d'apprentissage, vous pouvez dans ce cas arrêter le programme grâce au bouton d'arrêt ou en fermant la fenêtre.
Les boucles sans fin peuvent être dangereuses, car elles nécessitent, dans les cas extrêmes le redémarrage de l'ordinateur.


CONDITIONS LIEES AVEC L'OPERATEUR "OU"


La tortue doit dessiner la figure ci-contre à l'aide d'une boucle while.
Comme vous pouvez le constater, elle est composée de triangles alternativement rouges et verts.

Pour le changement de couleur, vous pouvez utiliser l'astuce suivante : tester la variable de boucle, si elle est égale à 0, 2 ou 4, vous choisirez le crayon de couleur rouge.

L'instruction fillToPoint(0,0) permet de colorier une figure géométrique tout en la dessinant, comme si la tortue entourait la forme d'un élastique.





A MEMORISER


Lorsque vous utilisez plusieurs structures de programme, vous devez faire très attention à la bonne indentation de chaque bloc d'instructions.

Comme vous pouvez le voir, vous pouvez lier deux conditions avec l'opérateur "ou".
Une telle condition sera vérifiée si l'une ou l'autre des conditions qui la composent est vérifiée.
L'instruction fillToPoint(x,y) colorie une forme tout en la dessinant, alors que l'instruction fill() colorie une forme déjà dessinée.


CONDITIONS LIEES AVEC L'OPERATEUR "ET"


La tortue doit maintenant dessiner 10 maisons en utilisant une boucle while.

Les maisons sont numérotées de 1 à 10. Les maisons n°4, n°5, n°6 et n°7 sont plus grandes que les autres.

Dans la boucle while, le numéro de maison nr est utilisé pour déterminer la taille des maisons.
Si la variable nr est supérieure à 3 et inférieure à 8, les maisons sont grandes.

Pour colorier les maisons, on utilise l'instruction fillToHorizontal() qui colorie automatiquement l'espace existant entre la tortue et la ligne horizontale y=0.







A MEMORISER


Une condition peut être composée de plusieurs conditions reliées par un ou plusieurs opérateurs ET.
Une telle condition liée est vraie uniquement si toutes les conditions sont vraies.

L'instruction fillToHorizontal() colorie automatiquement l'espace existant entre la tortue et la ligne horizontale y=0.

L'instruction nr += 1 est une manière abrégée d'écrire nr = nr + 1
La variable nr est incrémentée de 1 à chaque exécution de la boucle.


RECTIFICATION DE BREAK EXIT


Une boucle dont la condition est toujours vraie est exécutée indéfiniment.
Vous pouvez cependant sortir de la boucle en utilisant l'instruction break().
Votre programme attire carrés tournées avec l'augmentation de la longueur de côté, à la longueur de page est de 120.








A MEMORISER


La condition 1==1 (1 est égal à 1) est évidemment toujours vraie, vous pouvez donc écrire plus simplement while True ...
(Contrairement à False, qui est toujours fausse.)

Notez l'utilisation de l'instruction abrégée i += 2, pour incrémenter de 2 la variable nommée i.

La commande print() permet d'écrire quelque chose dans la console TigerJython au bas de l'éditeur.
Pour le texte, utilisez des guillemets et en les séparant de nombres avec une virgule.
Il insère automatiquement un espace entre le texte et le nombre.
Comprenez-vous pourquoi i = 122 ?

Le mot-clé continue, plus rarement utilisé permet de retourner directement à l'instruction while, sans exécuter le reste de la boucle.


EXERCICES




1

Dessinez une étoile à 5 branches en utilisant une boucle while.
Vous devez pivoter à chaque sommet d'un angle égal à 144°.




2

Si vous changez légèrement l'angle du sommet et le nombre de répétitions, vous obtenez de nouvelles figures.
Essayez 143° et 50 répétitions.





3

Dessinez quatre carrés, dont deux sont jaunes et les autres noirs.

Vous utiliserez une boucle while et setPenColor().



4

Dessinez une fleur rouge avec 5 cercles pleins.
Aidez-vous de l'exercice n°1 (l'étoile à 5 branches).





  Traduit assez librement (et légèrement adapté) de PROGRAMMIERKONCEPT de J. Arnold, T. Kohn, et Aegidius Plüss