iniciar-programa
define-nueva-instruccion gira(g) como
repetir g veces gira-izquierda;
define-nueva-instruccion marcha(n) como inicio
si orientado-al-norte y no junto-a-zumbador entonces inicio

si frente-libre entonces avanza;
si no-junto-a-zumbador y izquierda-libre entonces inicio
gira(2);
mientras frente-libre hacer avanza;
gira(3);
avanza;
gira(3);
avanza;
fin;

si no junto-a-zumbador y izquierda-bloqueada entonces gira(2);

marcha(0);
fin;
si junto-a-zumbador y orientado-al-norte entonces inicio
coge-zumbador;
marcha(sucede(n));
fin;
si orientado-al-sur y frente-libre entonces inicio
mientras frente-libre hacer avanza;
gira(3);
mientras frente-libre hacer avanza;
fin;

si si-es-cero (precede(n)) y no orientado-al-este entonces inicio
mientras no orientado-al-oeste hacer gira-izquierda;
mientras frente-libre hacer avanza;
deja-zumbador;
fin;

si si-es-cero(precede(precede(n))) entonces inicio
mientras no orientado-al-oeste hacer gira-izquierda;
mientras frente-libre hacer avanza;
gira(2);
avanza;
deja-zumbador;
fin;

si si-es-cero(n) entonces mientras no orientado-al-sur hacer gira-izquierda;

fin;

inicia-ejecucion
avanza;si no junto-a-zumbador entonces apagate;
gira(3);mientras junto-a-zumbador hacer avanza;
gira(2);avanza;gira(3);
marcha(0);
apagate;
termina-ejecucion
finalizar-programa