iniciar-programa
define-nueva-instruccion busca como
    inicio
    si junto-a-zumbador entonces
       coge-zumbador;

       repetir 4 veces
       inicio
         si frente-libre  entonces
          inicio
              avanza;
             si junto-a-zumbador entonces
                 inicio
                   coge-zumbador;
                 si junto-a-zumbador entonces
                    busca
                  sino
                    deja-zumbador;
                 fin;
             repetir 2 veces gira-izquierda;
             si frente-libre entonces avanza;
             repetir 2 veces gira-izquierda;

          fin;
           gira-izquierda;

       fin;

    fin;
 define-nueva-instruccion arriba  como
   inicio
      mientras no-orientado-al-norte hacer
       gira-izquierda;
       mientras frente-libre hacer
        avanza;
       repetir 3 veces
         gira-izquierda;
        mientras frente-libre hacer
         avanza;
        repetir 2 veces gira-izquierda;
    fin;
    define-nueva-instruccion recorre (n) como
    inicio
      mientras frente-libre o izquierda-libre hacer
       inicio
         mientras frente-libre  hacer
         inicio
           si junto-a-zumbador entonces
            inicio
             coge-zumbador;
               si junto-a-zumbador entonces
                 deja-zumbador
                sino
                  inicio
                   deja-zumbador;
                   repetir 2 veces si algun-zumbador-en-la-mochila entonces
                      deja-zumbador;

                 fin;
              fin;
            si frente-libre entonces avanza;
          fin;
            si junto-a-zumbador entonces
            inicio
             coge-zumbador;
               si junto-a-zumbador entonces
                 deja-zumbador
                sino
                  inicio
                   deja-zumbador;
                    repetir 2 veces si algun-zumbador-en-la-mochila entonces
                      deja-zumbador;

                 fin;
              fin;

       si izquierda-libre entonces
        inicio
         gira-izquierda;
          si frente-libre entonces avanza;
         gira-izquierda;
         mientras frente-libre hacer
          avanza;
          repetir 2 veces gira-izquierda;
         fin;
      fin;
        si junto-a-zumbador entonces
            inicio
             coge-zumbador;
               si junto-a-zumbador entonces
                 deja-zumbador
                sino
                  inicio
                   deja-zumbador;
                    repetir 2 veces si algun-zumbador-en-la-mochila entonces
                      deja-zumbador;

                 fin;
              fin;



    fin;
    define-nueva-instruccion medio(n) como
      inicio
         si junto-a-zumbador entonces
            inicio
              coge-zumbador;
              medio(sucede(n));
            fin;
             mientras no-orientado-al-norte hacer
               gira-izquierda;
           repetir n veces
             inicio
               si orientado-al-norte entonces
                  si algun-zumbador-en-la-mochila entonces
                    deja-zumbador;
                  repetir 2 veces gira-izquierda;
               fin;
              apagate; 




      fin;
   define-nueva-instruccion ul(n) como
     inicio
        si junto-a-zumbador entonces
          inicio
           coge-zumbador;
           ul(sucede(n));

          fin;
          mientras algun-zumbador-en-la-mochila hacer
             deja-zumbador;

            repetir n veces coge-zumbador;
            medio(0);


     fin;


    inicia-ejecucion
   si junto-a-zumbador entonces coge-zumbador;
     busca;
    arriba;
    recorre(0);
     si junto-a-zumbador entonces
        ul(0)
       sino
         inicio
          mientras algun-zumbador-en-la-mochila hacer
           deja-zumbador;
             medio(0);
          fin;

        apagate;
    termina-ejecucion
finalizar-programa
