iniciar-programa
define-nueva-instruccion gira(n) como inicio
repetir n veces gira-izquierda;
fin;

define-nueva-instruccion norte como inicio
mientras no orientado-al-norte hacer
gira-izquierda;
fin;
define-nueva-instruccion este como inicio
mientras no orientado-al-este hacer
gira-izquierda;
fin;
define-nueva-instruccion sur como inicio
mientras no orientado-al-sur hacer
gira-izquierda;
fin;
define-nueva-instruccion oeste como inicio
mientras no orientado-al-oeste hacer
gira-izquierda;
fin;

define-nueva-instruccion  marca como inicio
si no junto-a-zumbador entonces inicio
deja-zumbador;

norte;
si frente-libre entonces inicio
avanza;
marca;
sur;
avanza;
fin;

este;
si frente-libre entonces inicio
avanza;
marca;
oeste;
avanza;
fin;

sur;
si frente-libre entonces inicio
avanza;
marca;
norte;
avanza;
fin;

oeste;
si frente-libre entonces inicio
avanza;
marca;
este;
avanza;
fin;

fin;
fin;


define-nueva-instruccion pon como inicio
si no junto-a-zumbador entonces inicio
deja-zumbador;

norte;
si frente-libre entonces inicio
avanza;
marca;
sur;
avanza;
fin;

este;
si frente-libre entonces inicio
avanza;
marca;
oeste;
avanza;
fin;

sur;
si frente-libre entonces inicio
avanza;
marca;
norte;
avanza;
fin;

oeste;
si frente-libre entonces inicio
avanza;
marca;
este;
avanza;
fin;

fin;

fin;

define-nueva-instruccion busca como inicio
  si junto-a-zumbador entonces inicio
    si frente-libre entonces inicio
      avanza;
        busca;
    fin sino inicio
      si izquierda-libre entonces inicio
        gira(1);
        avanza;
        gira(1);
        mientras frente-libre hacer
        avanza;
        gira(2);
        busca;
      fin sino inicio
        sal-de-instruccion;
      fin;

    fin;
  fin sino inicio
    pon;
    sur;
    mientras frente-libre hacer
    avanza;
    oeste;
    mientras frente-libre hacer
    avanza;
    este;
    deja-zumbador;
    busca;

fin;
fin;



    inicia-ejecucion
    sur;
    mientras frente-libre hacer
    avanza;
    oeste;
    mientras frente-libre hacer
    avanza;
    norte;


    marca;
    mientras no orientado-al-este hacer
    gira-izquierda;
    busca;

     sur;
    mientras frente-libre hacer
    avanza;
    oeste;
    mientras frente-libre hacer
    avanza;
    este;

    coge-zumbador;
        apagate;
    termina-ejecucion
finalizar-programa
