BTS SIO - Notes de cours

Accueil > Première année > SI4-SI6 > Le milieu

Le milieu

jeudi 14 novembre 2013, par

Guido doit trouver le milieu du mur nord. On ne connaît pas à priori la largeur du mur, mais elle est >2. Par exemple :

robot 1 1 N 16
wall 1 10 N
wall 2 10 N
wall 3 10 N
wall 4 10 N
wall 5 10 N
wall 6 10 N
wall 7 10 N
wall 8 10 N
wall 9 10 N
wall 10 10 N
wall 10 1 E
wall 10 2 E
wall 10 3 E
wall 10 4 E
wall 10 5 E
wall 10 6 E
wall 10 7 E
wall 10 8 E
wall 10 9 E
wall 10 10 E

Il doit partir du sud-ouest.

define turnRight:
   do 3:
       turnleft

define trouverMoitie:
   if any_beepers_in_beeper_bag:
       putbeeper
   while front_is_clear:
       move
       if front_is_clear:
           move
           if any_beepers_in_beeper_bag:
               putbeeper
   turnRight
   move
   while any_beepers_in_beeper_bag:
       putbeeper
   do 2:
       turnleft
   move
   turnleft
   while front_is_clear:
       if next_to_a_beeper:
           pickbeeper
       move
   if next_to_a_beeper:
       pickbeeper
   turnleft
   turnleft
   while any_beepers_in_beeper_bag:
       putbeeper
       move
   turnleft
   turnleft
   move
   move
   while front_is_clear:
       if next_to_a_beeper:
           pickbeeper
       move
   if next_to_a_beeper:
       pickbeeper
   turnleft
   move
   turnleft
   while front_is_clear:
       move
   while next_to_a_beeper:
       pickbeeper
   turnleft
   move
   turnleft
   turnleft
   
while front_is_clear:
   move
turnRight
trouverMoitie
turnoff

Variante : guido doit trouver la moitié de chacun des murs. On va utiliser 4 fois trouverMoitie.

define turnRight:
   do 3:
       turnleft

define trouverMoitie:
   if any_beepers_in_beeper_bag:
       putbeeper
   while front_is_clear:
       move
       if front_is_clear:
           move
           if any_beepers_in_beeper_bag:
               putbeeper
   turnRight
   move
   while any_beepers_in_beeper_bag:
       putbeeper
   do 2:
       turnleft
   move
   turnleft
   while front_is_clear:
       if next_to_a_beeper:
           pickbeeper
       move
   if next_to_a_beeper:
       pickbeeper
   turnleft
   turnleft
   while any_beepers_in_beeper_bag:
       putbeeper
       move
   turnleft
   turnleft
   move
   move
   while front_is_clear:
       if next_to_a_beeper:
           pickbeeper
       move
   if next_to_a_beeper:
       pickbeeper
   turnleft
   move
   turnleft
   while front_is_clear:
       move
   while next_to_a_beeper:
       pickbeeper
   turnleft
   move
   turnleft
   turnleft
   
do 4:
   trouverMoitie
turnoff

Exercie : trouver un cas où ce programme fait une erreur.

Un message, un commentaire ?

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.