iniciar-programa
define-nueva-instruccion media-vuelta como inicio
repetir 2 veces gira-izquierda;
fin;
define-nueva-instruccion sigue como inicio
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanzA;
gira-izquierda;
avanzA;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanzA;
avanzA;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanzA;
gira-izquierdA;
avanzA;
fin;
fin;
fin;
si junto-a-zumbador entonces sigue;
fin;

define-nueva-instruccion regresa como inicio
si frente-libre entonces inicio
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanzA;
gira-izquierda;
avanzA;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanzA;
avanzA;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanzA;
repetir 3 veces gira-izquierdA;
avanzA;
si no junto-a-zumbador entonces inicio
mientras no orientado-al-sur hacer gira-izquierda;
mientras frente-libre hacer avanzA;
 fin;
fin;
fin;
fin;
fin;
mientras no orientado-al-sur hacer gira-izquierda;
fin;

define-nueva-instruccion tipo (n) como inicio
mientras no orientado-al-sur hacer gira-izquierDA;
si junto-a-zumbador entonces inicio
coge-zumbador;
media-vuelta;
si junto-a-zumbador entonces inicio
coge-zumbador;
media-vuelta;
tipo (sucede(n));
fin;
fin
sino inicio
si orientado-al-sur entonces inicio
repetir n veces deja-zumbador;
repetir n veces deja-zumbador;
mientras no orientado-al-oeste hacer gira-izquierdA;


fin;
fin;
si orientado-al-norte entonces inicio
repetir n veces deja-zumbador;
repetir n veces deja-zumbador;
      deja-zumbador;

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

fin;
  fin;




 define-nueva-instruccion come(n) como inicio
 si junto-a-zumbador entonces inicio
 si junto-a-zumbador y orientado-al-este entonces inicio
 coge-zumbador;
 come (1);
 fin
 sino inicio
 si junto-a-zumbador y orientado-al-oeste entonces inicio
 coge-zumbador;
 come (0);
 fin
 sino inicio
 tipo (0);
 come (2);

 fin;
 fin;
 fin
 sino inicio
 mientras no orientado-al-sur hacer gira-izquierdA;
 regresa;
 si frente-libre entonces inicio
 come (2);

 fin;


  fin;
  SI SI-ES-CERO(N) ENTONCES INICIO
mientras no orientado-al-este hacer gira-izquierdA;
mientras frente-libre hacer avanza;
mientras no orientado-al-sur hacer gira-izquierdA;
mientras frente-libre hacer avanza;
deja-zumbador;
fin
sino inicio
si si-es-cero (precede(n)) entonces inicio
mientras no orientado-al-este hacer gira-izquierdA;
mientras frente-libre hacer avanzA;
mientras no orientado-al-norte hacer gira-izquierda;
mientras frente-libre hacer avanza;
deja-zumbador;
fin;
fin;
fin;

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

 inicia-ejecucion
 mientras no orientado-al-norte hacer gira-izquierdA;
       sigue;
       media-vuelta;
       avanzA;
        mientras no orientado-al-sur hacer gira-izquierDA; 
        come (2);

        mientras no orientado-al-sur hacer gira-izquierdA;
        mientras frente-libre hacer avanza;
        mientras no orientado-al-norte hacer gira-izquierda;
        resta(0);
       apagate;
    termina-ejecucion
finalizar-programa
