iniciar-programa
define-nueva-instruccion v(n) como
repetir n veces
gira-izquierda;

define-nueva-instruccion regresa como

     si izquierda-libre entonces
     inicio
     v(1);
     avanza;
     v(1);
     mientras orientado-al-sur y frente-libre hacer
     avanza;
     si frente-bloqueado y orientado-al-este y no-junto-a-zumbador entonces
     apagate;
     si frente-bloqueado y orientado-al-sur entonces
     v(3);
     mientras orientado-al-oeste y frente-libre hacer
     avanza;
     si orientado-al-oeste y frente-bloqueado entonces
     v(2);


     fin;




                define-nueva-instruccion salta como
            si orientado-al-este y frente-bloqueado entonces
            inicio
              v(1);
             mientras derecha-bloqueada hacer
             avanza;
             si orientado-al-norte y derecha-libre entonces
             inicio
             v(3);
             avanza;
             v(3);
             mientras frente-libre hacer
             avanza;
             fin;
            si frente-bloqueado y no-junto-a-zumbador entonces
            inicio
            mientras algun-zumbador-en-la-mochila hacer
            deja-zumbador;
            v(2);
            mientras izquierda-bloqueada hacer
            avanza;
            fin
            sino
            inicio
            v(1);
            mientras junto-a-zumbador hacer
            avanza;
            si no-junto-a-zumbador entonces
            inicio
              mientras algun-zumbador-en-la-mochila hacer
            deja-zumbador;

            fin;
            v(1);
            avanza;
            v(1);
            mientras frente-libre hacer
            avanza;
            si frente-bloqueado entonces
            v(3);
            mientras izquierda-bloqueada hacer
            avanza;
            fin;
            si frente-bloqueado y orientado-al-este y no-junto-a-zumbador entonces
                 apagate;
           regresa;
          fin;

      define-nueva-instruccion pasa como
               mientras derecha-bloqueada hacer
   inicio

              si junto-a-zumbador entonces
              inicio
              mientras junto-a-zumbador hacer
              coge-zumbador;
              v(1);
              avanza;
              v(3);
              mientras frente-libre hacer
              avanza;
              fin;
               salta;
                 avanza;

     si frente-bloqueado y orientado-al-este y no-junto-a-zumbador entonces
                 apagate;


   fin;


    inicia-ejecucion
           mientras no-orientado-al-este hacer
        v(1);

       mientras no-junto-a-zumbador   hacer
       pasa;


















        apagate;
    termina-ejecucion
finalizar-programa
