iniciar-programa
    define-nueva-instruccion gira(z) como inicio
        repetir z veces gira-izquierda;
    fin;
    define-nueva-instruccion klavel como inicio
        si no-junto-a-zumbador entonces inicio
            si derecha-bloqueada y izquierda-bloqueada y frente-bloqueado entonces inicio
                repetir 2 veces deja-zumbador;
            fin sino inicio
                deja-zumbador;
            fin;
            repetir 4 veces inicio
                si frente-libre entonces inicio
                    avanza;
                    klavel;
                    gira(2);
                    avanza;
                    gira(2);
                fin;
                gira(1);
            fin;
        fin;
    fin;
    define-nueva-instruccion cubiculo como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            repetir 4 veces inicio
                si frente-libre entonces inicio
                    avanza;
                    cubiculo;
                    gira(2);
                    avanza;
                    gira(2);
                fin;
                gira(1);
            fin;
        fin;
    fin;
inicia-ejecucion
    si frente-bloqueado y derecha-bloqueada y izquierda-bloqueada entonces inicio
        gira(2);
        si frente-bloqueado entonces apagate sino gira(2);
    fin;
    klavel;
    cubiculo;
    repetir 4 veces inicio
        gira(1);
        si izquierda-bloqueada y derecha-bloqueada y frente-bloqueado entonces inicio
            mientras junto-a-zumbador hacer coge-zumbador;
            deja-zumbador;
        fin;
    fin;
        apagate;
    termina-ejecucion
finalizar-programa
