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

define-nueva-instruccion esmayor (m) como inicio
    si junto-a-zumbador entonces inicio
       coge-zumbador;
       esmayor (sucede(m) );

    fin
    sino inicio
    repetir m veces deja-zumbador;
        repetir 89 veces inicio
        si junto-a-zumbador entonces coge-zumbador;
        fin;
      si  junto-a-zumbador entonces gira (3);
      repetir m veces deja-zumbador;

    fin;

fin;

define-nueva-instruccion mueve (k) como inicio
    si junto-a-zumbador entonces inicio
       coge-zumbador;
       mueve (sucede(k));
       deja-zumbador;


    fin
    sino inicio
        repetir k veces deja-zumbador;
        avanza;

    fin;

fin;

define-nueva-instruccion multiplos (t) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
multiplos (sucede(t));
fin
sino inicio
    mientras orientado-al-norte hacer inicio
esmayor (0);
repetir t veces deja-zumbador;
   si orientado-al-norte entonces  mueve (0);


    fin;
    gira-izquierda;
fin;

fin;


define-nueva-instruccion busqueda (s) como inicio
   si junto-a-zumbador entonces inicio
       coge-zumbador;
       busqueda (sucede(s));

   fin
   sino inicio
       gira (2);
       mientras frente-libre hacer avanza;
       gira-izquierda;
       avanza;
       gira-izquierda;
       mientras no junto-a-zumbador hacer avanza;
       mientras junto-a-zumbador hacer inicio   (*busqueda*)
       repetir precede (s) veces inicio
           si junto-a-zumbador entonces coge-zumbador;


       fin;
       si junto-a-zumbador entonces inicio
       coge-zumbador;
       si no junto-a-zumbador entonces inicio
           (*encontrado*)
           gira (2);
           mientras frente-libre hacer avanza;
           gira-izquierda;
           avanza;
           repetir s veces deja-zumbador;
           apagate;

       fin
       sino inicio
           repetir s veces deja-zumbador;
           avanza;

       fin;
       fin
       sino inicio
           avanza;
       fin;


       fin;

   fin;

fin;



    inicia-ejecucion
    mientras no orientado-al-oeste hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    gira-izquierda;
    mientras frente-libre hacer avanza;
    gira (2);
    multiplos (0);
    gira (2);
    mientras frente-libre hacer avanza;
    gira-izquierda;
    avanza;
    gira-izquierda;
    multiplos (0);
    gira (2);
    mientras frente-libre hacer avanza;
    gira (3);
    avanza;
    gira (3);
    mientras junto-a-zumbador hacer inicio
        busqueda (0);
        gira (2);
        mientras frente-libre hacer avanza;
        gira (3);
        avanza;
        gira (3);
        mientras no junto-a-zumbador hacer avanza;

    fin;




        apagate;
    termina-ejecucion
finalizar-programa
