 iniciar-programa
   define-nueva-instruccion media-Vuelta como repetir 2 veces gira-izquierda;
   define-nueva-instruccion gira-Derecha como repetir 3 veces gira-izquierda;


  define-nueva-instruccion largo(n) como inicio
  si junto-a-zumbador entonces inicio
  coge-zumbador;
  largo(Sucede(n));
  fin
  sino inicio
  si no si-es-cero(n) entonces inicio
  repetir n veces
  si algun-zumbador-en-la-mochila entonces inicio
  deja-zumbador;
  fin sino inicio
  media-vuelta; avanza; repetir 95 veces coge-zumbador;
  avanza;
  repetir 5 veces coge-zumbador;
  mientras frente-libre hacer avanza;
  gira-izquierda;
  avanza; repetir 100 veces  deja-zumbador; apagate;
  fin;
  fin
  sino si si-es-cero(n) entonces inicio
  media-vuelta; mientras frente-libre hacer avanza;
  sal-de-instruccion;
  fin;

  si frente-libre entonces inicio
  avanza;
  fin sino si frente-bloqueado entonces inicio
   media-vuelta; mientras frente-libre hacer avanza;
   sal-de-instruccion;
   fin;
  largo(precede(n));
  fin;
  fin;

 define-nueva-instruccion mide(n) como inicio
 si frente-libre y junto-a-zumbador entonces inicio
 mientras junto-a-zumbador hacer coge-zumbador;
 avanza;
 mide(sucede(n));
 fin
 sino inicio
 media-vuelta;
 repetir n veces avanza;
 gira-derecha; avanza; gira-derecha;
 mientras frente-libre y junto-a-zumbador hacer inicio avanza; fin;
 media-vuelta;
 avanza;
 repetir n veces  inicio
 mientras junto-a-zumbador hacer coge-zumbador;
 avanza;
 fin;

 fin;
 fin;

 define-nueva-instruccion multi(k) como inicio
 si junto-a-zumbador entonces inicio
 coge-zumbador;
 multi(k);
 repetir k veces inicio
 deja-zumbador;
 fin;
 fin;
 fin;

 define-nueva-instruccion uno(k) como inicio
 si junto-a-zumbador entonces inicio
 coge-zumbador;
 uno(sucede(k));
 fin
 sino si frente-libre entonces
 inicio
 avanza;
 multi(k);
 fin
 sino si frente-bloqueado entonces inicio
 gira-izquierda;
 mientras frente-libre hacer avanza;
 repetir k veces deja-zumbador;
 apagate;
 fin;
 si frente-bloqueado entonces
 uno(0);
 si frente-libre entonces
 uno(0);
 fin;


    inicia-ejecucion
    mientras no orientado-al-norte hacer inicio gira-izquierda; fin;
    avanza; gira-derecha;
    largo(0);
    gira-derecha;
    avanza; gira-derecha;
    largo(0);
    gira-izquierda;
    avanza; gira-izquierda;
    mide(0);
    uno(0);





        apagate;
    termina-ejecucion
finalizar-programa
