iniciar-programa

define-nueva-instruccion media-vuelta como inicio
repetir 2 veces
gira-izquierda;
fin;
 define-nueva-instruccion reparte-uno como inicio
 si junto-a-zumbador entonces inicio
 coge-zumbador;
 reparte-uno;
 deja-zumbador;
 avanza;
 fin;
 fin;
 define-nueva-instruccion reparte-dos como inicio
 si junto-a-zumbador entonces inicio
 coge-zumbador;
 coge-zumbador;
 reparte-dos;
 deja-zumbador;
 deja-zumbador;
 avanza;
 fin;
 fin;
define-nueva-instruccion coge-dos como
inicio
si frente-libre y no-junto-a-zumbador entonces inicio
avanza;
coge-dos;
fin;
si junto-a-zumbador y frente-libre entonces inicio
coge-zumbador;
si junto-a-zumbador entonces inicio
coge-zumbador;
si frente-libre y orientado-al-este entonces
avanza;
coge-dos;
deja-zumbador;
deja-zumbador;
fin
sino
si no-junto-a-zumbador entonces inicio
deja-zumbador;
si frente-libre entonces
avanza;
coge-dos;
fin;
 fin;
  fin;
define-nueva-instruccion coge-uno como inicio
si junto-a-zumbador y frente-libre y orientado-al-oeste entonces inicio
coge-zumbador;
avanza;
coge-uno;
deja-zumbador;
fin
sino
si no-junto-a-zumbador y frente-libre entonces inicio
avanza;
coge-uno
fin;
fin;


inicia-ejecucion
           mientras no-orientado-al-oeste hacer
           gira-izquierda;
             mientras frente-libre hacer
             avanza;
               media-vuelta;
                 mientras frente-libre hacer
                 avanza;
                        si no-junto-a-zumbador entonces inicio
                        media-vuelta;
                        mientras frente-libre hacer
                        avanza;
                        media-vuelta;
                        fin
              sino
                  si junto-a-zumbador entonces  inicio
                  coge-zumbador;
                  si no-junto-a-zumbador entonces inicio
                  media-vuelta;
                  si frente-libre entonces
                  avanza;
                  mientras frente-libre y junto-a-zumbador hacer
                  avanza;
                  si no-junto-a-zumbador entonces
                  deja-zumbador;
                  mientras frente-libre hacer
                  avanza;
                  media-vuelta;
                  fin
    sino
         si junto-a-zumbador entonces inicio
         deja-zumbador;
         media-vuelta;
         mientras frente-libre hacer
         avanza;
         media-vuelta;
         fin;
         fin;
         coge-dos;
         media-vuelta;
         si frente-libre y orientado-al-oeste entonces
         avanza;
         coge-uno;
         media-vuelta;

         si junto-a-zumbador entonces inicio
         reparte-uno;
         fin;
         mientras frente-libre hacer
         avanza;
         media-vuelta;
         si junto-a-zumbador entonces inicio
         reparte-dos;
         fin;

 apagate
 termina-ejecucion
 finalizar-programa
