iniciar-programa
define-nueva-instruccion norte como inicio mientras no-orientado-al-norte  hacer gira-izquierda;   fin;
define-nueva-instruccion sur como  inicio mientras no-orientado-al-sur  hacer gira-izquierda; fin;
define-nueva-instruccion este como  inicio  mientras no-orientado-al-este  hacer gira-izquierda; fin;
define-nueva-instruccion oeste como inicio mientras no-orientado-al-oeste  hacer gira-izquierda; fin;

define-nueva-instruccion cuenta como
    inicio
        sur;
        mientras frente-libre  hacer avanza;
        oeste;
        mientras frente-libre  hacer avanza;
        deja-zumbador;
        este;
        avanza;
     fin;

     
define-nueva-instruccion coge-viga2 como
    inicio
        si frente-libre entonces
          inicio
              avanza;
              mientras junto-a-zumbador hacer
                    inicio
                        coge-zumbador;
                        si frente-libre entonces avanza;
                    fin;
               si frente-bloqueado entonces
                    inicio
                        norte;
                        mientras no-junto-a-zumbador hacer avanza;
                        coge-zumbador;
                        este;
                    fin
           fin
           sino
              inicio
                  si junto-a-zumbador entonces  coge-zumbador;
                  este;
              fin;
   fin;


define-nueva-instruccion buscavigas como
    inicio
          mientras frente-libre y no-junto-a-zumbador hacer avanza;
          si junto-a-zumbador entonces
              inicio
                 norte;
                 si frente-libre entonces
                     inicio
                         avanza;
                         si no-junto-a-zumbador entonces
                             inicio
                                 sur;
                                 avanza;
                                 coge-viga2;
                                 buscavigas;
                             fin
                         sino
                             inicio
                                 sur;
                                 avanza;
                                 este;
                                 si frente-libre entonces
                                     inicio
                                         avanza;
                                         buscavigas;
                                     fin
                                     sino
                                         inicio
                                             cuenta;
                                         fin;
                             fin;
                     fin
                     sino
                         inicio
                              sur;
                              coge-viga2;
                              buscavigas;
                          fin;
                   fin;
     fin;

define-nueva-instruccion coge-viga como
    inicio
        si frente-libre entonces
          inicio
              avanza;
              mientras junto-a-zumbador hacer
                    inicio
                        coge-zumbador;
                        si frente-libre entonces avanza;
                    fin;
               si frente-bloqueado entonces
                    inicio
                        norte;
                        mientras no-junto-a-zumbador hacer avanza;
                        coge-zumbador;
                        este;
                    fin
           fin
           sino
              inicio
                  si junto-a-zumbador entonces  coge-zumbador;
                  este;
              fin;
          buscavigas;
    fin;


define-nueva-instruccion coloca-viga como
    inicio
        mientras frente-libre y no-junto-a-zumbador hacer avanza;
        si junto-a-zumbador entonces
            inicio
                norte;
                mientras junto-a-zumbador y frente-libre  hacer avanza;
                si junto-a-zumbador entonces  sur;
                si no-junto-a-zumbador entonces
                    inicio
                        sur;
                        si frente-libre entonces avanza;
                    fin;
                coge-viga;
               si frente-bloqueado y no-junto-a-zumbador entonces  cuenta;
            fin;

     fin;


    inicia-ejecucion
      mientras frente-libre y no-junto-a-zumbador  hacer coloca-viga;
        apagate;
    termina-ejecucion
finalizar-programa