iniciar-programa
   define-nueva-instruccion gira(n) como inicio
      repetir n veces
         gira-izquierda;
   fin;
   define-nueva-instruccion norte como inicio
      mientras no-orientado-al-norte hacer
         gira(1);
   fin;
   define-nueva-instruccion sur como inicio
      mientras no-orientado-al-sur hacer
         gira(1);
   fin;
   define-nueva-instruccion este como inicio
      mientras no-orientado-al-este hacer
         gira(1);
   fin;
   define-nueva-instruccion oeste como inicio
      mientras no-orientado-al-oeste hacer
         gira(1);
   fin;
   define-nueva-instruccion coger como inicio
      sur;
      si junto-a-zumbador y frente-libre entonces inicio
         coge-zumbador;
         avanza;
         coger;
         avanza;
      fin
      sino inicio
         coge-zumbador;
         oeste;
         mientras frente-libre hacer
            avanza;
         este;
         avanza;
         norte;
      fin;
   fin;
   define-nueva-instruccion coge como inicio
      sur;
      si junto-a-zumbador y frente-libre entonces inicio
         coge-zumbador;
         avanza;
         coge;
         avanza;
      fin
      sino inicio
         coge-zumbador;
         oeste;
         mientras frente-libre hacer
            avanza;
         este;
         deja-zumbador;
         avanza;
         norte;
      fin;
   fin;
   define-nueva-instruccion vigas como inicio
      mientras frente-libre y no-junto-a-zumbador hacer
         avanza;
      si junto-a-zumbador entonces inicio
         coge;
         este;
         mientras frente-libre hacer inicio
            mientras frente-libre y no-junto-a-zumbador hacer
               avanza;
             si junto-a-zumbador entonces inicio
                coger;
                este;
             fin;
         fin;
      fin;
      si frente-bloqueado entonces inicio
         si orientado-al-este entonces inicio
            sur;
            si frente-libre entonces inicio
               avanza;
            fin
            sino inicio
               oeste;
            mientras frente-libre hacer
               avanza;
            apagate;
            fin;
            oeste;
            vigas;
         fin;
         si orientado-al-oeste entonces inicio
            sur;
            si frente-libre entonces inicio
               avanza;
            fin
            sino inicio
               oeste;
            mientras frente-libre hacer
               avanza;
            apagate;
            fin;
            este;
            vigas;
         fin;
      fin;
   fin;
   define-nueva-instruccion orienta como inicio
      avanza;
      norte;
      mientras frente-libre hacer
         avanza;
      este;
      vigas;
   fin;
    inicia-ejecucion
       orienta;
        apagate;
    termina-ejecucion
finalizar-programa