iniciar-programa
   define-nueva-instruccion gira(n) como inicio
      repetir n veces
         gira-izquierda;
   fin;
   define-nueva-instruccion norte como inicio
      mientras no-orientado-al-norte hacer
         gira(1);
   fin;
   define-nueva-instruccion sur como inicio
      mientras no-orientado-al-sur hacer
         gira(1);
   fin;
   define-nueva-instruccion este como inicio
      mientras no-orientado-al-este hacer
         gira(1);
   fin;
   define-nueva-instruccion oeste como inicio
      mientras no-orientado-al-oeste hacer
         gira(1);
   fin;
   define-nueva-instruccion ultimo(n) como inicio
      si no-junto-a-zumbador entonces inicio
         avanza;
         ultimo(sucede(n));
      fin
      sino inicio
         mientras junto-a-zumbador hacer
            coge-zumbador;
         mientras frente-libre hacer inicio
            si junto-a-zumbador entonces
               coge-zumbador;
            avanza;
         fin;
         oeste;
         mientras frente-libre hacer
            avanza;
         repetir n veces
            deja-zumbador;
         apagate;
      fin;
   fin;
   define-nueva-instruccion cuenta(n) como inicio
      si no-junto-a-zumbador entonces inicio
         si frente-libre entonces inicio
            avanza;
            cuenta(sucede(n));
         fin
         sino inicio
            oeste;
            mientras frente-libre hacer
               avanza;
            sur;
            avanza;
            este;
            ultimo (1);
         fin;
      fin
      sino inicio
         oeste;
         mientras frente-libre hacer
            avanza;
         sur;
         avanza;
         este;
         repetir n veces
            avanza;
         deja-zumbador;
         oeste;
         mientras frente-libre hacer
            avanza;
         norte;
         avanza;
         este;
         mientras no-junto-a-zumbador hacer
            avanza;
         coge-zumbador;
         avanza;
         cuenta(0);
      fin;
   fin;
   define-nueva-instruccion coge(n) como inicio
      si junto-a-zumbador entonces inicio
         coge-zumbador;
         coge(sucede(n));
      fin
      sino inicio
         deja-zumbador;
         oeste;
         mientras frente-libre hacer
            avanza;
         norte;
         avanza;
         este;
         repetir precede(n) veces
            avanza;
         deja-zumbador;
         oeste;
         mientras frente-libre hacer
            avanza;
         sur;
         avanza;
         este;
         mientras no-junto-a-zumbador hacer
            avanza;
         coge-zumbador;
         avanza;
         si junto-a-zumbador entonces inicio
            coge(0);
         fin
         sino inicio
            oeste;
            mientras frente-libre hacer
               avanza;
            norte;
            avanza;
            este;
            mientras no-junto-a-zumbador hacer
               avanza;
            coge-zumbador;
            avanza;
            cuenta (0);
         fin;
      fin;
   fin;
    inicia-ejecucion
       coge(0);
        apagate;
    termina-ejecucion
finalizar-programa