iniciar-programa

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

define-nueva-instruccion extender(a) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        extender(sucede(a));
    fin sino inicio
        gira(3);
        repetir 11 veces inicio
        avanza;
            repetir a veces deja-zumbador;
        fin;
    fin;
fin;

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

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

define-nueva-instruccion residuo(d) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        residuo(sucede(d));
    fin sino inicio
        gira(3);
        avanza;
        repetir d veces deja-zumbador;
        gira(2);
        repetir 3 veces avanza;
        gira(1);
        avanza;
    fin;
fin;

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

define-nueva-instruccion resultado(f) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        resultado(sucede(f));
    fin sino inicio
        gira(2);
        repetir 3 veces avanza;
        repetir f veces deja-zumbador;
        gira(2);
        repetir 3 veces avanza;
        gira(1);
        avanza;
    fin;
fin;

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

    inicia-ejecucion

    repetir 3 veces avanza;
    extender(0);
    gira(3);
    avanza;
    repetir 11 veces inicio
        bajar(0);
    fin;
    gira(2);
    avanza;
    gira(3);
    repetir 11 veces avanza;
    gira(2);
    repetir 11 veces inicio
        sumar(0);
        si junto-a-zumbador entonces inicio
           gira(2);
           avanza;
           mientras junto-a-zumbador hacer coge-zumbador;
           gira(1);
           avanza;
           gira(1);
           avanza;
           deja-zumbador;
           gira(1);
           avanza;
           residuo(0);
        fin sino inicio
            gira(2);
            avanza;
            si junto-a-zumbador entonces inicio
                resta(0);
                resultado(0);
            fin sino inicio
                gira(1);
                avanza;
                gira(1);
                avanza;
                deja-zumbador;
                gira(2);
                repetir 2 veces avanza;
                gira(1);
            fin;
        fin;
    fin;
    gira(1);
    repetir 2 veces avanza;
    final(0);

        apagate;
    termina-ejecucion
finalizar-programa
