iniciar-programa
 define-nueva-instruccion recorredos como
    inicio
       si junto-a-zumbador entonces

      inicio
        coge-zumbador;
        si junto-a-zumbador entonces
         inicio
         deja-zumbador;
          si frente-libre entonces avanza;
        fin
        sino
         inicio
          deja-zumbador;
        repetir 4 veces
          inicio
            si frente-libre entonces
             inicio
             avanza;


             si junto-a-zumbador entonces
              inicio
               coge-zumbador;
                si junto-a-zumbador entonces
                 inicio
                  deja-zumbador;
                   repetir 2 veces deja-zumbador;
                   repetir 2 veces gira-izquierda;
                   si frente-libre entonces avanza;
                   repetir 2 veces gira-izquierda;
                 fin
              sino
               inicio
               deja-zumbador;
              repetir 2 veces gira-izquierda;
              si frente-libre entonces avanza;
              repetir 2 veces gira-izquierda;
              fin;
              fin
              sino
               inicio
               repetir 2 veces deja-zumbador;
                 repetir 2 veces gira-izquierda;
                si frente-libre entonces avanza;
                repetir 2 veces gira-izquierda;
              fin;

         fin;
         gira-izquierda;
     fin;
      fin;
    fin;


    fin;

 define-nueva-instruccion recorre como
    inicio
        si junto-a-zumbador entonces

      inicio
        coge-zumbador;
        si junto-a-zumbador entonces
         inicio
         deja-zumbador;
          si frente-libre entonces avanza;
        fin
        sino
         inicio
          deja-zumbador;
        repetir 4 veces
          inicio
            si frente-libre entonces
            inicio
             avanza;


             si junto-a-zumbador entonces
              inicio
               coge-zumbador;
                si junto-a-zumbador entonces
                 inicio
                  deja-zumbador;
                   repetir 2 veces deja-zumbador;
                   repetir 2 veces gira-izquierda;
                   si frente-libre entonces avanza;
                   repetir 2 veces gira-izquierda;
                 fin
              sino
               inicio
               deja-zumbador;
              repetir 2 veces gira-izquierda;
              si frente-libre entonces avanza;
              repetir 2 veces gira-izquierda;
              fin;
              fin
              sino
               inicio
               repetir 2 veces deja-zumbador;
                 repetir 2 veces gira-izquierda;
                si frente-libre entonces avanza;
                repetir 2 veces gira-izquierda;
              fin;
             fin;
              gira-izquierda;
         fin;
        si frente-libre entonces avanza;
      fin;
    fin;
        mientras no-junto-a-zumbador y frente-libre hacer avanza;
        si junto-a-zumbador y frente-libre  entonces
            recorre;
          si junto-a-zumbador y frente-bloqueado entonces
           inicio
              repetir 2 veces gira-izquierda;
              si frente-libre entonces
               inicio
                repetir 2 veces gira-izquierda;
               recorredos;
               fin
               sino
                repetir 2 veces gira-izquierda;

              repetir 2 veces gira-izquierda;
             mientras frente-libre hacer avanza;
             repetir 3 veces gira-izquierda;
             si frente-libre entonces avanza;
              repetir 3 veces gira-izquierda;
            si izquierda-libre entonces recorre;
          fin;
         si frente-bloqueado y izquierda-libre entonces
            inicio
            recorredos;
             repetir 2 veces gira-izquierda;
             mientras frente-libre hacer avanza;
             repetir 3 veces gira-izquierda;
             si frente-libre entonces avanza;
              repetir 3 veces gira-izquierda;
            si izquierda-libre entonces recorre;
            fin;




     fin;
     define-nueva-instruccion recorre3  como
       inicio
         si junto-a-zumbador entonces
            coge-zumbador;
             si junto-a-zumbador entonces
              deja-zumbador;
               si frente-libre entonces avanza;

            mientras no-junto-a-zumbador y frente-libre hacer avanza;
             si frente-bloqueado y izquierda-libre entonces
               inicio
                si junto-a-zumbador entonces
               coge-zumbador;
                si junto-a-zumbador entonces
                deja-zumbador;
                repetir 2 veces gira-izquierda;
                mientras frente-libre hacer avanza;
                repetir 3 veces gira-izquierda;
                 si frente-libre entonces avanza;
                 repetir 3 veces gira-izquierda;
                 fin;


         fin;
          define-nueva-instruccion deja como
       inicio
        si junto-a-zumbador entonces
           inicio
            coge-zumbador;
            deja;
          fin;
          si orientado-al-este entonces
           deja-zumbador;
           repetir 2 veces gira-izquierda;
         fin;

   define-nueva-instruccion recorre4 (n) como

       inicio
       mientras frente-libre o (frente-bloqueado y izquierda-libre) hacer
        inicio
         si junto-a-zumbador entonces
           inicio
            coge-zumbador;
            recorre4 (sucede (n));
            fin;
         mientras no-junto-a-zumbador y frente-libre hacer avanza;
         si frente-bloqueado y izquierda-libre entonces
           inicio
             si junto-a-zumbador entonces
             inicio
             coge-zumbador;
             recorre4 (sucede (n));
             fin;
             si izquierda-libre entonces
              inicio
             repetir 2 veces gira-izquierda;
             mientras frente-libre hacer avanza;
             repetir 3 veces gira-izquierda;
             si frente-libre entonces avanza;
             repetir 3 veces gira-izquierda;
               fin;
             fin;
           fin;
           si frente-bloqueado y izquierda-bloqueada y junto-a-zumbador entonces
            inicio
              si junto-a-zumbador entonces
               inicio
               coge-zumbador;
               recorre4 (sucede (n));
               fin;

             fin;
            repetir n veces deja-zumbador;
            si junto-a-zumbador entonces
             inicio
              coge-zumbador;
              deja;
              apagate;
              fin;



          fin;




  define-nueva-instruccion arriba como
      inicio
          mientras no-orientado-al-este hacer
            gira-izquierda;
            repetir 2 veces
            inicio
               mientras frente-libre hacer avanza;
               gira-izquierda;
            fin;


       fin;

    inicia-ejecucion
    arriba;
    si izquierda-libre entonces
    recorre;
    si izquierda-bloqueada entonces recorre;
    arriba;
    mientras izquierda-libre hacer
    recorre3;
    mientras frente-libre hacer
     recorre3;
     recorre3;

     arriba;

     recorre4 (0);



        apagate;
    termina-ejecucion
finalizar-programa
