    iniciar-programa
 define-nueva-instruccion arriba como
   inicio
     si frente-libre entonces avanza;
      gira-izquierda;
       mientras frente-libre hacer avanza;
       repetir 3 veces gira-izquierda;
      fin;
    define-nueva-instruccion casa como
    inicio

     mientras no orientado-al-oeste hacer
      gira-izquierda;
    mientras frente-libre hacer avanza;
    si izquierda-libre entonces
    inicio
     gira-izquierda;
       mientras frente-libre hacer avanza;
       repetir 3 veces gira-izquierda;
       si frente-libre entonces avanza;
     fin;
      deja-zumbador;
      repetir 2 veces gira-izquierda;
      fin;

      define-nueva-instruccion come como
       inicio
         mientras no orientado-al-sur hacer gira-izquierda;
         si frente-libre entonces avanza;
         mientras junto-a-zumbador hacer
           inicio
             coge-zumbador;
             si frente-libre entonces avanza;
           fin;
         fin;

   define-nueva-instruccion busca como
     inicio
     mientras no-junto-a-zumbador y frente-libre hacer
     avanza;
     si junto-a-zumbador entonces
      inicio
       come;
       mientras no orientado-al-norte hacer
        gira-izquierda;
        mientras no junto-a-zumbador hacer avanza;


       fin;
       si frente-bloqueado y no junto-a-zumbador entonces
         casa;
      fin;
      define-nueva-instruccion regresa como
          inicio
            repetir 2 veces gira-izquierda;
             mientras no-junto-a-zumbador y frente-libre hacer avanza;

              si junto-a-zumbador entonces
                inicio
                 coge-zumbador;
                 mientras no orientado-al-oeste hacer
                   gira-izquierda;
                   mientras frente-libre hacer avanza;
                  repetir 2 veces gira-izquierda;
                  busca;
                 fin;
               si frente-bloqueado y no-junto-a-zumbador entonces
                 inicio
                   casa;
                   apagate;
                  fin;
          fin;

       define-nueva-instruccion recorre como
        inicio
           mientras no-junto-a-zumbador hacer
       inicio
        si frente-libre entonces avanza;
         si frente-bloqueado y orientado-al-este y derecha-libre entonces
           inicio
            si no-junto-a-zumbador entonces
             inicio
             repetir 3 veces gira-izquierda;
             si frente-libre entonces avanza;
             repetir 3 veces gira-izquierda;
              fin
             sino
             inicio
              come;
              regresa;
              casa;
              arriba;
              fin;
           fin;
           si derecha-bloqueada y frente-bloqueado y no junto-a-zumbador entonces apagate;
           si frente-bloqueado y orientado-al-oeste y izquierda-libre entonces
             inicio
              si no-junto-a-zumbador entonces
               inicio
              gira-izquierda;
               si frente-libre entonces avanza;
               gira-izquierda;
               fin
               sino
                inicio
                 come;
                 regresa;
                 casa;
                 arriba;
                 fin;
             fin;
           si izquierda-bloqueada y frente-bloqueado entonces apagate;
           fin;


            mientras junto-a-zumbador y (izquierda-libre o derecha-libre) hacer
          inicio
             come;
             regresa;
          fin;
       fin;


    inicia-ejecucion
    si frente-libre entonces avanza;
    si izquierda-bloqueada entonces
     inicio
       mientras no junto-a-zumbador y frente-libre hacer avanza;
        si junto-a-zumbador entonces
        inicio
        coge-zumbador;
        repetir 2 veces gira-izquierda;
        mientras frente-libre hacer avanza;
        repetir 2 veces gira-izquierda;
        deja-zumbador;
        apagate;
        fin;
        repetir 2 veces gira-izquierda;
        mientras frente-libre hacer avanza;
        apagate;
      fin
      sino
      inicio
      repetir 2 veces gira-izquierda;
      si frente-libre entonces avanza;
      repetir 2 veces gira-izquierda;
      fin;


       mientras frente-libre  hacer
       inicio
        si izquierda-bloqueada y derecha-bloqueada entonces arriba;
         recorre;
        fin;




        apagate;
    termina-ejecucion
finalizar-programa

