iniciar-programa
define-nueva-instruccion media-vuelta como repetir 2 veces gira-izquierda;
define-nueva-instruccion gira-derecha como repetir 3 veces gira-izquierda;
 define-nueva-instruccion busca(n) como inicio
   si no junto-a-zumbador entonces inicio
   si frente-libre  entonces inicio
   deja-zumbador;
   avanza;
   busca(n);
   media-vuelta; avanza; coge-zumbador; media-vuelta;
   fin;
   si izquierda-libre entonces inicio
   gira-izquierda;   deja-zumbador;
   avanza;
   busca(n);
   media-vuelta; avanza; coge-zumbador; gira-izquierda;
   fin;
   si derecha-libre entonces inicio
   gira-derecha;  deja-zumbador;
   avanza;
   busca(n);
   media-vuelta; avanza; coge-zumbador;gira-derecha;
   fin;
   fin
   sino inicio
     si junto-a-zumbador entonces inicio
    coge-zumbador;
     si junto-a-zumbador entonces inicio
      coge-zumbador;  repetir 101 veces deja-zumbador;
       fin
       sino  inicio
       deja-zumbador;
       sal-de-instruccion;
       fin;
       fin;
   fin;
   fin;
 define-nueva-instruccion resta(n) como inicio
  si no si-es-cero(n) y junto-a-zumbador entonces inicio
  coge-zumbador;
  resta(precede(n));
  deja-zumbador;
  fin
  sino inicio
  si si-es-cero (n) y junto-a-zumbador entonces mientras junto-a-zumbador hacer coge-zumbador;
  fin;
  fin;

 define-nueva-instruccion busca1(n) como inicio
   si no junto-a-zumbador entonces inicio
   si frente-libre  entonces inicio
   deja-zumbador;
   avanza;
   busca1(sucede(n));
   media-vuelta; avanza; coge-zumbador; media-vuelta;
   fin;
   si izquierda-libre entonces inicio
   gira-izquierda;  deja-zumbador;
   avanza;
   busca1(sucede(n));
   media-vuelta; avanza; coge-zumbador; gira-izquierda;
   fin;
   si derecha-libre entonces inicio
   gira-derecha;     deja-zumbador;
   avanza;
   busca1(sucede(n));
   media-vuelta; avanza; coge-zumbador; gira-derecha;
   fin;
   fin
   sino inicio
    resta(n);
   fin;
   fin;
    inicia-ejecucion
    busca(0);
    mientras junto-a-zumbador hacer coge-zumbador;
    mientras no orientado-al-norte hacer gira-izquierda; busca1(0);
    mientras no orientado-al-este hacer gira-izquierda; busca1(0);
    mientras no orientado-al-sur hacer gira-izquierda; busca1(0);
    mientras no orientado-al-oeste hacer gira-izquierda; busca1(0);
        apagate;
    termina-ejecucion
finalizar-programa
