iniciar-programa
define-nueva-instruccion media-vuelta como inicio
gira-izquierda;
gira-izquierda;
fin;

define-nueva-instruccion gira-derecha como inicio
gira-izquierda;
gira-izquierda;
gira-izquierda;
fin;

define-nueva-instruccion este como inicio
si orientado-al-este entonces inicio
si frente-bloqueado y izquierda-bloqueada entonces inicio
gira-derecha;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
si izquierda-bloqueada entonces inicio
gira-derecha;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-derecha;
fin;
si frente-libre entonces inicio
avanza;
fin;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
si frente-bloqueado y derecha-bloqueada entonces inicio
gira-izquierda;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
si frente-libre y derecha-bloqueada entonces inicio
gira-izquierda;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-izquierda;
fin;
si frente-libre entonces inicio
avanza;
fin;
fin;
si frente-libre y izquierda-libre y derecha-libre entonces inicio
gira-izquierda;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-izquierda;
fin;
gira-derecha;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-derecha;
fin;
si orientado-al-este entonces inicio
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
fin;
si frente-bloqueado y derecha-libre y izquierda-libre entonces inicio
gira-izquierda;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
fin;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
fin;
fin;

define-nueva-instruccion norte como inicio
si orientado-al-norte entonces inicio
si frente-bloqueado y izquierda-bloqueada entonces inicio
gira-derecha;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
si izquierda-bloqueada y frente-libre entonces inicio
gira-derecha;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-derecha;
si frente-libre entonces inicio
avanza;
fin;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
fin;
si frente-bloqueado y derecha-bloqueada entonces inicio
gira-izquierda;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
si frente-libre y derecha-bloqueada entonces inicio
gira-izquierda;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-izquierda;
fin;
si frente-libre entonces inicio
avanza;
fin;
fin;
si frente-libre y izquierda-libre y derecha-libre entonces inicio
gira-izquierda;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-izquierda;
fin;
gira-derecha;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-derecha;
fin;
si orientado-al-norte entonces inicio
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
fin;
si frente-bloqueado y derecha-libre y izquierda-libre entonces inicio
gira-izquierda;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
fin;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
fin;
fin;

define-nueva-instruccion sur como inicio
si orientado-al-sur entonces inicio
si frente-bloqueado y izquierda-bloqueada entonces inicio
gira-derecha;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
si izquierda-bloqueada y frente-libre entonces inicio
gira-derecha;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-derecha;
fin;
si frente-libre entonces inicio
avanza;
fin;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
si frente-bloqueado y derecha-bloqueada entonces inicio
gira-izquierda;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
si frente-libre y derecha-bloqueada entonces inicio
gira-izquierda;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-izquierda;
fin;
si frente-libre entonces inicio
avanza;
fin;
fin;
si frente-libre y izquierda-libre y derecha-libre entonces inicio
gira-izquierda;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-izquierda;
fin;
gira-derecha;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-derecha;
fin;
si orientado-al-sur entonces inicio
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
fin;
si frente-bloqueado y derecha-libre y izquierda-libre entonces inicio
gira-izquierda;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
fin;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
fin;
fin;

define-nueva-instruccion oeste como inicio
si orientado-al-oeste entonces inicio
si frente-bloqueado y izquierda-bloqueada entonces inicio
gira-derecha;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
si izquierda-bloqueada y frente-libre entonces inicio
gira-derecha;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-derecha;
fin;
si frente-libre entonces inicio
avanza;
fin;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
si frente-bloqueado y derecha-bloqueada entonces inicio
gira-izquierda;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
si frente-libre y derecha-bloqueada entonces inicio
gira-izquierda;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-izquierda;
fin;
si frente-libre entonces inicio
avanza;
fin;
fin;
si frente-libre y izquierda-libre y derecha-libre entonces inicio
gira-izquierda;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-izquierda;
fin;
gira-derecha;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-derecha;
fin;
si orientado-al-oeste entonces inicio
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
fin;
si frente-bloqueado y derecha-libre y izquierda-libre entonces inicio
gira-izquierda;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
fin;
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
apagate;
fin;
fin;
fin;
fin;

define-nueva-instruccion acabar como inicio
si orientado-al-norte entonces inicio
norte;
fin;
si orientado-al-sur entonces inicio
sur;
fin;
si orientado-al-este entonces inicio
este;
fin;
si orientado-al-oeste entonces inicio
oeste;
fin;
fin;

define-nueva-instruccion ubicarse como inicio
gira-izquierda;
si frente-libre entonces inicio
avanza;
si junto-a-zumbador entonces inicio
mientras junto-a-zumbador hacer inicio
acabar;
fin;
fin
sino inicio
media-vuelta;
avanza;
gira-izquierda;
fin;
fin
sino inicio
gira-derecha;
fin;
gira-derecha;
si frente-libre entonces inicio
avanza;
si junto-a-zumbador entonces inicio
mientras junto-a-zumbador hacer inicio
acabar;
fin;
fin
sino inicio
media-vuelta;
avanza;
gira-derecha;
fin;
fin
sino inicio
gira-izquierda;
fin;
si frente-libre entonces inicio
avanza;
si junto-a-zumbador entonces inicio
mientras junto-a-zumbador hacer inicio
acabar;
fin;
fin
sino inicio
media-vuelta;
avanza;
fin;
fin
sino inicio
media-vuelta;
fin;
si frente-libre entonces inicio
avanza;
si junto-a-zumbador entonces inicio
mientras junto-a-zumbador hacer inicio
acabar;
fin;
fin
sino inicio
media-vuelta;
avanza;
fin;
fin
sino inicio
apagate;
fin;
fin;
inicia-ejecucion
            ubicarse;
            mientras junto-a-zumbador hacer inicio
            acabar;
            fin;
            apagate;
    termina-ejecucion
finalizar-programa
