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


define-nueva-instruccion faltan (n) como inicio
 mientras no-orientado-al-norte hacer gira-izquierda;

 mientras no-junto-a-zumbador hacer inicio
   mientras frente-bloqueado hacer gira-izquierda;
    avanza;
     si no junto-a-zumbador entonces inicio
      gira (2);
      avanza;
     gira (3);

    si orientado-al-norte entonces inicio
     si no si-es-cero (n) entonces inicio
     repetir n veces deja-zumbador;
     apagate;
     fin
     sino inicio
     gira (3);
     avanza;
     repetir 5 veces deja-zumbador;
     apagate;
     fin;
     fin;

    fin;

  fin;

  si junto-a-zumbador entonces coge-zumbador;

  si junto-a-zumbador entonces inicio
   mientras junto-a-zumbador hacer coge-zumbador;
   faltan (sucede(n));
  fin;
  faltan (n);
fin;


               (*------------------------------------*)
define-nueva-instruccion camino (k) como inicio
si si-es-cero (k) entonces faltan (0);

 si junto-a-zumbador entonces coge-zumbador;
   si junto-a-zumbador entonces inicio
    mientras junto-a-zumbador hacer coge-zumbador;
  camino (precede(k));
 fin;

 mientras no-orientado-al-norte hacer gira-izquierda;
  mientras no-junto-a-zumbador hacer inicio
   mientras frente-bloqueado hacer gira-izquierda;
    avanza;
     si no junto-a-zumbador entonces inicio
      gira (2);
       avanza;
        gira (3);
        si orientado-al-norte entonces inicio
        gira (3);                                      
       avanza;
      repetir 5 veces deja-zumbador;
     apagate;
    fin;
   fin;
  fin;
  camino (k);
 fin;



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


    inicia-ejecucion

    lugar (0);



        apagate;
    termina-ejecucion
finalizar-programa
