![]() |
Leçon 9:Boucle Tant Que |
A la leçon précédente, nous avons vu la boucle Pour, qui permet de répéter un certain nombre de fois un sous-programme. Nous connaissions alors a priori le nombre de fois que le sous-programme devait être exécuté. Il n'en est pas toujours ainsi. Il arrive que l'on sache la condition de sortie de la boucle, mais pas le nombre d'itérations. Dans ce cas, on utilisera une boucle TantQue.
Dans cette leçon, nous allons écrire un sous-programme AllerALaCaseXY
qui déplace le robot vers une case de coordonnées (x,y), x
et y étant deux variables dont les valeurs auront été affectées avant
d'appeler le sous-programme. Pour faire aller le robot à la case (x,y), on le
déplacera vers la position (x,y) tant qu'il ne sera pas arrivé à
destination. On utilisera pour cela une boucle TantQue et un autre
sous-programme AllerVersXY
.
AllerVersXY
Ce sous-programme permettra:
![]() |
Les boucles sont utilisables à partir du niveau 5:
choisissez en conséquence un niveau supérieur ou égal
à 5. Utilisez le terrain |
dyRobot=0 et (x-xRobot)*dxRobot > 0:
AllerALaCaseXY
La boucle TantQue est représentée par un bloc boucle de même forme que la boucle Pour (voir leçon 8). L'en-tête de la boucle contient l'instruction TantQue qui est de la forme:
TantQue condition logique
Si la condition logique donne le résultat
Vrai, l'organigramme présent dans le corps de la boucle est exécuté.
Puis l'instruction Fin TantQue ramène l'exécution à
l'en-tête de la boucle, la condition est à nouveau évaluée,
etc.
Si la condtion logique donne le résultat Faux, le corps de la boucle
n'est pas exécuté et l'exécution se poursuit au bloc suivant
la boucle.
![]() |
- Créez un nouveau sous-programme auquel vous donnerez le nom
|
AllerALaCaseXY
, le corps de la boucle, c'est-à-dire
l'appel du sous-programme AllerVersXY
, sera exécuté
tant que la condition xRobot <> x ou yRobot
<> y sera vraie; xRobot <> x est une
expression logique qui compare xRobot et x, le résultat
est vrai si xRobot est différent de x; de même,
yRobot <> y est vraie si yRobot est différent
de y; en conséquence la condition xRobot <> x
ou yRobot <> y sera vraie si le robot n'est pas dans
la case (x,y).![]() |
- Entrez l'organigramme ci-dessous dans le programme principal. |
On utilisera comme d'habitude le terrain 9x9 sans obstacles. Le travail se fera en deux phases:
AllerVersXY
Il s'agit dans un premier temps d'écrire un sous programme qui permettra:
AllerALaCaseXY
Il s'agit ensuite d'écrire un sous-programme AllerALaCaseXY
,
utilisant le sous-programme AllerVersXY
, qui permettra au robot
d'atteindre la case-cible.
![]() ![]() ![]() |