iniciar-programa
define-nueva-instruccion recursiva(n) como inicio
si frente-libre entonces inicio
avanza;
recursiva(sucede(n));
fin
sino
inicio
repetir 2 veces gira-izquierda;
mientras frente-libre hacer avanza;
repetir n veces deja-zumbador;
fin;
fin;
define-nueva-instruccion gira-derecha como inicio
repetir 3 veces gira-izquierda;
fin;
 define-nueva-instruccion tapa(n) como inicio
 si junto-a-zumbador entonces inicio
 coge-zumbador;
 tapa(sucede(n));
  fin
  sino
  inicio
  gira-derecha;
  avanza;
  gira-derecha;
  repetir n veces inicio
  deja-zumbador;
  SI FRENTE-BLOQUEADO ENTONCES APAGATE;
  avanza;
  fin;


  fin;

  fin;

define-nueva-instruccion  busca como inicio
mientras  frente-libre Y NO-JUNTO-A-ZUMBADOR hacer inicio
avanza;
 fin;
si junto-a-zumbador entonces inicio
MIENTRAS JUNTO-A-ZUMBADOR HACER coge-zumbador;
repetir 2 veces gira-izquierda;
mientras frente-libre hacer avanza;
repetir 2 veces gira-izquierda;
recursiva(1);
tapa(0);
gira-derecha;
avanza;
gira-izquierda;
busca;
fin;

repetir 1 veces gira-izquierda;
 avanza;
 gira-derecha;
 si frente-bloqueado entonces apagate;
avanza;
repetir 3 veces gira-izquierda;
avanza;
gira-izquierda;
busca;

fin;



  inicia-ejecucion
    mientras no orientado-al-este hacer gira-izquierda;
    mientras frente-libre hacer  avanza;
    gira-izquierda;
    mientras frente-libre hacer avanza;
    gira-izquierda;
   busca;

        apagate;
    termina-ejecucion
finalizar-programa
