iniciar-programa
define-nueva-instruccion gira (r) como inicio
repetir r veces gira-izquierda;
fin;


define-nueva-instruccion une como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
   une;
    repetir 10 veces deja-zumbador;
    fin
   sino inicio
  avanza;
 fin;
fin;
(*-----------------------------------------*)

define-nueva-instruccion vuelve como inicio
 si izquierda-bloqueada o derecha-bloqueada entonces inicio
  mientras no-orientado-al-este hacer gira-izquierda;
   mientras frente-libre hacer avanza;
    gira (3);
    mientras frente-libre hacer avanza;
    gira (2);
    si frente-libre entonces avanza;
   gira-izquierda;

 fin;
fin;



define-nueva-instruccion bloqueado2 como inicio
 si frente-bloqueado y izquierda-libre entonces inicio
  gira-izquierda;
   avanza;
   gira-izquierda;
  fin;
fin;



define-nueva-instruccion bloqueado como inicio
 si frente-bloqueado y derecha-libre entonces inicio
  gira (3);
   avanza;
   gira (3);
  fin;
fin;


define-nueva-instruccion lugar (k) como inicio
 si no si-es-cero (k) entonces inicio
   si frente-libre entonces inicio
    avanza;
     fin
     sino inicio
     si orientado-al-oeste entonces inicio
     bloqueado;
     si frente-bloqueado y derecha-bloqueada y orientado-al-oeste entonces vuelve;
     fin
     sino inicio
     bloqueado2;
     si frente-bloqueado y izquierda-bloqueada y orientado-al-este entonces vuelve;
     fin;
     fin;




    lugar (precede(k));
    fin;


fin;



define-nueva-instruccion boleto (k) como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
   boleto (sucede(k));
    fin
     sino inicio
     avanza;
     gira-izquierda;
    lugar (precede(k));
 fin;
fin;



    inicia-ejecucion

    mientras no-orientado-al-oeste hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    gira (2);
    repetir 100 veces coge-zumbador;
    mientras frente-libre hacer avanza;
    gira (2);
    avanza;
    gira (2);
    une;
    gira-izquierda;

    boleto (0);



        apagate;
    termina-ejecucion
finalizar-programa
