iniciar-programa

   define-nueva-instruccion avanzar(n) como inicio
   repetir n veces
   avanza;
   fin;


  define-nueva-instruccion gira-derecha como inicio
    gira-izquierda;
    gira-izquierda;
    gira-izquierda;
     fin;

    define-nueva-instruccion media-vuelta como inicio
 gira-izquierda;
 gira-izquierda;
 fin;
           define-nueva-instruccion recoger como inicio
         si ningun-zumbador-en-la-mochila y orientado-al-norte entonces inicio
         media-vuelta;
          avanza;
          gira-izquierda;
          fin;
            si algun-zumbador-en-la-mochila y orientado-al-este o orientado-al-norte entonces inicio
               deja-zumbador;
               recoger;
               si orientado-al-este  y junto-a-zumbador entonces
               coge-zumbador;
                fin;
                si no junto-a-zumbador entonces   inicio
                avanza;
                fin;
               fin;


             define-nueva-instruccion acomoda como inicio


        si no-junto-a-zumbador y frente-libre  entonces  inicio
               avanza;
               acomoda;
               si orientado-al-este entonces  inicio
               avanza;
              fin;
              fin;
       si junto-a-zumbador y orientado-al-oeste entonces inicio
       coge-zumbador;
       acomoda;

       si orientado-al-este y derecha-bloqueada entonces inicio
         deja-zumbador;
        fin;
         si frente-bloqueado y orientado-al-oeste  entonces inicio
              media-vuelta;
              deja-zumbador;
              fin;
        si ningun-zumbador-en-la-mochila entonces inicio
         apagate;
         fin;
       fin;
       fin;



          define-nueva-instruccion recoger2 como inicio

               si no-junto-a-zumbador y frente-libre  entonces  inicio
               avanza;
               recoger2;
               si orientado-al-este entonces  inicio
               avanza;
              fin;
              fin;
              si junto-a-zumbador y orientado-al-oeste entonces inicio
             coge-zumbador;
              recoger2;

              si orientado-al-este y derecha-bloqueada entonces inicio
             deja-zumbador;
           fin;


            si frente-bloqueado y orientado-al-oeste entonces inicio
              media-vuelta;
              fin;
              fin;
           fin;





    inicia-ejecucion
        mientras no orientado-al-norte hacer inicio
         gira-izquierda;
         fin;
         avanza;
         inicio
        recoger;
          fin;
         inicio
       deja-zumbador;
          mientras frente-libre y orientado-al-este hacer inicio
           avanza;
           fin;
           si frente-bloqueado y orientado-al-este entonces inicio
            media-vuelta;

            fin;

            mientras no-junto-a-zumbador hacer inicio
             avanza;
              fin;
          mientras junto-a-zumbador y orientado-al-oeste hacer inicio
          recoger2;
         fin;
           fin;

        apagate;
    termina-ejecucion
finalizar-programa

