iniciar-programa
define-nueva-instruccion gira(n) como repetir n veces gira-izquierda;
define-nueva-instruccion lleva como
si derecha-libre y frente-libre entonces
inicio
avanza;
lleva;
deja-zumbador;
fin;
define-nueva-instruccion ve como
si junto-a-zumbador entonces
inicio
coge-zumbador;
ve;
deja-zumbador;
fin
sino
mientras derecha-libre y frente-libre hacer avanza;
define-nueva-instruccion checa(a) como
si no si-es-cero(a) entonces
si derecha-libre y frente-libre entonces
inicio
avanza;
checa(precede(a));
fin
sino
repetir a veces deja-zumbador;
define-nueva-instruccion resta(a) como
si junto-a-zumbador entonces
inicio
coge-zumbador;
resta(sucede(a));
fin
sino
checa(a);

    inicia-ejecucion
    si orientado-al-este entonces
    inicio
    mientras derecha-libre hacer avanza;
    si derecha-bloqueada entonces gira(1);
    fin;
    mientras frente-libre hacer
    inicio
    si junto-a-zumbador entonces
    inicio
    ve;
    gira(2);
    mientras frente-libre hacer avanza;
    gira(2);
    fin;
    lleva;
    si frente-libre entonces
    inicio
    gira(1);
    ve;
    fin;
    si frente-libre entonces
    inicio
    gira(1);
    resta(0);
    fin;
    si frente-libre entonces
    inicio
    gira(1);
    ve;
    fin;
    si frente-libre entonces gira(1);
    fin;
        apagate;
    termina-ejecucion
finalizar-programa
