iniciar-programa
define-nueva-instruccion gira(n) como
inicio
repetir n veces gira-izquierda;
fin;
define-nueva-instruccion acomoda(n) como
inicio
si frente-libre entonces
inicio
avanza;
acomoda(n);
mientras no-orientado-al-norte hacer gira(1);
repetir n veces avanza;
fin;
fin;
define-nueva-instruccion acomoda2(n) como
inicio
si frente-libre entonces
inicio
avanza;
acomoda2(n);
mientras no-orientado-al-este hacer gira(1);
repetir n veces avanza;
fin;
fin;
define-nueva-instruccion esquina como
inicio
mientras no-orientado-al-norte hacer gira(1);
repetir 50 veces si frente-libre entonces avanza;
gira(3);
repetir 50 veces si frente-libre entonces avanza;
gira(3);
fin;
define-nueva-instruccion  expande(n) como
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
expande(sucede(n));
fin
sino
inicio
deja-zumbador;
acomoda(n);
mientras no-orientado-al-oeste hacer
gira(1);
deja-zumbador;
acomoda2(n);
mientras no-orientado-al-este hacer
gira(1);
repetir n veces
inicio
repetir n veces
inicio
deja-zumbador;
si frente-libre entonces
avanza;
fin;
si frente-bloqueado y junto-a-zumbador entonces
 inicio
 gira(2);
repetir precede(n) veces avanza;
fin
sino
inicio
gira(2);
repetir n veces si frente-libre entonces avanza;
fin;
gira(3);
si frente-libre entonces
avanza;
gira(3);
fin;
gira(1);
si frente-libre entonces
inicio
gira(2);
avanza;
fin
sino
gira(2);
repetir n veces
si junto-a-zumbador y frente-libre entonces avanza;
si frente-libre entonces
inicio
gira(2);
avanza;
gira(1);

fin
sino
gira(3);
si frente-libre entonces avanza;
mientras no-junto-a-zumbador hacer
inicio
avanza;
fin;
coge-zumbador;
gira(1);
si frente-libre entonces avanza;

mientras no-junto-a-zumbador hacer avanza;
coge-zumbador;
 fin;
fin;
define-nueva-instruccion busca como
inicio
si frente-libre entonces avanza;
si junto-a-zumbador entonces
inicio
coge-zumbador;
si junto-a-zumbador entonces
inicio
deja-zumbador;
expande(0);
fin
sino
deja-zumbador;
fin;
si frente-bloqueado entonces
inicio
gira(2);
repetir 50 veces si frente-libre entonces avanza;
gira(1);
si frente-bloqueado entonces
inicio

    gira(1);
    mientras frente-libre hacer avanza;
apagate;
fin;
avanza;
gira(1);
fin;
busca;
fin;

    inicia-ejecucion
    esquina;
    busca;
        apagate;
    termina-ejecucion
finalizar-programa
