iniciar-programa
define-nueva-instruccion copia(w) como inicio
    si junto-a-zumbador entonces
    inicio
            coge-zumbador;
            copia(sucede(w));
    fin
    sino
    inicio
            repetir w veces
            deja-zumbador;
            avanza;
            repetir w veces
            deja-zumbador;
    fin;
fin;
define-nueva-instruccion ve como inicio
    si frente-libre entonces inicio
        avanza;
        ve;
        avanza;
    fin
    sino
    inicio
        repetir 3 veces
        gira-izquierda;
        avanza;
        repetir 2 veces
        gira-izquierda;
        copia(0);
        gira-izquierda;
    fin;
fin;
define-nueva-instruccion divide(x) como inicio
    si junto-a-zumbador entonces
    inicio
           coge-zumbador;
           divide(sucede(x));
    fin
    sino
    inicio
        mientras frente-libre hacer
        inicio
                repetir 2 veces
                    gira-izquierda;
                ve;
                repetir x veces
                si frente-libre entonces
                avanza;
        fin;
    fin;

fin;
define-nueva-instruccion coge como
inicio
        si junto-a-zumbador entonces
        inicio
                coge-zumbador;
                coge;
                deja-zumbador;
        fin
        sino
        inicio
                repetir 2 veces
                    gira-izquierda;
                mientras frente-libre hacer avanza;
                repetir 2 veces
                    gira-izquierda;
        fin;
fin;
    inicia-ejecucion
        copia(0);
        repetir 2 veces
            gira-izquierda;
        avanza;
        gira-izquierda;
        mientras frente-libre hacer
        avanza;
        coge;
        divide(0);
        apagate;
    termina-ejecucion
finalizar-programa
