RobotProg
Tutoriel 2

Diviser pour mieux programmer

Modifier le terrain

Le terrain peut être modifié sauf pendant l'exécution d'un programme. Vous pouvez en particulier ajouter ou retirer des murs à l'intérieur du terrain, les murs encadrant le terrain sont fixes et ne peuvant pas être supprimés. Certains objectifs apparemment simples peuvent être beaucoup plus difficles à atteindre dans le cas où le terrain comporte beaucoup d'obstacles.

Vous allez ici construire le terrain qui sera utilisé dans ce chapitre. C'est le terrain représenté ci-dessus.

Avec la fenêtre de modification du terrain, vous pouvez aussi ajouter ou supprimer des murs et des prises d'énergie, enregistrer et ouvrir des fichiers "Terrain".

Position et direction du robot

Une case du terrain est repérée par ses coordonnées x, y ; x et y sont des nombres entiers positifs. La case arrière gauche a pour coordonnées 1, 1, la case arrière droite 9,1 pour le terrain représenté ci-dessous.

* Position du robot :

La position du robot est donnée par les deux mots-clef xRobot et yRobot utilisables dans un programme. Pendant l'exécution, xRobot et yRobot ont les valeurs x, y de la case occupée par le robot. Lorsque que le robot se déplace les valeurs de xRobot et yRobot changent.

* Direction du robot :

La direction suivant laquelle est orienté le robot est donnée par deux mots-clef dxRobot et dyRobot utilisables dans un programme. Les valeurs de dxRobot et dyRobot correpondent à la variation de xRobot et yRobot si le robot avance d'une case devant lui :

vers la droite dxRobot = 1
dyRobot = 0

vers la avant dxRobot = 0
dyRobot = 1

vers la gauche dxRobot = -1
dyRobot = 0

vers la arrière dxRobot = 0
dyRobot = -1

Remarque : dxRobot et dyRobot n'ont comme valeurs possibles que 0, 1 ou -1. L'une des deux valeurs est nulle et l'autre non nulle. Pour l'exemple représenté ci-dessus, dxRobot vaut 1 et dyRobot vaut 0

Pourquoi des sous-programmes ?

En général, un programme est écrit pour résoudre un problème qui peut être très complexe. On commence donc habituellement par analyser le problème posé et on le divise en problèmes plus simples et donc plus faciles à résoudre. Les sous-programmes permettent ainsi de décomposer un programme en plusieurs parties.
Par ailleurs, un même sous-programme peut être utilisé à plusieurs reprises, ceci évitant de réécrire plusieurs fois le même code.

Dans ce chapitre, vous écrirez un programme pemettant de faire aller le robot à la case centrale du terrain et ceci quelque soit son point et son orientation de départ. Pour cela on utilisera le scénario suivant : le robot va dans la colonne du centre puis il ira à la ligne centrale.

Aller à la colonne centrale dans un terrain de 9 carreaux ?

La colonne centrale est repéré par le chiffre 5 sur l'axe des abscisses X

2 cas pour X :

Ce programme sera écrit à l'aide de plusieurs sous-programmes :

 

Enregistrer le programme

N'oubliez d'enregistrer votre programme de temps en temps, cela ne sera jamais rappelé. Et parfois RobotProg plante !

Créer un sous-programme
SeTournerVersLaGauche

Ici, vous allez créer un sous-programme qui tournera le robot vers la gauche du terrain.

Les sous-programmes sont disponibles à partir du niveau 2. Le niveau est affiché dans la palette d'outil. Si vous êtes au niveau 1, passez au niveau 2 en utilisant le menu Configuration > Niveau.

Avant de créer un sous-programme, vous devez avoir un nouveau programme vide. Si ce n'est pas le cas, fermez la fenêtre Programme et choisissez le menu Fichier > Nouveau programme.

Pour créer un sous-programme, choisissez le menu Programmation > Nouveau sous-programme.

* Construisez l'organigramme du sous-programme SeTournerVersLaGauche :

L'organigramme d'un sous-programme se construit suivant les mêmes règles que celui du programme principal. Il doit en particulier contenir un bloc début et au moins un bloc fin.

Séquence logique : Rappel les direction du robot sont défini par dxRobot et dyRobot voir Les directions du robot. Donc le robot est tourné vers la gauche si dxRobot = -1

Vous pouvez vérifier si l'organigramme du sous-programme est correct en cliquant sur le bouton Verifier l'organigramme dans l'en-tête du sous-programme.

Affichage du programme principal et des sous-programmes

* Liste du programme principal et des sous-programmes :

Appeler un sous-programme

Pour qu'un sous-programme soit exécuté, il faut l'appeler à partir du programme principal ou bien d'un sous-programme. Ceci se réalise avec une instruction d'appel qui figure dans un bloc d'appel de sous-programme.

Pour tester l'exécution du sous-programme SeTournerVersLaGauche, vous aller écrire le programme principal contenant l'appel du sous-programme :

Déroulement de l'exécution :

l'exécution d'un appel de sous-programme provoque le passage à l'exécution du bloc début du sous-programme, puis le sous-programme est exécuté jusqu'à son bloc fin, et ensuite l'exécution se poursuit dans le programme appelant au bloc suivant le bloc d'appel de sous-programme.

Exercice :

Ajouter et faire exécuter un nouveau sous-programme de nom SeTournerVersLaDroite. (dxRobot = 1)

Le robot va au centre du terrain

Le centre du terrain se touve à l'intersection de la colonne centrale et de la ligne centrale (voir plan du terrain). Pour faire aller le robot au centre du terrain, il faut donc d'abord le faire aller dans une case de la colonne centrale, puis dans la ligne centrale. Pour cela, vous allez écrire deux sous-programmes.

Sous-programme AllerAColonneCentrale :

La colonne centrale correspond aux cases d'abscisse x égale à 5. Si le robot se trouve à une position xRobot plus petite que 5, on oriente le robot vers la droite du terrain, sinon on l'oriente vers la gauche et ensuite on le fait avancer jusqu'à ce qu'il atteigne la colonne centrale. ce qui correspond à la séquence logique suivante :

Test1 : le robot vérifie si sa position xRobot est supérieure à 5

 

- tester ce sous programme en l'appelant à partir du programme principal

Sous-programme
AllerALigneCentrale :

Ecrire le programme principal :

Exercice à rendre

Il faut que le robot aille dans une case prédéfini à l'avance quelque soit sa position initiale.

Envoi du fichier dans Chamilo :

Vérifie que tu es toujours indentifié. Vas dans la page d'accueil du cours Techno_3ème, et en haut à droite tu dois retrouver cet onglet bleu : avec ton nom écrit. Si ce n'est pas le cas retourne à la page d'accueil de Chamilo et réindentifie-toi.

 

Creative Commons License Page sous contrat Creative Commons.
autre_signature
Marc Gillet