iniciar-programa
define-nueva-instruccion gira(e) como repetir e veces gira-izquierda;

 define-nueva-instruccion end(n) como inicio
  si si-es-cero(n) entonces inicio
  gira(1);
  avanza;
  gira(1);
  mientras derecha-bloqueada hacer avanza;
  gira(3);
  avanza;
  gira(1);
  mientras frente-libre hacer avanza;
  gira(2);
  mientras no junto-a-zumbador  y frente-libre hacer avanza;
  gira(2);
  avanza;
  deja-zumbador; deja-zumbador;
  gira(2);
  mientras frente-libre hacer avanza;
  apagate;
   fin sino inicio
    gira(1);
  avanza;
  gira(1);
  mientras frente-libre hacer avanza;
  gira(3);
  avanza;
  gira(1);
  mientras frente-libre hacer avanza;
  gira(2);
  mientras no junto-a-zumbador y frente-libre hacer avanza;
  gira(2);
   repetir n veces avanza;
   avanza;
    deja-zumbador; deja-zumbador;
    apagate;
   fin;

 fin;

define-nueva-instruccion vuelve como inicio
mientras frente-libre hacer avanza;
gira(1);
avanza; avanza;
gira(1);
mientras no junto-a-zumbador y frente-libre hacer avanza;
coge-zumbador;
fin;
 define-nueva-instruccion coloca(n)como inicio
  si no junto-a-zumbador entonces inicio
  si frente-libre entonces  avanza;
  si frente-libre entonces  coloca(sucede(n)) sino end(n) ;
  fin;
  si junto-a-zumbador entonces inicio
  gira(1);
  avanza;
  gira(1);
  mientras frente-libre  hacer avanza;
  gira(3);
  avanza;
  gira(3);
  mientras frente-libre y no junto-a-zumbador hacer avanza;
  gira(2);
  repetir n veces avanza;
  deja-zumbador;
  vuelve;
  coloca(0);
  fin;

 fin;

define-nueva-instruccion div como inicio
si no junto-a-zumbador entonces  inicio
  gira(1);
  avanza;
  gira(1);
  coloca(0);
fin;
mientras junto-a-zumbador hacer inicio
  si junto-a-zumbador entonces coge-zumbador;
  si no junto-a-zumbador entonces inicio
  mientras no orientado-al-oeste hacer gira-izquierda;
  gira(2);
  avanza;
  gira(1);
  avanza;
  deja-zumbador;
  gira(2);
  avanza;
  gira(1);
  div;
  fin;
  mientras no junto-a-zumbador y frente-libre hacer avanza;

 si  junto-a-zumbador entonces  inicio
 coge-zumbador;
 mientras no orientado-al-este hacer gira-izquierda;
  avanza;
  deja-zumbador;
  gira(2);
  avanza;
  fin;
 fin;
 si frente-bloqueado y orientado-al-oeste entonces  inicio
 gira(2);
 avanza;
 si no junto-a-zumbador entonces apagate;

 fin;
 mientras no orientado-al-este hacer gira-izquierda;
 mientras no junto-a-zumbador y frente-libre hacer avanza;
 div;
fin;
    inicia-ejecucion
    mientras no orientado-al-este hacer gira-izquierda;
   div;


        apagate;
    termina-ejecucion
finalizar-programa
