iniciar-programa
    define-nueva-instruccion gira(n) como inicio
        repetir n veces gira-izquierda;
    fin;

    define-nueva-instruccion posicion22 como inicio
        mientras no-orientado-al-norte hacer gira(1);
        avanza;
        gira(3);
        avanza;
        gira(1);
    fin;

    define-nueva-instruccion avanzar como inicio
        si derecha-bloqueada entonces inicio
            avanza;
        fin sino inicio
            gira(3);
            avanza;
        fin;
    fin;

    define-nueva-instruccion cuenta-perimetro como inicio
        si no-junto-a-zumbador entonces inicio
            avanzar;
            cuenta-perimetro;
        fin sino inicio
            coge-zumbador;
            gira(1);
            avanza;
            gira(1);
            repetir 2 veces avanza;
            deja-zumbador;
        fin;
        deja-zumbador;
    fin;

   define-nueva-instruccion poste(z) como inicio
        si no-junto-a-zumbador entonces inicio
            repetir z veces avanzar;
            poste(z);
        fin sino inicio
            coge-zumbador;
            gira(1);
            avanza;
            gira(1);
            avanza;
        fin;
        deja-zumbador;
    fin;

    define-nueva-instruccion mide-distancia(x) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            mide-distancia (sucede(x));
        fin sino inicio
            repetir x veces deja-zumbador;
            mientras no-orientado-al-norte hacer gira(1);
            avanza;
            deja-zumbador;
            repetir x veces avanza;
            poste(x);
        fin;
    fin;

    define-nueva-instruccion resta (x) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            resta(sucede(x));
        fin sino inicio
            repetir x veces deja-zumbador;
            avanza;
        fin;
        coge-zumbador;
    fin;

    inicia-ejecucion
        posicion22;
        deja-zumbador;
        avanza;
        cuenta-perimetro;
        gira(2);
        repetir 2 veces avanza;
        mide-distancia(0);
        resta(0);
        apagate;
    termina-ejecucion
finalizar-programa
