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



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



define-nueva-instruccion postes (k) como inicio
 si no-junto-a-zumbador o no-orientado-al-sur entonces inicio
  deja-zumbador;

    repetir k veces inicio
     si izquierda-bloqueada entonces inicio
      avanza;
       fin
       sino inicio
      gira-izquierda;
     avanza;
    fin;
   fin;
  postes (k);
 deja-zumbador;

 fin
  sino inicio
   avanza;
    gira-izquierda;
   avanza;
  deja-zumbador;
 fin;

fin;



define-nueva-instruccion dist (k) como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
   dist (sucede(k));
    fin
     sino inicio
     avanza;
     gira (3);
    deja-zumbador;
   repetir k veces avanza;
  postes (k);
 fin;
fin;




define-nueva-instruccion perimetro como inicio
 si no-junto-a-zumbador o no-orientado-al-sur entonces inicio
  si izquierda-bloqueada entonces inicio
   avanza;
    fin
     sino inicio
      gira-izquierda;
      avanza;
       fin;
       perimetro;
       deja-zumbador;
       fin
      sino inicio
     coge-zumbador;
    avanza;
   gira-izquierda;
  repetir 2 veces avanza;
 fin;
fin;




    inicia-ejecucion

    mientras no-orientado-al-norte hacer gira-izquierda;
    avanza;
    gira (3);
    avanza;
    deja-zumbador;
    avanza;
    perimetro;
    deja-zumbador;

    gira (2);
    repetir 2 veces avanza;
    gira (3);
    dist (0);

    vallas (0);


        apagate;
    termina-ejecucion
finalizar-programa
