iniciar-programa
define-nueva-instruccion g(h) como inicio
    repetir h veces gira-izquierda;
fin;
define-nueva-instruccion cuenta(e) como inicio
    si frente-libre entonces inicio
        avanza;
        cuenta(sucede(e));
    fin
    sino inicio
        repetir e veces deja-zumbador;
    fin;

fin;

define-nueva-instruccion pm(a) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        pm(sucede(a));

    fin
    sino inicio
        repetir a veces avanza;
        g(2);
        avanza;
        g(2);
        repetir a veces deja-zumbador;
    fin;
fin;
define-nueva-instruccion po(b) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        po(sucede(b));

    fin
    sino inicio
        repetir b veces avanza;
        g(2);
        avanza;
        g(2);
        repetir b veces deja-zumbador;
    fin;
fin;
define-nueva-instruccion oaxaca(c) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        oaxaca(sucede(c));
    fin
    sino inicio

        repetir c veces avanza;
        si no junto-a-zumbador entonces inicio
            repetir c veces deja-zumbador;
        fin
        sino inicio
            cuenta(1);
            apagate;
        fin;
    fin;
fin;
define-nueva-instruccion mexico(d) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        mexico(sucede(d));
    fin
    sino inicio

        repetir d veces avanza;
        si no junto-a-zumbador entonces inicio
            repetir d veces deja-zumbador;
        fin
        sino inicio
            g(2);
            cuenta(1);
            apagate;
        fin;
    fin;
fin;
define-nueva-instruccion velocidades como inicio

    oaxaca(0);
    avanza;
    mientras no junto-a-zumbador hacer avanza;
    g(2);
    mexico(0);
    avanza;
    si no junto-a-zumbador entonces inicio
        mientras no junto-a-zumbador hacer avanza;
        g(2);
        velocidades;
    fin
    sino inicio

    fin;
fin;

    inicia-ejecucion
    g(3);
    pm(0);
    mientras frente-libre hacer avanza;
    g(2);

    velocidades;


        apagate;
    termina-ejecucion
finalizar-programa
