iniciar-programa
define-nueva-instruccion mira-sur como
inicio
   mientras no-orientado-al-sur hacer
     gira-izquierdA;
fin;
define-nueva-instruccion mira-este como
inicio
  mientras no-orientado-al-este hacer
    gira-izquierda;
fin;
define-nueva-instruccion mira-norte como
inicio
   mientras no-orientado-al-norte hacer
     gira-izquierdA;
fin;
define-nueva-instruccion mira-oeste como
inicio
   mientras no-orientado-al-oeste hacer
     gira-izquierda;
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 gira-derecha como
inicio
   repetir 3 veces
     gira-izquierda;
fin;
define-nueva-instruccion llena como
inicio
   mientras derecha-libre hacer
   inicio
      si no-junto-a-zumbador y frente-libre entonces
      inicio
         repetir 2 veces
           deja-zumbador;
      fin ;

        si frente-libre entonces
            avanza
          sino
          inicio
             gira-derecha;
             avanzA;
             gira-derecha;
             mientras frente-libre hacer
               avanza;
             mira-norte;
             avanza;
          fin;
   fin;
fin;
define-nueva-instruccion horizontal como
inicio
    si frente-libre entonces
    inicio
       avanzA;
       horizontal;
       avanzA;
    fin
    sino
    inicio
       mira-este;
       deja-zumbador;
    fin;
fin;
define-nueva-instruccion vertical como
inicio
   si frente-libre entonces
   inicio
      avanza;
      vertical;
      avanza;
   fin
   sino
   inicio
      mira-oeste;
      horizontal;
      mira-norte;
   fin;
fin;
define-nueva-instruccion horizontal2 como
inicio
   si frente-libre entonces
   inicio
       avanza;
       horizontal2;
       avanza;
   fin
   sino
   inicio
      mira-este;
      coge-zumbador;
   fin;
fin;
define-nueva-instruccion vertical2 como
inicio
   si frente-libre entonces
   inicio
      avanza;
      vertical2;
      avanza;
   fin
   sino
   inicio
      mira-oeste;
      horizontal2;
      mira-norte;
   fin;
fin;
define-nueva-instruccion gira2 como
inicio
  si no-orientado-al-sur entonces
  inicio
     gira-izquierda;
     gira2;
     gira-derecha;
  fin
  sino
  inicio
     vertical2;
     mira-sur;
  fin;
fin;
define-nueva-instruccion paso-atras como
inicio
  repetir 2 veces
    gira-izquierda;
  avanza;
  repetir 2 veces
    gira-izquierda;
fin;
define-nueva-instruccion identifica como
inicio

    avanza;
    si junto-a-zumbador entonces
    inicio
       paso-atras;
       repetir 2 veces
         deja-zumbador;
    fin
    sino
       paso-atras;
    gira-izquierda;
    avanza;
    si junto-a-zumbador entonces
    inicio
       paso-atras;
       repetir 2 veces
         deja-zumbador;
    fin
    sino
      paso-atras;
    gira-derecha;
    gira-derecha;
    avanza;
    si junto-a-zumbador entonces
    inicio
        paso-atras;
        repetir 2 veces
          deja-zumbador;
    fin
    sino
      paso-atras;
    gira-izquierda;
    repetir 2 veces
      gira-izquierda;
    avanza;
    si junto-a-zumbador entonces
    inicio
       paso-atras;
       repetir 2 veces
          deja-zumbador;
    fin
    sino
    inicio
       paso-atras;
    fin;
    repetir 2 veces
      gira-izquierda;

