iniciar-programa
define-nueva-instruccion a como inicio
mientras junto-a-zumbador y frente-libre hacer avanza;
si no-junto-a-zumbador entonces inicio
repetir 2 veces gira-izquierda;
avanza;
fin sino inicio
si junto-a-zumbador entonces inicio
si derecha-bloqueada y izquierda-bloqueada entonces apagate;
fin;
fin;
si derecha-bloqueada y izquierda-bloqueada entonces apagate;
fin;
define-nueva-instruccion op2 como inicio
si izquierda-libre y derecha-libre entonces inicio
repetir 3 veces gira-izquierda;
si frente-libre entonces avanza;
si no-junto-a-zumbador entonces inicio
repetir 2 veces gira-izquierda;
repetir 2 veces avanza;
fin;
si no-junto-a-zumbador entonces inicio
repetir 2 veces gira-izquierda;
avanza;
mientras no-orientado-al-sur hacer gira-izquierda;
apagate;
fin;
fin;
fin;
define-nueva-instruccion op3 como inicio
si izquierda-bloqueada o derecha-bloqueada entonces inicio
si derecha-libre entonces inicio
repetir 3 veces gira-izquierda;
si frente-libre entonces avanza;
si no-junto-a-zumbador entonces inicio
repetir 2 veces gira-izquierda;
avanza;
apagate;
fin;
fin sino inicio
si izquierda-libre entonces inicio
gira-izquierda;
avanza;
si no-junto-a-zumbador entonces inicio
repetir 2 veces gira-izquierda;
avanza;
gira-izquierda;
si no-junto-a-zumbador entonces inicio
repetir 2 veces gira-izquierda;
avanza;
gira-izquierda;
mientras no-orientado-al-sur hacer gira-izquierda;
apagate;
fin;
fin;

fin;
fin;
fin;
fin;
define-nueva-instruccion c como inicio
a;
si izquierda-libre y derecha-libre entonces inicio
op2;
fin sino inicio
op3;
fin;
si izquierda-bloqueada y derecha-bloqueada y frente-bloqueado entonces apagate;
fin;
inicia-ejecucion
mientras no-orientado-al-norte hacer gira-izquierda;
mientras junto-a-zumbador hacer c;
apagate;
termina-ejecucion
finalizar-programa