iniciar-programa
 define-nueva-instruccion c(l) como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     c(sucede(l));
    fin
   sino
    inicio
     avanza;
     avanza;
     avanza;
     gira-izquierda;
     gira-izquierda;
     repetir l veces
         deja-zumbador;
     avanza;
     avanza;
     avanza;
     repetir l veces
         deja-zumbador;
     avanza;
     gira-izquierda;
     gira-izquierda;
     repetir l veces
         deja-zumbador;
    fin;
  fin;
 define-nueva-instruccion a(m) como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     a(m);
     repetir m veces
         deja-zumbador;
    fin;
  fin;
 define-nueva-instruccion g(n) como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     g(sucede(n));
    fin
   sino
    inicio
     avanza;
     a(n);
    fin;
  fin;
 define-nueva-instruccion d como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     coge-zumbador;
     d;
     deja-zumbador;
    fin;
  fin;
 define-nueva-instruccion m como
  inicio
   si frente-libre entonces
    inicio
     avanza;
     m;
     deja-zumbador;
    fin;
  fin;
 define-nueva-instruccion b como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     b;
     deja-zumbador;
     deja-zumbador;
    fin;
  fin;
 define-nueva-instruccion e(p) como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     e(sucede(p));
    fin
   sino
    inicio
     avanza;
     avanza;
     repetir p veces
         deja-zumbador;
     deja-zumbador;
     gira-izquierda;
     gira-izquierda;
     avanza;
     avanza;
     avanza;
     gira-izquierda;
     gira-izquierda;
     mientras junto-a-zumbador hacer
      inicio
       repetir p veces
           si junto-a-zumbador entonces
               coge-zumbador;
       si junto-a-zumbador entonces
        inicio
         coge-zumbador;
         avanza;
         deja-zumbador;
         gira-izquierda;
         gira-izquierda;
         avanza;
         gira-izquierda;
         gira-izquierda;
        fin;
      fin;
    fin;
  fin;
 define-nueva-instruccion h(r) como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     h(r);
     repetir r veces
         deja-zumbador;
    fin;
  fin;
 define-nueva-instruccion f(q) como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     f(sucede(q));
    fin
   sino
    inicio
     si orientado-al-norte entonces
         repetir q veces
             deja-zumbador;
     si frente-bloqueado entonces
      inicio
       gira-izquierda;
       repetir q veces
           deja-zumbador;
       avanza;
      fin;
     avanza;
     avanza;
     gira-izquierda;
     gira-izquierda;
     h(q);
    fin;
  fin;
 define-nueva-instruccion i(s) como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     i(sucede(s));
    fin
   sino
    inicio
     repetir s veces
         deja-zumbador;
     avanza;
     avanza;
     gira-izquierda;
     gira-izquierda;
     repetir s veces
         deja-zumbador;
     avanza;
     gira-izquierda;
     gira-izquierda;
    fin;
  fin;
 define-nueva-instruccion j(t) como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     j(sucede(t));
    fin
   sino
    inicio
     si frente-bloqueado entonces
      inicio
       gira-izquierda;
       repetir t veces
           deja-zumbador;
       coge-zumbador;
       avanza;
      fin;
     avanza;
     repetir t veces
      inicio
       si junto-a-zumbador entonces
           coge-zumbador;
      fin;
     avanza;
    fin;
  fin;
 define-nueva-instruccion k como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     k;
     deja-zumbador;
    fin
   sino
    inicio
     avanza;
     gira-izquierda;
    fin;
  fin;
    inicia-ejecucion
     gira-izquierda;
     avanza;
     c(0);
     deja-zumbador;
     g(0);
     d;
     gira-izquierda;
     gira-izquierda;
     avanza;
     gira-izquierda;
     mientras frente-libre hacer
         avanza;
     gira-izquierda;
     gira-izquierda;
     m;
     repetir 3 veces
         gira-izquierda;
     b;
     avanza;
     avanza;
     gira-izquierda;
     gira-izquierda;
     f(0);
     i(0);
     coge-zumbador;
     e(0);
     avanza;
     f(0);
     j(0);
     gira-izquierda;
     gira-izquierda;
     avanza;
     avanza;
     avanza;
     gira-izquierda;
     f(0);
     avanza;
     mientras junto-a-zumbador hacer
      inicio
       avanza;
       avanza;
       gira-izquierda;
       j(0);
       deja-zumbador;
       gira-izquierda;
       gira-izquierda;
       avanza;
      fin;
     gira-izquierda;
     gira-izquierda;
     avanza;
     k;
     gira-izquierda;
        apagate;
    termina-ejecucion
finalizar-programa
