iniciar-programa
 define-nueva-instruccion deja como
  inicio
   repetir 4 veces
     inicio
       si frente-libre entonces
         inicio
           avanza;
            deja-zumbador;
          gira-izquierda;
         si frente-libre entonces
           inicio
            avanza;
             deja-zumbador;
           repetir 2 veces gira-izquierda;
           avanza;
           gira-izquierda;
          fin
         sino
           repetir 3 veces gira-izquierda;
           repetir 2 veces gira-izquierda;
           si frente-libre entonces avanza;
           repetir 2 veces gira-izquierda;
        fin;
     gira-izquierda;
     fin;
   fin;

define-nueva-instruccion sigue como
 inicio

      si frente-bloqueado entonces
       inicio
         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;


        fin;

 fin;



define-nueva-instruccion recorre como
 inicio

     si no-junto-a-zumbador entonces
         inicio
         si frente-libre entonces
          inicio
           avanza;
           recorre;
            fin
          sino
           inicio
           si frente-bloqueado y izquierda-bloqueada entonces apagate;
          sigue;
          recorre;


          fin;
         fin;

        repetir 9 veces
          inicio
            si junto-a-zumbador y orientado-al-oeste entonces
              coge-zumbador
              sino
               inicio
                deja-zumbador;
                si orientado-al-oeste entonces repetir 3 veces gira-izquierda;
               fin;
           fin;
           si junto-a-zumbador y orientado-al-oeste entonces
               inicio
                  deja;
                  repetir 9 veces deja-zumbador;
                  si frente-bloqueado y izquierda-bloqueada entonces
                  apagate;
                 si frente-libre entonces
                   inicio
                     avanza;
                     recorre;
                   fin
                  sino
                  inicio
                   sigue;
                  si izquierda-libre entonces recorre
                    sino
                     inicio
                      recorre;
                      apagate;
                     fin;
                   fin;
               fin;

        mientras no orientado-al-oeste hacer gira-izquierda;
           si junto-a-zumbador entonces
            inicio
            repetir 9 veces
               inicio
                si junto-a-zumbador y orientado-al-oeste entonces
                 coge-zumbador
                  sino
                  inicio
                  deja-zumbador;
                   si orientado-al-oeste entonces repetir 3 veces gira-izquierda;
                fin;
              fin;
               mientras no orientado-al-oeste hacer gira-izquierda;
               si frente-bloqueado y izquierda-bloqueada entonces apagate;
               si frente-libre entonces
                inicio
                   avanza;
                   recorre;
                 fin
                sino
                 inicio
                   sigue;
                   si izquierda-libre entonces recorre
                  sino
                   inicio
                    recorre;
                    apagate;
                  fin;
                  fin;
             fin

         sino
          inicio

            deja;
            repetir 9 veces deja-zumbador;
            si frente-bloqueado y izquierda-bloqueada entonces
            apagate;
              si frente-libre entonces
                 inicio
                   avanza;
                   recorre;
                  fin
                sino
                 inicio
                   sigue;
                   si izquierda-libre entonces recorre
                  sino
                   inicio
                    recorre;
                   apagate;
                  fin;
                  fin;


            fin;





 fin;
define-nueva-instruccion arriba como
 inicio
   mientras no-orientado-al-este hacer gira-izquierda;
   repetir 2 veces
    inicio
     mientras frente-libre hacer avanza;
     gira-izquierda;
    fin;
  fin;

    inicia-ejecucion
    arriba;
    recorre;
        apagate;
    termina-ejecucion
finalizar-programa
