iniciar-programa
     define-nueva-instruccion avanzar(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 recoge(n) como inicio
       repetir n veces
       coge-zumbador;
       fin;

       define-nueva-instruccion caminar como inicio
        mientras junto-a-zumbador y orientado-al-norte  hacer inicio
       coge-zumbador;
        fin;

       mientras frente-libre y orientado-al-norte o orientado-al-sur  y frente-libre hacer inicio
       avanza;
       mientras junto-a-zumbador y orientado-al-norte  hacer inicio
       coge-zumbador;
        fin;

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

         fin;

        si  frente-bloqueado y orientado-al-sur   y izquierda-libre entonces  inicio
        gira-izquierda;
        avanzar(1);
        si no-junto-a-zumbador entonces inicio
        gira-izquierda;
        avanza;
        fin
        sino si junto-a-zumbador y frente-libre entonces inicio
         avanza;

         gira-izquierda;
         fin;
        mientras junto-a-zumbador y orientado-al-norte  hacer inicio
        coge-zumbador;




          fin;
         fin;
         fin;
         fin;


            define-nueva-instruccion deja como inicio
           deja-zumbador;
             mientras frente-bloqueado y orientado-al-oeste y algun-zumbador-en-la-mochila   hacer inicio
          deja;
          apagate;
          fin;
           fin;


             define-nueva-instruccion deja-recoge como inicio
          mientras frente-bloqueado y orientado-al-oeste y algun-zumbador-en-la-mochila y junto-a-zumbador  hacer inicio
          deja-zumbador;
           si ningun-zumbador-en-la-mochila y orientado-al-oeste  y junto-a-zumbador entonces inicio
           recoge(1);
           apagate;
           fin;
          fin;
           fin;


             define-nueva-instruccion  deposita como inicio
            si frente-bloqueado y orientado-al-sur y izquierda-bloqueada entonces inicio
           gira-derecha;
           fin;
           mientras frente-libre y orientado-al-oeste hacer inicio
           avanza;
            fin;
            si frente-bloqueado y junto-a-zumbador y orientado-al-oeste entonces inicio
             gira-derecha;
             avanza;
             gira-izquierda;
             avanza;
             gira-izquierda;
             avanza;
             gira-derecha;
             fin;
             fin;


            define-nueva-instruccion escalar como inicio
             si junto-a-zumbador y frente-bloqueado y orientado-al-este entonces inicio
              gira-izquierda;
               avanza;
               gira-derecha;
               avanza;
               gira-izquierda;
               caminar;
               fin;
               fin;






    inicia-ejecucion

            mientras no orientado-al-norte hacer inicio
            gira-izquierda;
            fin;

          si no-junto-a-zumbador y orientado-al-norte  entonces inicio

          caminar;
          fin

          sino si junto-a-zumbador entonces inicio
           gira-derecha;
           avanza;
           gira-izquierda;
           caminar;
           fin;

                si frente-bloqueado y orientado-al-norte entonces inicio
                gira-derecha;
                avanza;
                gira-izquierda;
                avanza;
                gira-izquierda;
                avanza;
                gira-derecha;
                caminar;
                fin;




            si frente-bloqueado y orientado-al-sur y izquierda-bloqueada entonces inicio
          media-vuelta;
          avanza;
          gira-derecha;
          avanza;
          gira-derecha;
          avanza;
          media-vuelta;
          avanza;
          caminar;
          fin;


          si no-junto-a-zumbador entonces inicio

          caminar;
          fin

          sino si junto-a-zumbador y frente-libre  entonces inicio
           gira-derecha;
           avanza;
           gira-izquierda;
           caminar;
            fin;

           inicio
           deposita;
           fin;


            mientras frente-libre y orientado-al-oeste hacer inicio
              avanza;
              mientras frente-bloqueado y algun-zumbador-en-la-mochila hacer inicio
              deja-zumbador;
              si ningun-zumbador-en-la-mochila entonces inicio
              apagate;
              fin;
              fin;

              fin;


                si junto-a-zumbador y frente-bloqueado y orientado-al-este entonces inicio
                  escalar;
                  fin;
                    inicio
           deposita;
           fin;

              mientras frente-libre y orientado-al-oeste hacer inicio
              avanza;
              mientras frente-bloqueado y algun-zumbador-en-la-mochila hacer inicio
              deja-zumbador;
              si ningun-zumbador-en-la-mochila entonces inicio
              apagate;
              fin;
              fin;

              fin;


        apagate;
    termina-ejecucion
finalizar-programa
