iniciar-programa
define-nueva-instruccion mosby(n) como
    inicio
    si junto-a-zumbador entonces
        inicio
        coge-zumbador;
        mosby(sucede(n));
        sal-de-instruccion;
        fin
        sino
            inicio
            si frente-libre entonces
                inicio
                avanza;
                repetir n veces
                    inicio
                    si junto-a-zumbador entonces coge-zumbador;
                    fin;
                si junto-a-zumbador entonces
                    inicio
                    repetir n veces deja-zumbador;
                    mosby(0);
                    fin
                    sino
                    inicio
                    mosby(n);
                    fin;
                fin
                sino
                    inicio
                    repetir 2 veces gira-izquierda;
                    mientras frente-libre hacer avanza;
                    repetir 2 veces gira-izquierda;
                    repetir  n veces
                       inicio
                       deja-zumbador;
                       si frente-libre entonces avanza;
                       fin;
                       repetir 2 veces gira-izquierda;
                       mientras frente-libre hacer avanza;
                       gira-izquierda;
                    fin;
            fin;
    fin;

    inicia-ejecucion
    mientras frente-libre hacer
        inicio
        si orientado-al-este entonces
            inicio
            avanza;
            gira-izquierda;
            fin;
        mientras no-junto-a-zumbador y frente-libre hacer avanza;
         si junto-a-zumbador entonces mosby(0);
        si frente-bloqueado y no-orientado-al-este entonces
            inicio
            repetir 2 veces gira-izquierda;
            mientras frente-libre hacer avanza;
            gira-izquierda;
            fin;

        fin;
        apagate;
    termina-ejecucion
finalizar-programa
