iniciar-programa
define-nueva-instruccion gira-derecha como  repetir 3 veces gira-izquierda;
define-nueva-instruccion media-vuelta como repetir 2 veces gira-izquierda;

Define-nueva-instruccion recorre como inicio
Si junto-a-zumbador entonces inicio
 coge-zumbador;
 Recorre;
 Si junto-a-zumbador  entonces inicio
  si frente-bloqueado entonces gira-izquierda;
  Avanza;
  si frente-bloqueado entonces gira-izquierda;
  mientras no junto-a-zumbador hacer inicio
  si frente-libre y no junto-a-zumbador entonces avanza;
  si frente-bloqueado entonces gira-izquierda;
  fin;
 fin
 sino si no junto-a-zumbador entonces inicio
  mientras no junto-a-zumbador hacer inicio
  si frente-libre y no junto-a-zumbador entonces avanza;
  si frente-bloqueado entonces gira-izquierda;
  fin;
  fin;

 fin;
 fin;





Define-nueva-instruccion avanzar(n) como inicio
 si no si-es-cero(n) entonces inicio
 mientras no junto-a-zumbador hacer inicio
  si frente-libre y no junto-a-zumbador entonces avanza;
  si frente-bloqueado entonces gira-izquierda;
  fin;
 recorre;
 avanzar(precede(n));
 fin;
fin;

 Define-nueva-instruccion mide(n) como inicio
 si frente-libre y junto-a-zumbador entonces inicio
  avanza;
  Mide(sucede(n));
 fin
 sino
 si frente-bloqueado y no orientado-al-sur entonces inicio
 gira-izquierda;
 avanza;
 Mide(sucede(n));
 fin;
 Si orientado-al-sur y junto-a-zumbador y frente-bloqueado entonces inicio
 Gira-izquierda;
 Avanzar(precede(n));
 fin;
 fin;

Define-nueva-instruccion coge(n) como inicio
 si junto-a-zumbador entonces inicio
 coge-zumbador;
 coge(sucede(n));
 fin sino
 inicio
    mientras no orientado-al-oeste hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    gira-izquierda;
    mientras frente-libre hacer avanza;
    media-vuelta;
 repetir n veces
 deja-zumbador;
 apagate;
 fin;
 fin;


 inicia-ejecucion
 mientras no orientado-al-oeste hacer gira-izquierda;
 mientras frente-libre hacer avanza;
 gira-izquierda;
 mientras frente-libre hacer avanza;
 media-vuelta;
mientras no orientado-al-este hacer gira-izquierda;
  mide(0);
  Coge(0);

        apagate;
    termina-ejecucion
finalizar-programa
