iniciar-programa
define-nueva-instruccion pon(k) como
inicio
        si no-orientado-al-este entonces inicio
                gira-izquierda;
                pon(k);
                repetir 3 veces gira-izquierda;
        fin
        sino
        inicio

                avanza;
                repetir k veces si junto-a-zumbador entonces coge-zumbador;
                repetir k veces deja-zumbador;
                repetir 2 veces gira-izquierda;
                avanza;
                repetir 2 veces gira-izquierda;

        fin;
fin;
define-nueva-instruccion recorre(w) como
inicio
    si no si-es-cero(w) entonces
        repetir 4 veces
        inicio
                si frente-libre entonces
                inicio
                    avanza;
                    si junto-a-zumbador entonces inicio
                    coge-zumbador;
                    si junto-a-zumbador entonces
                    inicio
                            coge-zumbador;
                            si no junto-a-zumbador entonces
                            inicio
                                   recorre(precede(w));
                                   repetir 2 veces
                                   deja-zumbador;
                            fin
                            sino
                            inicio
                                    pon(precede(w));
                                    repetir 2 veces deja-zumbador;
                            fin;
                    fin
                    sino
                    inicio
                            recorre(w);
                            deja-zumbador;
                    fin;
                    fin;
                    repetir 2 veces gira-izquierda;
                    avanzA;
                    repetir 2 veces gira-izquierda;
                fin;
                gira-izquierda;
        fin;
fin;
define-nueva-instruccion toma(x) como
inicio
        si junto-a-zumbador entonces
        inicio
                coge-zumbador;
                toma(sucede(x));
        fin
        sino
        inicio
                recorre(x);
        fin;

fin;
    inicia-ejecucion
        toma(0);
        apagate;
    termina-ejecucion
finalizar-programa
