iniciar-programa
define-nueva-instruccion gira(n) como
inicio
   repetir n veces
    inicio
       gira-izquierda;
    fin;
    fin;

define-nueva-instruccion termina como
inicio
gira(1);
avanza;
si junto-a-zumbador entonces inicio
coge-zumbador;
gira(2);
avanza;
deja-zumbador;
apagate;
fin
sino
inicio
apagate;
fin;
fin;



    define-nueva-instruccion cercar como
    inicio
    gira(2);
    mientras frente-libre hacer avanza;
    gira(2);
    si frente-bloqueado entonces inicio
    gira(1);
    avanza;
    si junto-a-zumbador entonces inicio
    coge-zumbador;
    gira(2);
    avanza;
    deja-zumbador;
    apagate;
    fin
    sino
    inicio
    apagate;
    fin;
    fin;



    mientras frente-libre hacer
       inicio
       gira(1);
       avanza;
       si junto-a-zumbador entonces
         inicio
         coge-zumbador;
         gira(2);
         avanza;
         deja-zumbador;
         gira(1);
         si frente-libre entonces avanza;
         si frente-bloqueado entonces termina;
         fin

         sino
         inicio

         gira(2);
         avanza;

         gira(1);
 si frente-libre entonces avanza;
         si frente-bloqueado entonces termina;
         fin;
       fin;
       fin;









  inicia-ejecucion
mientras frente-libre hacer avanza;
gira(3);
mientras algun-zumbador-en-la-mochila hacer
inicio
mientras no-junto-a-zumbador y frente-libre hacer avanza;
si junto-a-zumbador entonces
 inicio
 coge-zumbador;
 gira(2);
 mientras frente-libre hacer avanza;
 gira(2);
 mientras frente-libre hacer
   inicio
   deja-zumbador;
   si frente-libre entonces avanza;

   fin;
   si frente-bloqueado y no-junto-a-zumbador entonces deja-zumbador;
 gira(3);
 avanza;
 gira(1);
 si frente-bloqueado  entonces cercar;
 avanza;
 gira(1);
 avanza;
 gira(3);
 fin
 sino
 inicio
 gira(3);
 avanza;
 gira(1);
 si frente-bloqueado  entonces cercar;
 avanza;
 gira(1);
 avanza;
 gira(3);
 fin;
fin;








        apagate;
    termina-ejecucion
finalizar-programa
