iniciar-programa
 define-nueva-instruccion creas(n) como inicio
si junto-a-zumbador y frente-libre entonces inicio
   coge-zumbador;
   creas(sucede(n));
   fin
   sino inicio
         si no-junto-a-zumbador entonces inicio
   repetir n veces deja-zumbador;
   fin;
        repetir 4 veces inicio
        mientras junto-a-zumbador y frente-libre  hacer inicio
si frente-libre entonces avanza;

si no junto-a-zumbador entonces inicio
         repetir n veces deja-zumbador;

         deja-zumbador;
         fin;
         gira-izquierda;
         gira-izquierda;
         si frente-libre entonces inicio
         avanza;
gira-izquierda;
         gira-izquierda;gira-izquierda;
         fin;
si frente-libre entonces inicio
avanza;
 gira-izquierda;
         gira-izquierda;gira-izquierda;
         fin;
         fin;


         si no-junto-a-zumbador y frente-libre  entonces inicio
           si frente-libre entonces avanza;
           si no-junto-a-zumbador entonces inicio
         repetir n veces deja-zumbador;
         fin;
         deja-zumbador;
         gira-izquierda;
         gira-izquierda;
         si frente-libre entonces avanza;
         gira-izquierda;
          si frente-libre entonces avanza;
           gira-izquierda;    gira-izquierda;
         fin;
         fin;
         fin;
         fin;


 define-nueva-instruccion bu(n) como inicio
            repetir n veces inicio
        si frente-libre entonces inicio
         creas(0);
        si frente-libre entonces inicio
        avanza;
         gira-izquierda;
         gira-izquierda; gira-izquierda;
         si frente-libre entonces avanza;
         mientras junto-a-zumbador hacer coge-zumbador;
         gira-izquierda;
         gira-izquierda;
          si frente-libre entonces avanza;
gira-izquierda;
   si frente-libre entonces avanza;
          gira-izquierda;
           si frente-libre entonces avanza;
          gira-izquierda;
          fin;
   fin;
    fin;
    fin;

 define-nueva-instruccion has(n) como inicio
 si junto-a-zumbador entonces  inicio

repetir n veces inicio
si junto-a-zumbador entonces coge-zumbador
sino inicio
mientras no-orientado-al-norte hacer gira-izquierda ;
si frente-libre entonces avanza;
repetir n veces deja-zumbador;
si junto-a-zumbador entonces  coge-zumbador;
fin;
fin;
si orientado-al-oeste y junto-a-zumbador entonces inicio
mientras junto-a-zumbador hacer coge-zumbador;
repetir n veces deja-zumbador;
fin
sino
si orientado-al-oeste y no junto-a-zumbador entonces inicio
repetir n veces deja-zumbador;
fin;
si orientado-al-norte entonces inicio
mientras junto-a-zumbador hacer inicio
coge-zumbador ;
mientras no-orientado-al-sur hacer gira-izquierda;
si frente-libre entonces avanza;
deja-zumbador;
mientras no-orientado-al-norte hacer gira-izquierda;
si frente-libre entonces  avanza;
fin;
 fin;
 fin;
  fin;


define-nueva-instruccion   area(n) como inicio
si frente-libre entonces inicio
avanza;
area(sucede(n));
fin
sino inicio
gira-izquierda; gira-izquierda;
mientras frente-libre hacer avanza;
si junto-a-zumbador entonces  inicio
has(n);
mientras no-orientado-al-sur hacer gira-izquierda;
mientras frente-libre hacer avanza;
fin;
si no junto-a-zumbador entonces inicio
repetir n veces inicio
deja-zumbador;
fin;
fin;
fin;
fin;

 define-nueva-instruccion centro(n) como inicio
 si junto-a-zumbador entonces  inicio
 coge-zumbador;
 si junto-a-zumbador entonces
 coge-zumbador;
 centro(sucede(n));
 fin
 sino inicio

 repetir n veces deja-zumbador;
 fin;

      fin;
                    define-nueva-instruccion busca(n) como inicio
 si junto-a-zumbador entonces  inicio
 coge-zumbador;
 busca(sucede(n));
 fin
 sino inicio

 repetir n veces inicio
 si frente-libre entonces avanza;
 fin;
 mientras no-orientado-al-este hacer gira-izquierda;
 repetir n veces inicio
 si frente-libre entonces avanza;
 fin;
 deja-zumbador;
bu(n);

 fin;
       fin;


    inicia-ejecucion
     mientras no-orientado-al-norte hacer gira-izquierda;
      area(1);
      mientras no-orientado-al-este hacer gira-izquierda;
      area(1);
          gira-izquierda;
          gira-izquierda;
          has(0) ;
          mientras no-orientado-al-sur hacer gira-izquierda;
          mientras frente-libre hacer avanza;
          mientras no-orientado-al-norte hacer gira-izquierda;
          centro(0);
              mientras no-orientado-al-norte hacer gira-izquierda;
 busca(precede(0));
        apagate;
    termina-ejecucion
finalizar-programa


