iniciar-programa

    define-nueva-instruccion camina como inicio
    mientras junto-a-zumbador hacer inicio
      mientras no-orientado-al-norte hacer gira-izquierda;
  si frente-libre entonces avanza;
  mientras no-orientado-al-este hacer gira-izquierda;
  si frente-libre entonces avanza;
  fin;
         fin;
 define-nueva-instruccion crea como inicio
  mientras junto-a-zumbador hacer inicio
  mientras junto-a-zumbador hacer coge-zumbador;
  mientras frente-libre hacer avanza;
  mientras no-orientado-al-norte hacer gira-izquierda;
  si frente-libre entonces avanza;
  mientras no-orientado-al-este hacer gira-izquierda;
  si frente-libre entonces avanza;
  si junto-a-zumbador entonces camina;
  mientras algun-zumbador-en-la-mochila hacer inicio
  deja-zumbador;
  si frente-libre entonces avanza;
  fin;
  mientras frente-libre hacer avanza;
  mientras no-orientado-al-sur hacer gira-izquierda;
  mientras frente-libre hacer avanza;
  mientras no-orientado-al-oeste hacer gira-izquierda;
  mientras frente-libre y junto-a-zumbador hacer avanza;
  gira-izquierda;
  gira-izquierda;
  si frente-libre entonces avanza;
  mientras no-orientado-al-oeste hacer gira-izquierda;
  fin;
  fin;







 define-nueva-instruccion pon(n) como inicio
 si frente-libre entonces avanza;
 repetir n veces inicio
  si algun-zumbador-en-la-mochila entonces deja-zumbador;
  fin;
  fin;
  define-nueva-instruccion  ve(n) como inicio
  si junto-a-zumbador entonces inicio
  coge-zumbador;
  ve(sucede(n));
  fin
  sino inicio
    repetir n veces inicio
  si algun-zumbador-en-la-mochila entonces deja-zumbador;
  fin;
  pon(sucede(sucede(n)));
  fin;
      fin;

define-nueva-instruccion junta como inicio
mientras frente-libre hacer inicio
mientras frente-libre y no-junto-a-zumbador hacer avanza;
si junto-a-zumbador entonces coge-zumbador;
si frente-bloqueado y izquierda-libre entonces inicio
mientras no-orientado-al-norte hacer gira-izquierda;
si frente-libre entonces avanza;
mientras no-orientado-al-oeste  hacer gira-izquierda;
mientras frente-libre hacer avanza;
mientras no-orientado-al-este hacer gira-izquierda;
           fin;
           fin;
           fin;
    inicia-ejecucion
    mientras no-orientado-al-este hacer gira-izquierda;
    junta;
    mientras no-orientado-al-sur hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-oeste hacer gira-izquierda;
    si algun-zumbador-en-la-mochila entonces deja-zumbador;
 mientras algun-zumbador-en-la-mochila  hacer ve(0);
     mientras junto-a-zumbador hacer coge-zumbador;
     mientras frente-libre hacer avanza;
     mientras no-orientado-al-este hacer gira-izquierda;
     mientras algun-zumbador-en-la-mochila hacer inicio
     deja-zumbador;
     si frente-libre entonces avanza;
      fin;
      mientras frente-libre y no-junto-a-zumbador hacer avanza;
      mientras no-orientado-al-oeste hacer gira-izquierda;
     mientras junto-a-zumbador hacer crea;
     mientras frente-libre hacer avanza;
        camina;

           mientras no-orientado-al-sur  hacer gira-izquierda;
  si frente-libre entonces avanza;
  mientras no-orientado-al-oeste hacer gira-izquierda;
  si frente-libre entonces avanza;
    mientras no orientado-al-norte hacer gira-izquierda;
        apagate;
    termina-ejecucion
finalizar-programa
