iniciar-programa
define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gira-izquierda;
define-nueva-instruccion sur como mientras no-orientado-al-sur hacer gira-izquierda;
define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gira-izquierda;
define-nueva-instruccion este como mientras no-orientado-al-este hacer gira-izquierda;
define-nueva-instruccion marca como
    inicio
        norte;
        si frente-libre entonces
            inicio
                avanza;
                si junto-a-zumbador entonces
                    inicio
                       sur;
                       avanza;
                       si frente-libre entonces
                           inicio
                               avanza;
                               si junto-a-zumbador entonces
                                   inicio
                                       norte;
                                       avanza;
                                       oeste;
                                       si frente-libre entonces
                                           inicio
                                               avanza;
                                               si junto-a-zumbador entonces
                                                   inicio
                                                       este;
                                                       avanza;
                                                       si frente-libre entonces
                                                           inicio
                                                               avanza;
                                                               si junto-a-zumbador entonces
                                                                   inicio
                                                                      oeste;
                                                                      avanza;
                                                                      deja-zumbador;
                                                                   fin sino
                                                                       inicio
                                                                           oeste;
                                                                           avanza;
                                                                           repetir 2 veces deja-zumbador;
                                                                       fin;
                                                           fin sino repetir 2 veces deja-zumbador;
                                                   fin sino
                                                       inicio
                                                           este;
                                                           avanza;
                                                           repetir 2 veces deja-zumbador;
                                                       fin;
                                           fin sino repetir 2 veces deja-zumbador;
                                   fin sino
                                       inicio
                                           norte;
                                           avanza;
                                           repetir 2 veces deja-zumbador;
                                       fin;
                           fin sino repetir 2 veces deja-zumbador;
                    fin sino
                        inicio
                            sur;
                            avanza;
                            repetir 2 veces deja-zumbador;
                        fin;
            fin sino
                inicio
                    repetir 2 veces deja-zumbador;
                fin;
    fin;
define-nueva-instruccion MarcaCentro como
    inicio
        si junto-a-zumbador entonces
            inicio
                coge-zumbador;
                si no-junto-a-zumbador entonces
                    inicio
                       deja-zumbador;
                       marca;
                       norte;
                       si frente-libre entonces
                           inicio
                              avanza;
                              MarcaCentro;
                              sur;
                              avanza;
                           fin;
                       sur;
                       si frente-libre entonces
                           inicio
                              avanza;
                              MarcaCentro;
                              norte;
                              avanza;
                           fin;
                       este;
                       si frente-libre entonces
                           inicio
                              avanza;
                              MarcaCentro;
                              oeste;
                              avanza;
                           fin;
                       oeste;
                       si frente-libre entonces
                           inicio
                              avanza;
                              MarcaCentro;
                              este;
                              avanza;
                           fin;
                    fin sino deja-zumbador;
            fin;
    fin;
define-nueva-instruccion quita como
    inicio
       si junto-a-zumbador entonces
           inicio
               coge-zumbador;
               si junto-a-zumbador entonces
                  inicio
                      coge-zumbador;
                                  norte;
                                  si frente-libre entonces
                                      inicio
                                          avanza;
                                          quita;
                                          sur;
                                          avanza;
                                      fin;
                                  sur;
                                  si frente-libre entonces
                                      inicio
                                          avanza;
                                          quita;
                                          norte;
                                          avanza;
                                      fin;
                                  este;
                                  si frente-libre entonces
                                      inicio
                                          avanza;
                                          quita;
                                          oeste;
                                          avanza;
                                      fin;
                                   oeste;
                                  si frente-libre entonces
                                      inicio
                                          avanza;
                                          quita;
                                          este;
                                          avanza;
                                      fin;
                  fin sino deja-zumbador;
           fin;
    fin;
    inicia-ejecucion
        MarcaCentro;
        quita;
        apagate;
    termina-ejecucion
finalizar-programa
