6. Le Jardin avec répétitions <<< Table des matières >>> 8. Peter suit un itinéraire fléché
L’élément item in front of Peter (item devant Peter) peut être utilisé, non seulement pour déposer un item devant Peter, mais aussi pour détecter quel item se trouve devant Peter . Nous allons utiliser ce genre de test dans une autre méthode de plantation du jardin, qui sera basée sur un cycle avec une condition .
Dans la fenêtre Basic Elements, Trash (Eléments de base, Corbeille), trouvez l’élément conditional repeating of commands (répétition conditionnelle de commandes) dans le groupe program control (contrôle du programme) . Faites-le glisser au début du programme du chapitre précédent (devant (avant) toutes les autres commandes) . Déplacez les commandes d’avance d’un pas et de dépose d’une fleur devant Peter dans le corps du cycle repeat commands (répéter les commandes) . Laissez après le cycle les commandes » tourner à gauche » et « attente de pression sur une touche » . Vous pouvez enlever les autres commandes .
L’élément de cycle while is valid (tant qu’est valide) teste une condition . Celle-ci définit pendant combien de temps les commandes du cycle doivent être répétées . Dans la condition, nous allons mettre un test qui détectera la présence d’un carré vide devant Peter . Pour procéder à l’assemblage de la condition, nous utiliserons l’élément item identity (identité de l’item) . Il se trouve dans la fenêtre Basic Elements, Trash (Eléments de base, Corbeille), dans le groupe sheet (feuille) . Faites glisser cet élément dans l’élément de cycle while is valid (tant qu’est valide) . Dans l’élément item identity (identité de l’élément), nous allons insérer deux éléments qui seront comparés . Le premier est item in front of Peter (item devant Peter) ; le second est empty square (carré vide) (depuis la fenêtre Global Variables and Functions (Variables et Fonctions Globales). Voici le résultat :
Essayez de faire tourner le programme . Peter plante des fleurs sur le bord droit de la fenêtre, se tourne vers le haut, puis attend qu’une touche soit pressée . Si le fonctionnement du programme n’est pas clair pour vous, nous pouvons l’examiner de plus près .
Comment la répétition conditionnelle fonctionne-t-elle ? La description des éléments du cycle nous dit : « tant qu’est valide (quelque chose), répétez les commandes (quelque chose) » . Si on y regarde de plus près, cela signifie la chose suivante : au début , le cycle détecte si la condition est remplie . Si c’est le cas, les commandes se trouvant dans le corps du cycle sont effectuées . Puis tout est répété à partir du début : on évalue de nouveau si la condition est remplie . Si oui, les commandes sont de nouveau effectuées . Si la condition n’est pas remplie, rien n’est effectué, le cycle s’interrompt , et le programme continue en effectuant les commandes situées après le cycle .
Le programme pourrait être ainsi décrit : au début le cycle interroge la fonction de test qui évalue si la condition est satisfaite (« La condition est-elle satisfaite ? ») . La fonction de test est, ici, la fonction qui compare des items . Elle procède à une détection : « Y a-t-il un carré vide devant Peter ? » . S’il y en a un , elle répond au cycle : « Oui, la condition est remplie . » . Dans ce cas, le cycle effectue les commandes se trouvant dans son corps -- Peter dépose une fleur et fait un pas . Ceci est répété jusqu’à ce que Peter atteigne le bord de la feuille . La fonction de test détecte alors qu’il n’y a pas de carré vide devant Peter et en informe le cycle , qui s’interrompt . Ensuite, Peter tourne à gauche et le programme se met en pause, attendant que l’on appuie sur une touche .
Après avoir déposé des fleurs sur une rangée , Peter reste tourné vers la gauche, en direction d’une nouvelle rangée . Nous allons tester s’il y a un carré vide devant lui et si c’est le cas, nous lui dirons de planter une autre rangée . Quand il reviendra à sa position initiale, il n’y aura pas devant lui un carré vide, mais une fleur qu’il aura plantée, et il s’immobilisera donc .
Nous allons donc maintenant devoir prendre un autre cycle de conditional repeating of commands (répétition conditionnelle de commandes) . Nous allons le placer au début du programme, et dans le corps de ce cycle, nous allons mettre (nous le déplacerons avec le bouton gauche de la souris) le cycle créé précédemment ainsi que la commande pour tourner à gauche . La commande d’attente de pression sur une touche reste à la fin du programme . Dans la condition du cycle externe, copiez (à l’aide du bouton droit de la souris) la condition qui teste la présence d’un carré vide devant Peter (vous faites cette copie en faisant glisser l’élément item identity (identité de l’item) ). Voici le résultat :
Le programme est prêt, il ne reste plus qu’à le tester .
6. Le Jardin avec répétitions <<< Table des matières >>> 8. Peter suit un itinéraire fléché