iniciar-programa
define-nueva-instruccion media-vuelta como inicio
  gira-izquierda;
  gira-izquierda;
fin;
 define-nueva-instruccion fac(n) como inicio
   si junto-a-zumbador entonces inicio
     coge-zumbador;
     fac(n);
     repetir n veces inicio
       deja-zumbador;
     fin;
   fin;
 fin;
 define-nueva-instruccion vec(a) como inicio
   si junto-a-zumbador entonces inicio
     coge-zumbador;
     vec(precede(a));
     si frente-libre entonces inicio
       media-vuelta;
       mientras frente-libre hacer inicio
         avanza;
       fin;
       repetir a veces inicio
         deja-zumbador;
       fin;
     fin
     sino inicio
       fac(a);
     fin;
   fin;
 fin;
 define-nueva-instruccion resta(x) como inicio
  si orientado-al-norte entonces inicio
    si junto-a-zumbador y orientado-al-norte entonces inicio
     coge-zumbador;
     resta(sucede(x));
      vec(sucede(x));
      apagate;
    fin;
    si no-junto-a-zumbador y orientado-al-norte entonces inicio
     repetir x veces inicio
       deja-zumbador;
     fin;
     media-vuelta;
     avanza;
    fin;
  fin;
  si orientado-al-sur entonces inicio
    si junto-a-zumbador entonces inicio
      coge-zumbador;
      resta(x);
      si orientado-al-sur entonces inicio
        media-vuelta;
        avanza;
      fin;
      coge-zumbador;
    fin;
  fin;
fin;
    inicia-ejecucion
       avanza;
       avanza;
       resta(0);
        apagate;
    termina-ejecucion
finalizar-programa
