iniciar-programa
define-nueva-instruccion salto-derecha como inicio
    gira-izquierda;
    mientras frente-libre y derecha-bloqueada hacer avanza;
    repetir 3 veces gira-izquierda;
    si frente-libre entonces avanza;
    repetir 3 veces gira-izquierda;
    mientras frente-libre hacer avanza;
    gira-izquierda;
fin;
define-nueva-instruccion salto-izquierda como inicio
    repetir 3 veces gira-izquierda;
    mientras frente-libre y izquierda-bloqueada hacer avanza;
    gira-izquierda;
    si frente-libre entonces avanza;
    gira-izquierda;
    mientras frente-libre hacer avanza;
    repetir 3 veces gira-izquierda;
fin;
define-nueva-instruccion avance como inicio
    si frente-libre entonces avanza
        sino inicio
            si orientado-al-este entonces salto-derecha;
            si orientado-al-oeste entonces salto-izquierda;
        fin;
    si frente-bloqueado y orientado-al-este entonces inicio
        si izquierda-bloqueada entonces repetir 2 veces gira-izquierda
            sino inicio
                gira-izquierda;
                mientras frente-libre y derecha-bloqueada hacer avanza;
                si derecha-bloqueada entonces inicio
                    repetir 2 veces gira-izquierda;
                    mientras frente-libre hacer avanza;
                    repetir 3 veces gira-izquierda;
                fin
                    sino inicio
                        repetir 2 veces gira-izquierda;
                        mientras frente-libre hacer avanza;
                        gira-izquierda;
                    fin;
            fin;
    fin;
fin;
define-nueva-instruccion medio como inicio
    si orientado-al-este entonces repetir 2 veces avance;
    si orientado-al-este entonces medio;
    avance;
fin;
    inicia-ejecucion
    mientras no-orientado-al-este hacer gira-izquierda;
    medio;
        apagate;
    termina-ejecucion
finalizar-programa
