iniciar-programa
  define-nueva-instruccion este como mientras no-orientado-al-este hacer gira-izquierda;
  define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gira-izquierda;
  define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gira-izquierda;
  define-nueva-instruccion sur como mientras no-orientado-al-sur hacer gira-izquierda;

 define-nueva-instruccion frente-bloq como
     inicio
      si frente-bloqueado y  junto-a-zumbador y orientado-al-este entonces
              inicio
                 mientras junto-a-zumbador hacer coge-zumbador;
              fin sino
                  inicio
                      oeste;
                      mientras no junto-a-zumbador hacer avanza;
                      oeste;
                      si frente-libre entonces avanza;
                      mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                      apagate;
                  fin;

     fin;





 define-nueva-instruccion espera como
      inicio
          este;
          mientras no-junto-a-zumbador y frente-libre hacer avanza;
          si frente-bloqueado y orientado-al-este y no junto-a-zumbador entonces
              inicio
                  apagate;
              fin sino
                  inicio
                    si frente-bloqueado y orientado-al-este y junto-a-zumbador entonces frente-bloq;
                  fin;
          mientras junto-a-zumbador hacer coge-zumbador;
           oeste;
          mientras frente-libre hacer avanza;
          este;
          si no junto-a-zumbador entonces
              inicio
                  mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                  si frente-libre entonces avanza;
              fin sino
                  inicio
                      mientras junto-a-zumbador y frente-libre hacer avanza;
                      mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                      si frente-libre entonces avanza;
                      si frente-bloqueado  y junto-a-zumbador entonces apagate;
                  fin;
          espera;


      fin;


  define-nueva-instruccion ir como
      inicio
          si junto-a-zumbador entonces
              inicio
                  coge-zumbador;
                  norte;
                  si frente-libre entonces avanza;
                  si algun-zumbador-en-la-mochila entonces
                      inicio
                         si algun-zumbador-en-la-mochila entonces repetir 2 veces deja-zumbador;

                      fin sino
                          inicio
                              sur;
                               si frente-libre entonces avanza;
                               oeste;
                               mientras frente-libre hacer avanza;
                          fin;
                   sur;
                   si ningun-zumbador-en-la-mochila y orientado-al-sur entonces
                       inicio
                           si frente-libre entonces avanza;
                         
                           oeste;
                           mientras frente-libre hacer avanza;
                           este;
                           espera;
                           apagate;
                       fin;
                   si frente-libre entonces avanza;
                   este;
                   ir;
                   ir;
              fin sino
                  inicio
                      si frente-libre entonces avanza;
                      si ningun-zumbador-en-la-mochila entonces
                          inicio
                              oeste;
                              mientras frente-libre hacer avanza;
                              espera;
                          fin;
                  fin;
      fin;


   inicia-ejecucion
   este;
   si ningun-zumbador-en-la-mochila entonces
       inicio
           apagate;
       fin;
   ir;
        apagate;
    termina-ejecucion
finalizar-programa

