iniciar-programa
define-nueva-instruccion sur como inicio
mientras no-orientado-al-sur hacer gira-izquierda; fin;

define-nueva-instruccion este como inicio
mientras no-orientado-al-este hacer gira-izquierda; fin;

define-nueva-instruccion norte como inicio
mientras no-orientado-al-norte hacer gira-izquierda; fin;

define-nueva-instruccion oeste como inicio
mientras no-orientado-al-oeste hacer gira-izquierda; fin;
define-nueva-instruccion basico como  inicio
si frente-bloqueado y derecha-bloqueada entonces apagate; fin;

define-nueva-instruccion dejar como inicio    mientras algun-zumbador-en-la-mochila hacer deja-zumbador; fin;

define-nueva-instruccion arriba como inicio
dejar;
si orientado-al-este entonces
inicio
   oeste;
   si frente-libre entonces avanza;
   norte;
fin sino inicio

si orientado-al-norte entonces
inicio
    sur;
    si frente-libre entonces avanza;
fin;
fin;
fin;

 define-nueva-instruccion siguiente(b) como inicio

 si junto-a-zumbador entonces
 inicio
    repetir b veces
    inicio
     si junto-a-zumbador entonces
        inicio
        coge-zumbador;

        fin
        sino
        inicio

          arriba;
        fin;
    fin;
fin
sino inicio
    si orientado-al-este entonces  inicio repetir 2 veces gira-izquierda; si frente-libre entonces avanza; norte; fin sino inicio
     si orientado-al-norte entonces inicio repetir 2 veces gira-izquierda;  si frente-libre entonces  avanza;  fin; fin;

fin;


fin;




 define-nueva-instruccion caminar-este(a) como inicio
  si junto-a-zumbador entonces
  inicio
      coge-zumbador;
      caminar-este(sucede(a));
  fin
  sino
  inicio
     dejar;
     si frente-libre entonces avanza;

     siguiente(a);
  fin;
 fin;

  inicia-ejecucion
si junto-a-zumbador entonces inicio
basico;
 este;
 mientras orientado-al-este hacer inicio
  caminar-este(0);
  dejar;
 fin;

 mientras orientado-al-norte hacer inicio
  caminar-este(0);
  dejar;
 fin;

 fin;
     apagate;
    termina-ejecucion
finalizar-programa
