iniciar-programa
define-nueva-instruccion regresa como
   inicio
       mientras no-orientado-al-oeste hacer
         gira-izquierda;
       mientras frente-libre hacer avanza;
       gira-izquierda;
       mientras frente-libre hacer avanza;
       gira-izquierda;
  fin;


   define-nueva-instruccion recorre como
      inicio

        mientras frente-libre hacer
          inicio
              si junto-a-zumbador entonces coge-zumbador;
              si frente-libre entonces avanza;
           fin;
         si frente-bloqueado y izquierda-libre entonces
           inicio
               si junto-a-zumbador entonces coge-zumbador;
              repetir 2 veces gira-izquierda;
              mientras frente-libre hacer avanza;
              repetir 3 veces gira-izquierda;
              si frente-libre entonces avanza;
              repetir 3 veces gira-izquierda;

             recorre;
            fin;
            si frente-bloqueado y izquierda-bloqueada y no-orientado-al-norte entonces
              inicio
                si junto-a-zumbador entonces coge-zumbador;
                gira-izquierda;
              fin;



    fin;
  define-nueva-instruccion ultimo como
     inicio
        mientras algun-zumbador-en-la-mochila hacer
           inicio
              si algun-zumbador-en-la-mochila y no-junto-a-zumbador entonces
                deja-zumbador;
              si frente-libre entonces avanza;
            fin;
          apagate;


     fin;
    define-nueva-instruccion contando (n)  como
        inicio
          mientras frente-libre hacer
            inicio
              si junto-a-zumbador entonces
                inicio
                  coge-zumbador;
                    si junto-a-zumbador entonces
                       coge-zumbador;
                       si frente-libre entonces avanza;
                      contando(sucede(n));
                 fin;
                      si frente-libre entonces avanza;



             fin;
           si frente-bloqueado y izquierda-libre entonces
             inicio
                si junto-a-zumbador entonces
                  inicio
                    mientras junto-a-zumbador hacer coge-zumbador;
                    contando(sucede(n));
                   fin;

                repetir 2 veces gira-izquierda;
                mientras frente-libre hacer avanza;
                repetir 3 veces gira-izquierda;
                si frente-libre entonces avanza;
                repetir 3 veces gira-izquierda;
                contando(n);
              fin;
                si junto-a-zumbador entonces
                  inicio
                    mientras junto-a-zumbador hacer coge-zumbador;
                    contando(sucede(n));
                   fin;
               regresa;
               si frente-libre entonces
                 avanza;
               gira-izquierda;

               repetir n veces
                  inicio
                    repetir 2 veces
                       si algun-zumbador-en-la-mochila entonces
                          deja-zumbador;
                        si frente-libre entonces avanza;

                    fin;
                    regresa;
                    gira-izquierda;
                  ultimo;








           fin;


    inicia-ejecucion


          regresa;
          recorre;
          regresa;
          contando(0);










        apagate;
    termina-ejecucion
finalizar-programa
