iniciar-programa

        define-nueva-instruccion este como inicio
            mientras no-orientado-al-este hacer inicio
                gira-izquierda;
            fin;
        fin;

        define-nueva-instruccion oeste como inicio
            mientras no-orientado-al-oeste hacer inicio
                gira-izquierda;
            fin;
        fin;

        define-nueva-instruccion norte como inicio
            mientras no-orientado-al-norte hacer inicio
                gira-izquierda;
            fin;
        fin;

        define-nueva-instruccion sur como inicio
            mientras no-orientado-al-sur hacer inicio
                gira-izquierda;
            fin;
        fin;

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

        define-nueva-instruccion tomar como inicio
                este;
                camina(4);
            repetir 500 veces inicio
                coge-zumbador;
            fin;
               oeste;
               mientras frente-libre hacer inicio
                   avanza;
               fin;
                   norte;
         fin;


         define-nueva-instruccion saca-area(n) como inicio
            si izquierda-bloqueada entonces inicio
                     deja-zumbador;
                 si frente-libre entonces inicio
                     avanza;
                 fin;
                     saca-area(sucede(n));
                     repetir 2 veces inicio
                         deja-zumbador;
                     fin;
             fin sino inicio
                 oeste;
                 mientras frente-libre hacer inicio
                     avanza;
                 fin;
             fin;

         fin;

         define-nueva-instruccion saca-area-segundo(n) como inicio
            si izquierda-bloqueada entonces inicio
                     deja-zumbador;
                 si frente-libre entonces inicio
                     avanza;
                 fin;
                     saca-area-segundo(sucede(n));
                     repetir 3 veces inicio
                         deja-zumbador;
                     fin;
             fin sino inicio
                 oeste;
                 mientras frente-libre hacer inicio
                     avanza;
                 fin;
             fin;

         fin;
   define-nueva-instruccion areas como inicio
        este;
        mientras izquierda-libre hacer inicio
         si frente-libre entonces inicio
           avanza;
         fin;
       fin;

        saca-area(0);
        norte;
        camina(3);
           este;
        mientras izquierda-libre hacer inicio
         si frente-libre entonces inicio
           avanza;
         fin;
       fin;
        saca-area-segundo(0);
       sur;
     fin;




           define-nueva-instruccion toma como inicio
               si junto-a-zumbador entonces inicio
                   coge-zumbador;
                   toma;
                   deja-zumbador;
               fin sino inicio
                   sur;
                   avanza;
                   mientras junto-a-zumbador hacer inicio
                       coge-zumbador;
                   fin;
               fin;
            fin;


          define-nueva-instruccion ctrl-z como inicio
                mientras junto-a-zumbador hacer inicio
                    coge-zumbador;
                fin;
                este;
                mientras izquierda-libre hacer inicio
                 si frente-libre entonces inicio
                   avanza;
                 fin;
                fin;
                    saca-area(0);
                    toma;
            fin;


           define-nueva-instruccion si-es-menor(n) como inicio
              si junto-a-zumbador entonces inicio
                      coge-zumbador;
                  fin sino inicio
                      mientras frente-libre hacer inicio
                          avanza;
                   fin;
                repetir n veces inicio
                   deja-zumbador;
                fin;
              fin;

           fin;


           define-nueva-instruccion compara(n) como inicio
              si junto-a-zumbador entonces inicio
                  coge-zumbador;
                  compara(sucede(n));
              fin sino inicio
                  camina(3);
                repetir n veces inicio
                si frente-libre entonces inicio
                 si-es-menor(n);
                fin;
                fin;

                si junto-a-zumbador entonces inicio
                     norte;
                     avanza;
                   si junto-a-zumbador entonces inicio
                       ctrl-z;
                   fin;

                 fin;

               fin;
           fin;

    inicia-ejecucion
        tomar;
        avanza;
        areas;
        compara(0);

        sur;
      si frente-libre entonces inicio
        avanza;
      si frente-libre entonces inicio
      si junto-a-zumbador entonces inicio
          ctrl-z;
      fin;
      fin;
       fin;


        apagate;
    termina-ejecucion
finalizar-programa
