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 ir11 como
    inicio
        sur; mientras frente-libre hacer avanza;
        oeste; mientras frente-libre hacer avanza;
        norte;
    fin;

define-nueva-instruccion recorre como
    inicio
        si frente-libre entonces
            inicio
                avanza;
            fin
            sino
                inicio
                    si orientado-al-norte entonces
                        inicio
                            este;
                            si frente-libre entonces avanza;
                            sur;
                        fin
                        sino
                            inicio
                                este;
                                si frente-libre entonces
                                    inicio
                                        avanza;
                                        norte;
                                    fin
                                    sino
                                        inicio
                                            apagate;
                                        fin;
                            fin;
                 fin;
   fin;

define-nueva-instruccion cerrar como
    inicio
        norte;
        si frente-libre entonces
            inicio
                avanza;
                deja-zumbador;
                este;
                si frente-libre entonces
                    inicio
                        avanza;
                        deja-zumbador;
                        oeste;
                        avanza;
                    fin;
                oeste;    
                si frente-libre entonces
                    inicio
                        avanza;
                        deja-zumbador;
                        este;
                        avanza;
                    fin;
                sur;
                avanza;
             fin;
         este;
         si frente-libre entonces
             inicio
                 avanza;
                 deja-zumbador;
                 oeste;
                 avanza;
             fin;
         oeste;
         si frente-libre entonces
             inicio
                 avanza;
                 deja-zumbador;
                 este;
                 avanza;
              fin;

        sur;
        si frente-libre entonces
            inicio
                avanza;
                deja-zumbador;
                este;
                si frente-libre entonces
                    inicio
                        avanza;
                        deja-zumbador;
                        oeste;
                        avanza;
                    fin;
                oeste;
                si frente-libre entonces
                    inicio
                        avanza;
                        deja-zumbador;
                        este;
                        avanza;
                    fin;
                norte;
                avanza;
             fin;
  fin;

define-nueva-instruccion mina como
    inicio
      si junto-a-zumbador entonces
          inicio
            coge-zumbador;
                si junto-a-zumbador entonces
                    inicio
                        coge-zumbador;
                        si junto-a-zumbador entonces
                            inicio
                                 coge-zumbador;
                                 si junto-a-zumbador entonces
                                    inicio
                                         coge-zumbador;
                                         si junto-a-zumbador entonces
                                            inicio
                                                coge-zumbador;
                                                si junto-a-zumbador entonces
                                                    inicio
                                                        coge-zumbador;
                                                        si junto-a-zumbador entonces
                                                            inicio
                                                                coge-zumbador;
                                                                 si junto-a-zumbador entonces
                                                                    inicio
                                                                        coge-zumbador;
                                                                         si junto-a-zumbador entonces
                                                                             inicio
                                                                                coge-zumbador;

                                                                                cerrar;
                                                                             fin
                                                                             sino
                                                                                 inicio
                                                                                     repetir 8 veces deja-zumbador;
                                                                                 fin;
                                                                     fin
                                                                      sino
                                                                         inicio
                                                                              repetir 7 veces deja-zumbador;
                                                                         fin;
                                                            fin
                                                            sino
                                                                inicio
                                                                    repetir 6 veces deja-zumbador;
                                                                fin;
                                                   fin
                                                   sino
                                                       inicio
                                                           repetir 5 veces deja-zumbador;
                                                       fin;
                                              fin
                                              sino
                                                  inicio
                                                      repetir 4 veces deja-zumbador;
                                                  fin;
                                           fin
                                           sino
                                               inicio
                                                   repetir 3 veces deja-zumbador;
                                               fin;
                                        fin
                                        sino
                                            inicio
                                               repetir 2 veces deja-zumbador;
                                            fin;
                             fin
                             sino
                                 inicio
                                     deja-zumbador;
                                 fin;
   fin;

  fin;

define-nueva-instruccion principal como
    inicio

        si orientado-al-norte entonces
            inicio
                mina;
                norte;
             fin;
        si orientado-al-sur entonces
            inicio
                mina;
                sur;
            fin;
       recorre;
       principal;
   fin;


  inicia-ejecucion
  ir11;
  principal;
        apagate;
    termina-ejecucion
finalizar-programa
