iniciar-programa
define-nueva-instruccion este como
inicio
Mientras no-orientado-al-este hacer
gira-izquierda;
fin;

define-nueva-instruccion gira-derecha como
inicio
repetir 3 veces
gira-izquierda;
fin;

define-nueva-instruccion camina como
inicio
Mientras no-junto-a-zumbador y frente-libre hacer
inicio
avanza;
fin;
Si frente-bloqueado y no-junto-a-zumbador entonces
inicio
apagate;
fin;
fin;

define-nueva-instruccion recoge como
inicio
Mientras junto-a-zumbador hacer
coge-zumbador;
fin;

define-nueva-instruccion entrega como
inicio
Mientras frente-libre hacer
inicio
avanza;
fin;
Si frente-bloqueado y derecha-bloqueada entonces
inicio
gira-izquierda;
fin;
Mientras derecha-bloqueada hacer
inicio
avanza;
fin;
Si derecha-libre entonces
inicio
gira-derecha;
avanza;
gira-derecha;
fin;
Mientras frente-libre hacer
inicio
avanza;
fin;
Si no-junto-a-zumbador entonces
inicio
Mientras algun-zumbador-en-la-mochila hacer
deja-zumbador;
fin;
Si junto-a-zumbador entonces
inicio
gira-izquierda;
fin;
Mientras junto-a-zumbador hacer
inicio
avanza;
fin;
Mientras algun-zumbador-en-la-mochila hacer
inicio
deja-zumbador;
fin;
fin;

define-nueva-instruccion regresa como
inicio
Mientras no-orientado-al-oeste hacer
inicio
gira-izquierda;
fin;
Mientras frente-libre hacer
inicio
avanza;
fin;
Si frente-bloqueado entonces
inicio
gira-derecha;
fin;
Mientras izquierda-bloqueada hacer
inicio
avanza;
fin;
Si izquierda-libre entonces
inicio
gira-izquierda;
avanza;
gira-izquierda;
fin;
Mientras frente-libre hacer
inicio
avanza;
fin;
Si frente-bloqueado entonces
inicio
gira-derecha;
fin;
Mientras frente-libre hacer
inicio
avanza;
fin;
Si frente-bloqueado entonces
inicio
gira-izquierda;
gira-izquierda;
fin;
fin;




inicia-ejecucion
    este;
    Mientras no-orientado-al-oeste hacer
    inicio
    camina;
    recoge;
    entrega;
    regresa;
    fin;
        apagate;
    termina-ejecucion
finalizar-programa
