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-prototipo-instruccion uno(n);

 define-nueva-instruccion este(n) como inicio
  si frente-libre y junto-a-zumbador y orientado-al-norte entonces inicio
  avanza;
  este(sucede(n));
  fin sino
  inicio
  media-vuelta; repetir n veces avanza;
  gira-derecha; avanza;
  repetir n veces deja-zumbador;
  fin;
  fin;
define-nueva-instruccion norte(n) como inicio
  si frente-libre y junto-a-zumbador  entonces inicio
  avanza;
  norte(sucede(n));
  fin sino
  inicio
  media-vuelta; repetir n veces avanza;
  repetir n veces deja-zumbador;
  fin;
  fin;

define-nueva-instruccion oeste(n) como inicio
 si frente-libre y junto-a-zumbador y orientado-al-norte entonces inicio
  avanza;
  oeste(sucede(n));
  fin sino
  inicio
  media-vuelta; repetir n veces avanza;
  gira-izquierda; avanza;
  repetir n veces deja-zumbador;
  fin;
 fin;


 define-nueva-instruccion coge-final(n) como inicio
 si junto-a-zumbador entonces inicio
 coge-zumbador;
 coge-final(sucede(n));
 fin sino inicio
 deja-zumbador;
 mientras frente-libre hacer avanza;
 repetir n veces deja-zumbador;
 si junto-a-zumbador entonces  inicio
 coge-zumbador;
 fin sino
 inicio
 gira-derecha; avanza; apagate;
 fin;
  gira-derecha;
 fin;
 si frente-libre entonces inicio avanza; gira-derecha; uno(n); fin;
 fin;

 define-nueva-instruccion Conteo(n) como
 inicio
  si frente-libre y junto-a-zumbador y orientado-al-norte entonces inicio
  norte(0);
  fin sino
   si frente-libre y no junto-a-zumbador y orientado-al-norte entonces inicio
  deja-zumbador;
  fin;

  mientras no orientado-al-oeste hacer gira-izquierda;

  si frente-libre y orientado-al-oeste entonces
  inicio
  avanza;
  si junto-a-zumbador entonces inicio
  gira-derecha;
  oeste(0);
  fin
  sino si no junto-a-zumbador entonces inicio
  media-vuelta; avanza;
  fin;
  fin;

  mientras no orientado-al-este hacer gira-izquierda;
  si frente-libre y orientado-al-este entonces inicio
  avanza;
  si junto-a-zumbador entonces inicio
  gira-izquierda;
  este(0);
  fin
  sino si no junto-a-zumbador entonces inicio
  media-vuelta; avanza;
  fin;
  fin;

  mientras no orientado-al-sur hacer gira-izquierda;
   si frente-libre y orientado-al-sur entonces inicio
   avanza;
   si junto-a-zumbador entonces inicio
   media-vuelta; avanza; deja-zumbador;
   fin
   sino si no junto-a-zumbador entonces inicio
   media-vuelta; avanza;
   fin;
   fin;

  mientras no orientado-al-sur hacer gira-izquierda;
   si frente-libre y orientado-al-sur y derecha-libre entonces inicio
   avanza;
   gira-derecha;
   avanza;
   si junto-a-zumbador entonces inicio
   media-vuelta; avanza; gira-izquierda; avanza; deja-zumbador;
   fin sino inicio
   media-vuelta; avanza; gira-izquierda; avanza;
   fin;
   fin;

  mientras no orientado-al-sur hacer gira-izquierda;
   si frente-libre y orientado-al-sur y izquierda-libre  entonces inicio
   avanza;
   gira-izquierda;
   avanza;
   si junto-a-zumbador entonces inicio
   media-vuelta; avanza; gira-derecha; avanza; deja-zumbador;
   fin sino inicio
   media-vuelta; avanza; gira-derecha; avanza;
   fin;
   fin;

  mientras no orientado-al-norte hacer inicio
   gira-izquierda;
  fin;
  COGE-FINAL(0);
 fin;
  define-nueva-instruccion Uno(n) como
  inicio
  si orientado-al-sur y no junto-a-zumbador entonces
  inicio
  mientras no junto-a-zumbador y frente-libre hacer
  inicio
  avanza;
  fin;
  fin;

  mientras no orientado-al-norte hacer
  inicio
  gira-izquierda;
  fin;
  Conteo(0);
  fin;

   define-nueva-instruccion encuentra(n) como inicio
   repetir n veces
    si junto-a-zumbador y orientado-al-oeste entonces inicio
    coge-zumbador;
    fin
    sino
    si frente-libre y no junto-a-zumbador  entonces inicio
    avanza;  encuentra(n);
    fin;

    si no junto-a-zumbador entonces inicio
    repetir n veces deja-zumbador;
    si frente-libre  entonces inicio
    avanza;
    mientras junto-a-zumbador y orientado-al-oeste hacer inicio
    coge-zumbador;
    si no junto-a-zumbador y frente-libre entonces inicio
    avanza;
    fin sino
    si frente-bloqueado y no junto-a-zumbador entonces inicio
    media-vuelta;
    mientras no junto-a-zumbador y frente-libre hacer inicio
    avanza;
    fin;
     apagate;
   fin;
   fin;
   fin;
   fin;

   fin;


  define-nueva-instruccion compara(n) como inicio
   si junto-a-zumbador entonces inicio
    coge-zumbador;
    compara(sucede(n));
   fin
   sino inicio
   repetir n veces deja-zumbador;
   fin;

   si frente-libre entonces inicio
   avanza;
   fin sino
   si frente-bloqueado y  junto-a-zumbador  entonces inicio
    media-vuelta;
    mientras frente-libre hacer avanza; media-vuelta;
    encuentra(n);
    fin;


   repetir n veces
   si junto-a-zumbador entonces inicio
   coge-zumbador;
   fin sino
   si no junto-a-zumbador entonces inicio
   repetir n veces deja-zumbador;
   compara(0);
   fin;

   si junto-a-zumbador entonces inicio
   repetir n veces deja-zumbador;
   compara(0);
   fin;
   si no junto-a-zumbador entonces inicio
   repetir n veces deja-zumbador;
   compara(0);
   fin;
   fin;
    inicia-ejecucion
    mientras no orientado-al-este hacer gira-izquierda;
    avanza;
    si frente-bloqueado entonces inicio
    apagate;
    fin sino si frente-libre entonces inicio
    media-vuelta; avanza; media-vuelta;
    fin;
     gira-derecha;
      uno(0);
      media-vuelta;
      compara(0);
         apagate;
    termina-ejecucion
finalizar-programa
