iniciar-programa
define-nueva-instruccion mv como
inicio
repetir 2 veces gira-izquierda;
fin;
define-nueva-instruccion gd como
inicio
repetir 3 veces gira-izquierda;
fin;

define-nueva-instruccion contar como
inicio
si no (frente-bloqueado y derecha-bloqueada) entonces
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
si frente-libre entonces
inicio
avanza;
fin
sino
inicio
si derecha-libre entonces
inicio
mv;
mientras frente-libre hacer avanza;
gira-izquierda;
avanza;
gira-izquierda;
 fin;
fin;
contar;
deja-zumbador;
fin
sino
inicio
si frente-libre entonces
inicio
avanza;
fin
sino
inicio
si derecha-libre entonces
inicio
mv;
mientras frente-libre hacer avanza;
gira-izquierda;
avanza;
gira-izquierda;
fin;
fin;
contar;
fin;
fin;
 si junto-a-zumbador y orientado-al-norte entonces
 inicio
 coge-zumbador;
 contar;
 deja-zumbador;
 fin;
mientras no-orientado-al-oeste hacer
gira-izquierda;
mientras frente-libre hacer avanza;
gira-izquierda;
mientras frente-libre hacer avanza;

fin;







define-nueva-instruccion recoge2 como
inicio
mientras no (frente-bloqueado y derecha-bloqueada) hacer
inicio
mientras frente-libre hacer
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
si no-junto-a-zumbador entonces
deja-zumbador;
fin;
avanza;
fin;
si junto-a-zumbador entonces
inicio
coge-zumbador;
si no-junto-a-zumbador entonces
deja-zumbador;
fin;
si derecha-libre entonces
inicio
mv;
mientras frente-libre hacer avanza;
gira-izquierda;
avanza;
gira-izquierda;
fin;
fin;
si junto-a-zumbador entonces
inicio
coge-zumbador;
si no-junto-a-zumbador entonces
deja-zumbador;
fin;
fin;



define-nueva-instruccion expandir como
inicio
repetir 4 veces
inicio
si frente-libre entonces
inicio
avanza;
si no-junto-a-zumbador entonces
repetir 2 veces deja-zumbador;
mv;
avanza;
mv;
fin;
gira-izquierda;
fin;
fin;


define-nueva-instruccion infecta como
inicio
si no(frente-bloqueado y derecha-bloqueada) entonces
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
si no-junto-a-zumbador entonces expandir;
deja-zumbador;
fin;
si frente-libre entonces
inicio
avanza;
fin
sino
inicio
mv;
mientras frente-libre hacer avanza;
gira-izquierda;
avanza;
gira-izquierda;
fin;
infecta;
fin
sino
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
si no-junto-a-zumbador entonces expandir;
deja-zumbador;
fin;
mv;
recoge2;
fin;
fin;


define-nueva-instruccion dias como
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
dias;
mientras no-orientado-al-norte hacer gira-izquierda;
infecta;
fin;
fin;


    inicia-ejecucion
    dias;
    mientras no-orientado-al-norte hacer gira-izquierda;
    contar;
        apagate;
    termina-ejecucion
finalizar-programa
