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