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 orienta como inicio
      oeste;
      mientras frente-libre hacer
         avanza;
      sur;
      mientras frente-libre hacer
         avanza;
      este;
   fin;
   define-nueva-instruccion deja(n) como inicio
      si (si-es-cero(n)) entonces inicio
         norte;
            mientras junto-a-zumbador hacer
               avanza;
            deja-zumbador;
            sur;
            mientras frente-libre hacer
               avanza;
            norte;
      fin
      sino inicio
         repetir precede(n) veces
            avanza;
            oeste;
         si frente-libre entonces inicio
            norte;
            mientras junto-a-zumbador hacer
               avanza;
            deja-zumbador;
            deja-zumbador;
            sur;
            mientras frente-libre hacer
               avanza;
            oeste;
            avanza;
            norte;
            mientras junto-a-zumbador hacer
               avanza;
            deja-zumbador;
            sur;
            mientras frente-libre hacer
               avanza;
            norte;
         fin
         sino inicio
            este;
            avanza;
            norte;
            mientras junto-a-zumbador hacer
               avanza;
            deja-zumbador;
            deja-zumbador;
            sur;
            mientras frente-libre hacer
               avanza;
            oeste;
            avanza;
            norte;
         fin;
      fin;
   fin;
   define-nueva-instruccion regresa(n) como inicio
      si frente-libre entonces inicio
         avanza;
         regresa(n);
         avanza;
      fin
      sino inicio
         si orientado-al-oeste entonces inicio
            sur;
            regresa(n);
            este;
         fin
         sino inicio
            este;
            deja(precede(n));
            norte;
         fin;
      fin;
   fin;
   define-nueva-instruccion coge(n) como inicio
      si junto-a-zumbador entonces inicio
         coge-zumbador;
         coge(sucede(n));
      fin
      sino inicio
         oeste;
         regresa(n);
         si frente-libre entonces
            avanza;
      fin;
   fin;

   define-nueva-instruccion busca como inicio
         si junto-a-zumbador entonces inicio
            coge(0);
         fin
         sino inicio
            si frente-libre entonces inicio
               avanza;
            fin
            sino inicio
               si junto-a-zumbador entonces
                  coge(0);
               norte;
               si frente-libre entonces inicio
                  avanza;
                  oeste;
                  mientras frente-libre hacer
                     avanza;
                  este;
               fin
               sino inicio
                  apagate;
               fin;
            fin;
         fin;
         busca;
      fin;
    inicia-ejecucion
       orienta;
       busca;
       apagate;
    termina-ejecucion
finalizar-programa