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


define-nueva-instruccion checa(n) como inicio
si si-es-cero(n) y no junto-a-zumbador entonces inicio

 repetir 100 veces deja-zumbador;
 apagate;
fin;
si no si-es-cero(n) y no junto-a-zumbador entonces sal-de-instruccion;
 si junto-a-zumbador entonces inicio
 coge-zumbador;
 checa(precede(n));

 fin;
 deja-zumbador;


FIN;
define-nueva-instruccion vuelve como inicio
 gira(2);
 mientras frente-libre hacer avanza;
 gira(1);
 si frente-libre entonces  inicio
 avanza;
 gira(1);
 fin;
FIN;
define-nueva-instruccion orienta como inicio
   mientras no orientado-al-oeste hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    gira(1);
    mientras frente-libre hacer avanza;
    gira(2);



fin;
 define-nueva-instruccion casa(n) como inicio

 si junto-a-zumbador entonces inicio
  checa(n);
 mientras frente-libre hacer   inicio
 avanza ;
 checa(n);
  fin;
 fin;

 si frente-bloqueado y orientado-al-norte entonces vuelve;
 si frente-libre  entonces checa(n);
   si frente-bloqueado entonces inicio
     vuelve;
     casa(sucede(n));

   fin;
  mientras frente-libre hacer  inicio
  checa(n);
  si frente-libre entonces avanza;
  si frente-bloqueado y orientado-al-norte entonces  inicio
  checa(n);
  vuelve;
  fin ;
  si frente-bloqueado y orientado-al-este entonces inicio
    orienta;
   casa(sucede(n));
  fin;
   si frente-bloqueado y orientado-al-norte entonces vuelve;
    FIN;

      fin;
    inicia-ejecucion
     orienta;
     casa(1);
        apagate;

    termina-ejecucion
finalizar-programa