fin;
define-nueva-instruccion lleva como
inicio
    mientras junto-a-zumbador hacer
      coge-zumbador;
    si frente-libre entonces
    inicio
       avanza;
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          si junto-a-zumbador entonces
          inicio
              lleva;
          fin
          sino
            deja-zumbador;
       fin;
       paso-atras;
    fin;
    si derecha-libre entonces
    inicio
        gira-derecha;
        avanza;
        si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          si junto-a-zumbador entonces
          inicio
              lleva;
          fin
          sino
            deja-zumbador;
       fin;
        paso-atras;
        gira-izquierda;
    fin;
    si izquierda-libre entonces
    inicio
        gira-izquierda;
        avanza;
        si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          si junto-a-zumbador entonces
          inicio
              lleva;
          fin
          sino
            deja-zumbador;
       fin;
        paso-atras;
        gira-derecha;
    fin;
fin;
define-nueva-instruccion busca como
inicio
  identifica;
  repetir 3 veces
    coge-zumbador;
  repetir 7 veces
  inicio
      si junto-a-zumbador entonces
      inicio
         coge-zumbador;
      fin;
  fin;
  si junto-a-zumbador entonces
  inicio
  mientras junto-a-zumbador hacer
     coge-zumbAdor;
   repetir 3 veces
     deja-zumbador;
    si frente-libre entonces
    inicio
       avanza;
       si junto-a-zumbador entonces
       inicio
           coge-zumbador;
           si junto-a-zumbador entonces
           inicio
              coge-zumbador;
              si no-junto-a-zumbador entonces
              inicio
                  repetir 3 veces
                    deja-zumbador;
                  busca;
              fin
              sino
              inicio
                 repetir 2 veces
                   deja-zumbador;
              fin;
           fin
           sino
              deja-zumbador;
       fin;
       paso-atras;
    fin;
    si derecha-libre entonces
    inicio
       gira-derecha;
       avanza;
       si junto-a-zumbador entonces
       inicio
           coge-zumbador;
           si junto-a-zumbador entonces
           inicio
              coge-zumbador;
              si no-junto-a-zumbador entonces
              inicio
                 repetir 3 veces
                   deja-zumbador;
                  busca;
              fin
              sino
              inicio
                 repetir 2 veces
                   deja-zumbador;
              fin;
           fin
           sino
              deja-zumbador;
       fin;
       paso-atras;
       gira-izquierda;
    fin;
    si izquierda-libre entonces
    inicio
       gira-izquierda;
       avanza;
       si junto-a-zumbador entonces
       inicio
           coge-zumbador;
           si junto-a-zumbador entonces
           inicio
              coge-zumbador;
              si no-junto-a-zumbador entonces
              inicio
                 repetir 3 veces
                   deja-zumbador;
                  busca;
              fin
              sino
              inicio
                 repetir 3 veces
                   deja-zumbador;
              fin;
           fin
           sino
              deja-zumbador;
       fin;
       paso-atras;
       gira-derecha;
    fin;
    fin
    sino
    inicio
       repetir 2 veces
         deja-zumbador;
       lleva;
       gira2;
    fin;
fin;

define-nueva-instruccion recoge como
inicio
   si junto-a-zumbador y frente-libre entonces
   inicio
      coge-zumbador;
      si junto-a-zumbador entonces
      inicio
         coge-zumbador;
         si no-junto-a-zumbador entonces
         inicio
            repetir 3 veces
               deja-zumbador;
            mira-sur;
            vertical;
            busca;

         fin
         sino
         inicio
            repetir 2 veces
             deja-zumbador;
         fin;
      fin
      sino
      inicio
        deja-zumbador;
      fin;
   fin;

fin;
    inicia-ejecucion
    ubicate;
    avanza;
    gira-derecha;
    avanza;
    gira-izquierdA;
    llena;
    ubicate;
    avanza;
    gira-derecha;
    avanzA;
    gira-izquierdA;
    mientras derecha-libre hacer
    inicio
       recoge;
       si frente-libre entonces
         avanza
       sino
       inicio
          gira-derecha;
          avanza;
          gira-derecha;
          mientras frente-libre hacer
            avanza;
          mira-norte;
          avanza;
       fin;
    fin;
    ubicate;
        apagate;
    termina-ejecucion
finalizar-programa
