iniciar-programa
define-nueva-instruccion cuenta(x) como
inicio
si no si-es-cero(x) entonces
inicio
        si frente-libre entonces
            inicio
            avanza;

            fin
            sino
            inicio
            gira-izquierda;
            si no frente-libre entonces
                gira-izquierda;
            avanza;
            fin;
        si junto-a-zumbador entonces inicio
              cuenta(precede(x));
        fin
        sino
        cuenta(x);
fin;
fin;
define-nueva-instruccion checa(t) como
inicio
        si junto-a-zumbador entonces
        inicio
        coge-zumbador;
        checa(sucede(t));
        fin
        sino
        inicio
                cuenta(t);
        fin;
fin;
define-nueva-instruccion h(k) como inicio
 repetir k veces inicio
                checa(0);
        fin;
fin;
define-nueva-instruccion g(w)como
inicio
si no-orientado-al-sur o frente-libre entonces inicio
    si frente-libre entonces
    inicio
        avanza;
        g(sucedE(w));
    fin
    sino
    inicio
        gira-izquierda;
    g(w);
    fin;
fin
sino
inicio
h(precede(w));

fin;
fin;
define-nueva-instruccion copia(f) como
inicio
        si junto-a-zumbador entonces
        inicio
               coge-zumbador;
               copia(sucede(f));
        fin
        sino
        inicio
                mientras no orientado-al-oeste hacer
                gira-izquierda;
                mientras frente-libre hacer avanza;
                gira-izquierda;
                mientras frente-libre hacer avanza;
                repetir f veces
                deja-zumbador;
                apagate;

        fin;
fin;
    inicia-ejecucion
        Mientras no-orientado-al-oeste hacer
        inicio
                gira-izquierda;
        fin;
        mientras frente-libre hacer
        avanza;
        gira-izquierdA;
        mientras frente-libre hacer avanza;
        gira-izquierda;

    g(0);
    copia(0);
                       apagate;
    termina-ejecucion
finalizar-programa
