iniciar-programa
define-nueva-instruccion gira-derecha como inicio
gira-izquierda;
gira-izquierda;
gira-izquierda;
fin;

define-nueva-instruccion media-vuelta como inicio
gira-izquierda;
gira-izquierda;
fin;

define-nueva-instruccion no-caben(x) como inicio
mientras frente-libre o derecha-libre o izquierda-libre hacer inicio
si junto-a-zumbador entonces coge-zumbador;
si no junto-a-zumbador entonces inicio
si frente-libre entonces inicio
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-derecha;
fin;
fin
sino inicio
gira-izquierda;
fin;
si no junto-a-zumbador entonces inicio
si frente-libre entonces inicio
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
fin;
fin
sino inicio
media-vuelta;
fin;
fin;
si no junto-a-zumbador entonces inicio
si frente-libre entonces inicio
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
repetir x veces deja-zumbador;
deja-zumbador;
apagate;
fin;
fin
sino inicio
repetir x veces deja-zumbador;
deja-zumbador;
apagate;
fin;
fin;
fin
sino inicio
mientras junto-a-zumbador hacer coge-zumbador;
no-caben(sucede(x));
fin;
fin;
fin;

define-nueva-instruccion pasajeros-abordo(x) como inicio
mientras frente-libre o izquierda-libre o derecha-libre hacer inicio
si si-es-cero(x) entonces inicio
no-caben(x);
fin
sino inicio
si junto-a-zumbador entonces coge-zumbador;
si no junto-a-zumbador entonces inicio
si frente-libre entonces inicio
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
gira-derecha;
fin;
fin
sino inicio
gira-izquierda;
fin;
si no junto-a-zumbador entonces inicio
si frente-libre entonces inicio
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
fin;
fin
sino inicio
media-vuelta;
fin;
fin;
si no junto-a-zumbador entonces inicio
si frente-libre entonces inicio
avanza;
si no junto-a-zumbador entonces inicio
media-vuelta;
avanza;
mientras no orientado-al-este hacer gira-izquierda;
avanza;
repetir 5 veces deja-zumbador;
apagate;
fin;
fin;
fin;
fin
sino inicio
mientras junto-a-zumbador hacer coge-zumbador;
pasajeros-abordo(precede(x));
fin;
fin;
fin;
si junto-a-zumbador y frente-bloqueado y derecha-bloqueada y izquierda-bloqueada entonces inicio
coge-zumbador;
mientras no orientado-al-este hacer gira-izquierda;
avanza;
repetir 5 veces deja-zumbador;
apagate;
fin;
fin;


define-nueva-instruccion pasajeros(x) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
pasajeros(sucede(x));
fin
sino inicio
avanza;
pasajeros-abordo(x);
fin;
fin;
    inicia-ejecucion
        pasajeros(1);
        apagate;
    termina-ejecucion
finalizar-programa
