iniciar-programa
define-nueva-instruccion gira-derecha como
inicio
   repetir 3 veces
     gira-izquierda;
fin;
define-nueva-instruccion mira-norte como
inicio
   mientras no-orientado-al-norte hacer
      gira-izquierda;
fin;
define-nueva-instruccion mira-este como
inicio
   mientras no-orientado-al-este hacer
     gira-izquierda;
fin;
define-nueva-instruccion mira-oeste como
inicio
   mientras no-orientado-al-oeste hacer
     gira-izquierda;
fin;
define-nueva-instruccion mira-sur como
inicio
   mientras no-orientado-al-sur hacer
      gira-izquierda;
fin;
define-nueva-instruccion paso-atras como
inicio
    repetir 2 veces
       gira-izquierda;
    avanzA;
    repetir 2 veces
       gira-izquierda;
fin;
define-nueva-instruccion orilla como
inicio
   repetir 5 veces
      deja-zumbador;
fin;
define-nueva-instruccion revisa como
inicio
   si frente-libre entonces
   inicio
      avanzA;
      si junto-a-zumbador entonces
      inicio
         paso-atraS;
         deja-zumbador;
      fin
      sino
      inicio
         paso-atraS;
         orilla;
      fin;
   fin
   sino
       orilla;
   si izquierda-libre entonces
   inicio
      gira-izquierda;
      avanza;
      si junto-a-zumbador entonces
      inicio
         paso-atras;
         gira-derecha;
         deja-zumbador;
      fin
      sino
      inicio
         paso-atras;
         gira-derecha;
         orilla;
      fin;
   fin
   sino
      orilla;
   si derecha-libre entonces
   inicio
       gira-derecha;
       avanza;
       si junto-a-zumbador entonces
       inicio
          paso-atras;
          gira-izquierda;
          deja-zumbador;
       fin
       sino
       inicio
           paso-atras;
           gira-izquierda;
           orilla;
       fin;
   fin
   sino
      orilla;
   repetir 2 veces
     gira-izquierda;
   si frente-libre entonces
   inicio
       avanzA;
       si junto-a-zumbador entonces
       inicio
          paso-atras;
          repetir 2 veces
            gira-izquierda;
          deja-zumbador;
       fin
       sino
       inicio
          paso-atras;
          repetir 2 veces
            gira-izquierda;
          orilla;
       fin;
   fin
   sino
   inicio
      repetir 2 veces
         gira-izquierda;
      orilla;
   fin;
fin;
define-nueva-instruccion busca como
inicio
    si junto-a-zumbador entonces
    inicio
       coge-zumbador;
       si no-junto-a-zumbador entonces
       inicio
           deja-zumbador;
           revisa;
           si frente-libre entonces
           inicio
              avanza;
              busca;
              paso-atras;
           fin;
           si izquierda-libre entonces
           inicio
              gira-izquierda;
              avanza;
              busca;
              paso-atras;
              gira-derecha;
           fin;
           si derecha-libre entonces
           inicio
              gira-derecha;
              avanza;
              busca;
              paso-atras;
              gira-izquierda;
           fin;
           repetir 2 veces
              gira-izquierda;
           si frente-libre entonces
           inicio
              avanza;
              busca;
              paso-atras;
              repetir 2 veces
                gira-izquierda;
           fin
           sino
           inicio
              repetir 2 veces
                gira-izquierda;
           fin;
       fin
       sino
          deja-zumbador;
    fin;
