iniciar-programa

define-nueva-instruccion deja(z) como repetir z veces deja-zumbador;

define-nueva-instruccion gira(z) como repetir z veces gira-izquierda;

define-nueva-instruccion retrocede como inicio
    gira(2);
    avanza;
    gira(2);
fin;


define-nueva-instruccion marca como inicio
    repetir 4 veces inicio
        si frente-libre entonces inicio
            avanza;
            si junto-a-zumbador entonces retrocede
            sino inicio
                retrocede;
                si no-junto-a-zumbador entonces deja(3);
            fin;
        fin sino si no-junto-a-zumbador entonces deja(3);
        gira-izquierda;
    fin;
fin;

define-nueva-instruccion a como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        si no-junto-a-zumbador entonces inicio
            marca;
            si no-junto-a-zumbador entonces deja(2);
            repetir 4 veces inicio
                si frente-libre entonces inicio
                    avanza;
                    a;
                    retrocede;
                fin;
                gira-izquierda;
            fin;
        fin sino deja-zumbador;
    fin;
fin;

define-nueva-instruccion b como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            repetir 4 veces inicio
                si frente-libre entonces inicio
                    avanza;
                    b;
                    retrocede;
                fin;
                gira-izquierda;
            fin;
        fin sino deja-zumbador;
    fin;
fin;

    inicia-ejecucion
        a;
        b;
        apagate;
    termina-ejecucion
finalizar-programa
