iniciar-programa
 define-nueva-instruccion gira(n) como
  inicio
   repetir n veces
    gira-izquierda;
  fin;
 define-nueva-instruccion res como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     avanza;
     gira(2);
     res;
    fin;
  fin;
 define-nueva-instruccion mov como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     mov;
     deja-zumbador;
    fin
   sino
    inicio
     gira(3);
     mientras frente-libre hacer
      avanza;
     gira-izquierda;
     mientras derecha-bloqueada hacer
      avanza;
     gira(3);
     avanza;
    fin;
  fin;
 define-nueva-instruccion elm como
  inicio
   gira-izquierda;
   avanza;
   mientras algun-zumbador-en-la-mochila hacer
    deja-zumbador;
   gira(2);
   avanza;
   gira-izquierda;
   avanza;
   gira-izquierda;
   mientras junto-a-zumbador hacer
    avanza;
   gira(2);
   avanza;
   mientras junto-a-zumbador hacer
    coge-zumbador;
   mientras izquierda-libre hacer
    inicio
     gira-izquierda;
     avanza;
     gira-izquierda;
     mientras junto-a-zumbador hacer
      avanza;
     gira(2);
     avanza;
     mientras junto-a-zumbador hacer
      coge-zumbador;
    fin;
   mientras frente-libre hacer
    avanza;
   gira(3);
   mientras junto-a-zumbador hacer
    avanza;
   gira(3);
   avanza;
   gira-izquierda;
   mientras no-junto-a-zumbador hacer
    avanza;
   gira-izquierda;
   avanza;
   gira(2);
   mientras algun-zumbador-en-la-mochila hacer
    deja-zumbador;
   res;
   si orientado-al-sur entonces
    inicio
     avanza;
     deja-zumbador;
     gira(2);
    fin
   sino
    inicio
     avanza;
     mov;
    fin;
  fin;
    inicia-ejecucion
     elm;
        apagate;
    termina-ejecucion
finalizar-programa
