iniciar-programa
define-nueva-instruccion gira(n) como
inicio
    repetir n veces gira-izquierda;
fin;
define-prototipo-instruccion busca(n);
define-nueva-instruccion compara(n) como
inicio
    si junto-a-zumbador entonces
    inicio
    coge-zumbador;
        gira(1);
        avanza;
        gira(3);
            si junto-a-zumbador entonces
            inicio
            coge-zumbador;
            gira(3);
            avanza;
            gira(1);
            compara(sucede(n));
            fin
            sino
            inicio
            gira(3);
            avanza;
            gira(1);
            mientras junto-a-zumbador hacer
            coge-zumbador;
            repetir n veces deja-zumbador;
            sal-de-instruccion;
            fin;
     fin
     sino
     inicio
     gira(1);
     avanza;
     mientras junto-a-zumbador hacer coge-zumbador;
     gira(2);
     avanza;
     repetir n veces deja-zumbador;
     gira(1);
     sal-de-instruccion;
     fin;

fin;
define-nueva-instruccion guarda(n) como
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
guarda(sucede(n));
fin
sino
inicio
repetir n veces deja-zumbador;
gira(2);
avanza;
repetir n veces deja-zumbador;
gira(2);
avanza;
fin;
fin;
define-nueva-instruccion regresa(n) como
inicio
    gira(2);
    avanza;
    guarda(0);
       mientras junto-a-zumbador hacer coge-zumbador;
    gira(2);

fin;
define-nueva-instruccion  sii(n) como
inicio
    repetir n veces
    inicio
    si no-junto-a-zumbador entonces
    inicio
    regresa(0);
    sal-de-instruccion;
    fin;
    coge-zumbador;
    fin;
    si no-junto-a-zumbador entonces
    inicio
    busca(sucede(n));
    fin;
    sii(n);
fin;
define-nueva-instruccion revisa(n) como
inicio
si frente-bloqueado y derecha-bloqueada y izquierda-bloqueada y no-junto-a-zumbador entonces
    inicio
    repetir n veces deja-zumbador;
    gira(2);
    avanza;
    gira(2);
    sal-de-instruccion;
    fin
    sino
    inicio
    si frente-bloqueado y derecha-bloqueada y izquierda-bloqueada y junto-a-zumbador entonces
    inicio
       guarda(0);
       mientras junto-a-zumbador hacer coge-zumbador;
       repetir n veces deja-zumbador;
       gira(1);
       compara(0);
       gira(3);
    fin;
    guarda(0);
    sii(n);
    fin;
fin;
define-nueva-instruccion busca(n) como
inicio
      si frente-libre entonces
      inicio
          avanza;
          revisa(n);
      fin;

      si izquierda-libre entonces
      inicio
          gira(1);
          avanza;
          revisa(n);
          gira(3);
      fin;

      si derecha-libre entonces
      inicio
          gira(3);
          avanza;
          revisa(n);
          gira(1);
      fin;

fin;
    inicia-ejecucion
   busca(1);
        apagate;
    termina-ejecucion
finalizar-programa