fin;
define-nueva-instruccion farmero como
inicio
   si junto-a-zumbador entonces
   inicio
      repetir 5 veces
         coge-zumbador;
      si junto-a-zumbador entonces
      inicio
         repetir 5 veces
           deja-zumbador;
      fin
      sino
      inicio
         si frente-libre entonces
         inicio
            avanza;
            farmero;
            paso-atraS;
         fin;
         si izquierda-libre entonces
         inicio
            gira-izquierda;
            avanza;
            farmero;
            paso-atras;
            gira-derecha;
         fin;
         si derecha-libre entonces
         inicio
            gira-derecha;
            avanza;
            farmero;
            paso-atras;
            gira-izquierda;
         fin;
         repetir 2 veces
            gira-izquierdA;
         si frente-libre entonces
         inicio
             avanza;
             farmero;
             paso-atras;
             repetir 2 veces
                gira-izquierda;
         fin
         sino
            repetir 2 veces
              gira-izquierda;
      fin;
   fin;
fin;
define-nueva-instruccion ubicate como
inicio
    mira-sur;
    mientras frente-libre hacer
       avanza;
    mira-oeste;
    mientras frente-libre hacer
       avanzA;
   mira-norte;
fin;
(*define-nueva-instruccion final como
inicio
   ubicate;
   mientras derecha-libre hacer
   inicio
      si junto-a-zumbador entonces
      inicio
         coge-zumbador;
         si no-junto-a-zumbador entonces
            deja-zumbador
         sino
         inicio
             mientras junto-a-zumbador hacer
                coge-zumbador;
            deja-zumbador;
         fin;
      fin;
      si frente-libre entonces
      inicio
         avanza;
      fin
      sino
      inicio
         gira-derecha;
         avanza;
         gira-derecha;
         mira-sur;
         mientras frente-libre hacer
           avanza;
         mira-norte;
      fin;
   fin;
   mientras frente-libre hacer
   inicio
      si junto-a-zumbador entonces
      inicio
         coge-zumbador;
         si no-junto-a-zumbador entonces
         inicio
            deja-zumbador;
         fin
         sino
         inicio
            mientras junto-a-zumbador hacer
               coge-zumbador;
            deja-zumbador;
         fin;
      fin;
      si frente-libre entonces
         avanzA;
   fin;
   si junto-a-zumbador entonces
   inicio
       coge-zumbador;
       si no-junto-a-zumbador entonces
       inicio
           deja-zumbador;
       fin
       sino
       inicio
           mientras junto-a-zumbador hacer
              coge-zumbador;
           deja-zumbador;
       fin;
   fin;
fin;        *)
define-nueva-instruccion final como
inicio
    ubicate;
    mientras derecha-libre hacer
    inicio
       si junto-a-zumbador entonces
       inicio
           coge-zumbador;
           si no-junto-a-zumbador entonces
           inicio
               deja-zumbador;
           fin
           sino
           inicio
              repetir 4 veces
                 coge-zumbador;
              si junto-a-zumbador entonces
              inicio
                  mientras junto-a-zumbador hacer
                     coge-zumbador;
                  deja-zumbador;
              fin;
           fin;
       fin;
       si frente-libre entonces
           avanza
       sino
       inicio
          gira-derecha;
          avanza;
          mira-sur;
          mientras frente-libre hacer
             avanza;
          mira-norte;
       fin;
    fin;
    mientras frente-libre hacer
    inicio
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            si no-junto-a-zumbador entonces
            inicio
                deja-zumbador;
            fin
            sino
            inicio
                repetir 4 veces
                    coge-zumbador;
                si junto-a-zumbador entonces
                inicio
                    mientras junto-a-zumbador hacer
                        coge-zumbador;
                    deja-zumbador;
                fin;
            fin;
        fin;
        si frente-libre entonces
           avanza;
    fin;
    si junto-a-zumbador entonces
    inicio
        coge-zumbador;
        si no-junto-a-zumbador entonces
        inicio
            deja-zumbador;
        fin
        sino
        inicio
            repetir 4 veces
                coge-zumbador;
            si junto-a-zumbador entonces
            inicio
                mientras junto-a-zumbador hacer
                    coge-zumbador;
               deja-zumbador;
            fin;
        fin;
    fin;
fin;
    inicia-ejecucion
    busca;
    final;
    (*farmero;
    final;*)
        apagate;
    termina-ejecucion
finalizar-programa
