iniciar-programa
     define-nueva-instruccion avanzarr(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 no-junto-a-zumbador y frente-libre  entonces  inicio
               avanza;
               recoger;
               si orientado-al-este entonces  inicio
               avanza;
              fin;
              fin;
       si junto-a-zumbador y orientado-al-oeste entonces inicio
       coge-zumbador;
       recoger;

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



             si frente-bloqueado y orientado-al-oeste  y junto-a-zumbador entonces inicio
              media-vuelta;
              fin
              sino si frente-bloqueado y orientado-al-oeste y no-junto-a-zumbador entonces inicio
                recoger;
                media-vuelta;

               mientras frente-libre y orientado-al-este hacer inicio
              avanza;
              fin;
              fin;

             si frente-bloqueado y orientado-al-este y derecha-bloqueada entonces inicio
      gira-izquierda;
        fin;

          mientras frente-libre y orientado-al-norte y derecha-bloqueada hacer inicio
       avanza;
       fin;
       si derecha-libre y orientado-al-norte  entonces inicio
        gira-derecha;
        avanza;
        gira-derecha;
         avanza;
         fin;
         mientras orientado-al-sur y frente-libre y derecha-bloqueada  hacer inicio
          avanza;
         fin;
          si frente-bloqueado  y orientado-al-sur y no-junto-a-zumbador entonces inicio
          gira-izquierda;

            fin;






             fin;
         fin;







    inicia-ejecucion

       mientras no orientado-al-este hacer inicio
        gira-izquierda;
        fin;
          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
          recoger;
         fin;





        apagate;
    termina-ejecucion
finalizar-programa
