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 IrFinal como
    inicio
        nortE;
        mientras frente-libre hacer avanza;
        este;
        mientras frente-libre hacer avanza;
        sur;
    fin;
define-nueva-instruccion contar como
    inicio
        si no-junto-a-zumbador entonces
            inicio
                deja-zumbador;
                si junto-a-zumbador entonces
                    inicio
                        sur;
                        si frente-libre entonces
                            inicio
                                avanza;
                                contar;
                                norte;
                                avanza;
                            fin;
                        oeste;
                        si frente-libre entonces
                            inicio
                                avanza;
                                contar;
                                este;
                                avanza;
                            fin;
                    fin;
            fin;
    fin;
    define-nueva-instruccion recoger(x) como
        inicio
           mientras orientado-al-oeste hacer
               inicio
                   si junto-a-zumbador entonces
                       inicio
                           coge-zumbador;
                           si junto-a-zumbador entonces
                               inicio
                                   deja-zumbador;
                                   si frente-libre entonces
                                       inicio
                                           avanza;
                                       fin sino
                                           inicio
                                               este;
                                               mientras frente-libre hacer avanza;
                                               sur;
                                               si frente-libre entonces
                                                   inicio
                                                      avanza;
                                                      oeste;
                                                   fin sino
                                                       inicio
                                                         norte;
                                                          mientras frente-libre hacer avanza;
                                                          este;
                                                          mientras frente-libre hacer avanza;
                                                          repetir x veces deja-zumbador;
                                                          apagate;
                                                       fin;
                                           fin;
                               fin sino recoger(sucede(x));
                       fin;
                   si frente-libre y no-junto-a-zumbador  entonces avanza;
                   si frente-bloqueado y no-junto-a-zumbador entonces
                       inicio
                          este;
                          mientras frente-libre hacer avanza;
                          sur;
                          si frente-libre  entonces
                              inicio
                                  avanza;
                                  oeste;
                              fin sino
                                  inicio
                                      norte;
                                      mientras frente-libre hacer avanza;
                                      este;
                                      mientras frente-libre hacer avanza;
                                      repetir x veces deja-zumbador;
                                      apagate;
                                  fin;
                       fin;
               fin;
        fin;
    inicia-ejecucion
        IrFinal;
        si junto-a-zumbador entonces
            inicio
                mientras junto-a-zumbador hacer coge-zumbador;
                apagate;
            fin;
        contar;
        IrFinal;
        oeste;
        recoger(0);
        apagate;
    termina-ejecucion
finalizar-programa


