Programmez le \l;robot\u object\bottr; pour qu'il trouve toutes les \l;croix bleues\u object\waypoint; posΘes au sol. Le trajet α effectuer est composΘ de deux carrΘs. Le premier mesure 15 mΦtres de c⌠tΘ, et le deuxiΦme 25 mΦtres.
\image tproc1a 8 8;
\b;ProcΘdure
Pour rΘsoudre ce problΦme, il est intΘressant de crΘer une procΘdure qui dΘplace le robot le long d'un carrΘ. La procΘdure principale devient alors trΦs simple :
\c;
\s;extern void object::DΘplacer( )
\s;{
\s; CarrΘ(15);
\s; CarrΘ(25);
\s;}
\n;
╔videmment, α ce stade, la procΘdure \c;CarrΘ\n; n'existe pas encore. Pour rΘaliser la procΘdure, vous devrez pour la premiΦre fois Θcrire des instructions hors du \l;bloc\u cbot\bloc;, tout α la fin du programme. La structure du programme devient :
\c;
\s;extern void object::DΘplacer( )
\s;{
\s; \n;procΘdure principale ...\c;
\s;}
\s;
\s;void object::CarrΘ(float length)
\s;{
\s; \n;nouvelle procΘdure ...\c;
\s;}
\n;
Examinons en dΘtail la dΘclaration de cette procΘdure \c;CarrΘ\n; :
\c;\l;void\u cbot\void;\n;
Ceci indique que la procΘdure ne retourne aucune valeur.
\c;\l;object\u cbot\object;::\n;
Permet d'accΘder aux caractΘristiques du robot, telles que \c;pos\n;, \c;angle\n;, etc. Dans cet exercice, cette dΘclaration est facultative, car on n'accΦde pas α ces variables.
\c;CarrΘ ( )\n;
Nom de la procΘdure. Vous pouvez donner ici le nom qui vous plaεt le mieux.
\c;\l;float\u cbot\float; length\n;
ParamΦtre que reτoit la procΘdure. A l'intΘrieur de la procΘdure, \c;length\n; prendra une premiΦre fois la valeur 15 et une deuxiΦme fois la valeur 25.
Le flux du programme se dΘroule ainsi :
- On exΘcute la procΘdure principale \c;DΘplace\n; depuis le dΘbut.
- Lorsqu'on rencontre \c;CarrΘ(15)\n;, on suit la flΦche rouge pour entrer une premiΦre fois dans la procΘdure \c;CarrΘ\n;.
- Lorsque la procΘdure \c;CarrΘ\n; est terminΘe, on revient dans \c;DΘplace\n; selon la flΦche orange.
- On continue \c;DΘplace\n;, qui contient alors \c;CarrΘ(25)\n;. On suit donc la flΦche bleue pour entrer une deuxiΦme fois dans \c;CarrΘ\n;.
- Lorsque \c;CarrΘ\n; est terminΘ, on revient dans \c;DΘplace\n; en suivant la flΦche bleue clair.
\image tproc1b 17 12;
L'intΘrieur de la procΘdure \c;CarrΘ\n; utilise les instructions \c;\l;move\u cbot\move;\n; et \c;\l;turn\u cbot\turn;\n;. L'utilisation d'une boucle \c;\l;for\u cbot\for;\n; rΘpΘtΘe 4 fois allΦge l'Θcriture, mais n'est pas indispensable.
\c;
\s;void object::CarrΘ(float length)
\s;{
\s; for ( int i=0 ; i<4 ; i=i+1 )
\s; {
\s; move(length);
\s; turn(90);
\s; }
\s;}
\n;
\key;\key help;\norm; permet de revoir ces instructions en tout temps !
\t;Voir aussi
\l;Commandes\u command; et \l;programmation\u cbot;.