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;

 define-nueva-instruccion formavigas  como
    inicio

      si junto-a-zumbador entonces
              inicio
                  coge-zumbador;
                  formavigas;
                  deja-zumbador;
                  si frente-libre entonces avanza;
              fin
              sino
                  inicio
                      norte;
                  fin;


    fin;

 define-nueva-instruccion kitaesquina como
     inicio
         si junto-a-zumbador entonces
             inicio
                 coge-zumbador;
                 kitaesquina;
                 deja-zumbador;
             fin
             sino
                 inicio
                     si frente-libre entonces avanza;
                     mientras junto-a-zumbador hacer avanza;
                 fin;
      fin;


    inicia-ejecucion
      kitaesquina;
      oeste;
      mientras frente-libre hacer avanza;este;
      si frente-libre entonces avanza;
      mientras junto-a-zumbador y frente-libre hacer
          inicio
              este;
              mientras no-junto-a-zumbador hacer avanza;
              formavigas;
              sur; mientras frente-libre hacer avanza;
              este;
              si frente-libre entonces avanza;
          fin;
      oeste;
      mientras frente-libre hacer avanza;
      este;

      mientras frente-libre y no-junto-a-zumbador hacer  coloca-viga;


        apagate;
    termina-ejecucion
finalizar-programa


