iniciar-programa
       define-nueva-instruccion camina(n) como inicio
   repetir n veces
   avanza;
   fin;


  define-nueva-instruccion gira-derecha como inicio
    gira-izquierda;
    gira-izquierda;
    gira-izquierda;
     fin;

    define-nueva-instruccion media-vuelta como inicio
 gira-izquierda;
 gira-izquierda;

 fin;
           define-nueva-instruccion avanzarsur como inicio
              mientras frente-libre y orientado-al-sur hacer inicio
                avanza;
                si frente-bloqueado y orientado-al-sur y izquierda-libre entonces inicio
                 gira-izquierda;
                 si frente-libre entonces
                 avanza;

                 gira-izquierda;
                 fin;
                 fin;

                fin;


             define-nueva-instruccion sellar como inicio

               si frente-libre y orientado-al-sur entonces inicio
                 avanza;
                  si no-junto-a-zumbador entonces
                 deja-zumbador;

              si junto-a-zumbador y orientado-al-sur entonces inicio
                 media-vuelta;
                 avanza;
               si derecha-libre y orientado-al-norte y frente-bloqueado entonces  inicio
                gira-derecha;
               fin
               sino si derecha-bloqueada y izquierda-bloqueada entonces inicio
                 media-vuelta;
                 fin;

                si frente-libre  y orientado-al-este entonces inicio
                 avanza;

               mientras frente-bloqueado o orientado-al-este hacer   inicio
                 gira-derecha;

                si frente-libre y orientado-al-sur entonces  inicio
                 avanza;
                 si no-junto-a-zumbador entonces
                 deja-zumbador;



                   si junto-a-zumbador y orientado-al-sur  entonces inicio
                 media-vuelta;
                 avanza;
               si derecha-libre y orientado-al-norte y frente-bloqueado entonces  inicio
                gira-derecha;
               fin
               sino si derecha-bloqueada y izquierda-bloqueada entonces inicio
                 media-vuelta;
                 fin;

                 si derecha-bloqueada y frente-bloqueado y orientado-al-norte  entonces inicio
                  media-vuelta;
                  fin;

                     si frente-libre  y orientado-al-este entonces inicio
                 avanza;

                 fin;


                        fin;
                       fin;
                       fin;
                        fin;
                       fin;
                       fin;
                       avanzarsur;
                       fin;







         define-nueva-instruccion ir como inicio
          mientras frente-libre y orientado-al-norte hacer inicio
         avanza;

          si frente-bloqueado y orientado-al-norte y derecha-libre o izquierda-libre y frente-bloqueado entonces inicio
          gira-derecha;
          fin
          sino si frente-bloqueado y orientado-al-norte y derecha-bloqueada y izquierda-bloqueada entonces inicio
           media-vuelta;
          si frente-libre y no-junto-a-zumbador y orientado-al-sur entonces inicio
          avanzarsur;
           fin;
            fin;
             fin;
             fin;


           define-nueva-instruccion recoger como inicio
            mientras frente-libre y orientado-al-este y no-junto-a-zumbador  hacer inicio
             avanza;
           fin;
           fin;




             define-nueva-instruccion recorrer como inicio
               si frente-bloqueado y orientado-al-este entonces inicio
               gira-derecha;
                avanzarsur;
                 fin;
                 fin;

              define-nueva-instruccion clausurar como inicio

                si orientado-al-este y junto-a-zumbador entonces inicio
               media-vuelta;
               fin;
                si orientado-al-sur y derecha-bloqueada y izquierda-bloqueada y junto-a-zumbador entonces inicio
                 gira-derecha;
                 fin;
              mientras orientado-al-oeste  y frente-libre hacer inicio
               avanza;
               fin;
               si frente-bloqueado y orientado-al-oeste entonces inicio
               media-vuelta;
                fin;


               si junto-a-zumbador o no-junto-a-zumbador entonces  inicio
         gira-derecha;

              fin;
              sellar;
               fin;


    inicia-ejecucion
             mientras orientado-al-norte y no-junto-a-zumbador  hacer inicio
             ir;

              si junto-a-zumbador entonces  inicio
             clausurar;
             avanzarsur;
            fin;


             mientras orientado-al-este y no-junto-a-zumbador  hacer inicio
             recoger;


              si junto-a-zumbador entonces  inicio
             clausurar;
             avanzarsur;
            fin;


             mientras frente-bloqueado y orientado-al-este  y no-junto-a-zumbador hacer inicio
             recorrer;


              si junto-a-zumbador entonces  inicio
             clausurar;
             avanzarsur;
            fin;



            fin;
            fin;
            fin;




        apagate;
    termina-ejecucion
finalizar-programa
