iniciar-programa

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

define-nueva-instruccion termina como inicio
repetir 2 veces gira-izquierda;
avanza;
mientras junto-a-zumbador hacer coge-zumbador;
repetir 2 veces gira-izquierda;
avanza;
mientras junto-a-zumbador hacer coge-zumbador;
avanza;
mover(0);
apagate;
fin;

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



define-nueva-instruccion operacion(z) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        operacion(sucede(z));
    fin sino inicio
        repetir z veces deja-zumbador;
        avanza;
        operacion2(z);
        repetir 2 veces gira-izquierda;
        avanza;
        deja-zumbador;

    fin;
fin;


define-nueva-instruccion mueve(z) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        mueve(sucede(z));
    fin sino inicio
        avanza;
        si no si-es-cero (z) entonces inicio
        repetir precede(z) veces deja-zumbador;
        fin sino apagate;
        repetir 2 veces gira-izquierda;
        avanza;
        repetir 2 veces gira-izquierda;
    fin;
fin;

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



    inicia-ejecucion
    avanza;
    restar(0);
    avanza;
    mientras junto-a-zumbador hacer inicio
        coge-zumbador;
        repetir 2 veces gira-izquierda;
        repetir 2 veces avanza;
        repetir 2 veces gira-izquierda;
        operacion(0);
        repetir 2 veces gira-izquierda;
        repetir 2 veces avanza;
    fin;
    repetir 2 veces gira-izquierda;
    avanza;
    repetir 2 veces gira-izquierda;

    mover(0);
        apagate;
    termina-ejecucion
finalizar-programa
