iniciar-programa

  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 escala como inicio
         si orientado-al-sur entonces inicio
            mientras frente-libre y orientado-al-sur hacer inicio
               avanza;
               coge-zumbador;
               fin;
             si frente-bloqueado entonces inicio
                gira-izquierda;
                fin;

              si frente-libre entonces inicio
                 avanza;
                 fin
                 sino si frente-bloqueado entonces inicio

                    media-vuelta;
                     mientras frente-libre y orientado-al-oeste hacer inicio
                        avanza;
                        fin;
                    si frente-bloqueado entonces inicio
                     media-vuelta;
                     fin;
                     mientras frente-libre y no junto-a-zumbador hacer inicio
                        avanza;
                      fin;
                         avanza;
                      fin;
           fin;
       si orientado-al-este y junto-a-zumbador entonces inicio
       gira-izquierda;
        fin;
       mientras frente-libre y orientado-al-norte y junto-a-zumbador hacer inicio
           avanza;
           fin;
           si no junto-a-zumbador y orientado-al-norte entonces inicio
             media-vuelta;
             avanza;
             fin;


    fin;



       define-nueva-instruccion coge(n) como inicio
          si junto-a-zumbador y orientado-al-sur entonces inicio
            coge-zumbador;
            coge(sucede(n));

            fin
             sino  si no junto-a-zumbador y orientado-al-sur entonces inicio
            escala;
            si junto-a-zumbador entonces inicio
            coge(n);
             fin;
             fin;
               si no junto-a-zumbador entonces inicio
               repetir n veces deja-zumbador;
               fin;
           fin;




     define-nueva-instruccion compara como inicio
       si junto-a-zumbador entonces inicio
         coge-zumbador;
         compara;
         si junto-a-zumbador y orientado-al-oeste entonces inicio
         coge-zumbador;
          fin
          sino  inicio
          si no orientado-al-este entonces
          media-vuelta;
          deja-zumbador;
         fin;
          fin
          sino si no junto-a-zumbador entonces inicio

           media-vuelta;
           avanza;
           fin;
           fin;
       define-nueva-instruccion lleva como inicio
         si junto-a-zumbador entonces inicio
           coge-zumbador;
           lleva;
            deja-zumbador;
           fin
           sino si no junto-a-zumbador entonces inicio
           media-vuelta;
              mientras frente-libre y orientado-al-este hacer inicio
           avanza;
           fin;
             si frente-bloqueado entonces gira-izquierda;
                mientras frente-libre y orientado-al-norte y derecha-bloqueada hacer inicio
                 avanza;
                 fin;
                  si derecha-libre entonces inicio
                    gira-derecha;
                     avanza;
                     gira-izquierda;
                fin;

                fin;
                fin;



    inicia-ejecucion
    mientras algun-zumbador-en-la-mochila hacer inicio
     deja-zumbador;
      fin;
      avanza;

      mientras no junto-a-zumbador hacer inicio
         avanza;
         fin;
       si junto-a-zumbador entonces inicio
          si orientado-al-este y junto-a-zumbador entonces inicio
       gira-izquierda;
        fin;
       mientras frente-libre y orientado-al-norte y junto-a-zumbador hacer inicio
           avanza;
           fin;
           si no junto-a-zumbador y orientado-al-norte entonces inicio
             media-vuelta;
             avanza;
             fin;
             fin;
    coge(0);

     compara;
        si orientado-al-este entonces inicio
           apagate;
           fin
           sino si orientado-al-oeste entonces inicio
              lleva;
              fin;


        apagate;
    termina-ejecucion
finalizar-programa

