iniciar-programa

define-nueva-instruccion avanze como inicio
mientras no-orientado-al-este hacer inicio
gira-izquierda;
fin;
mientras frente-libre y no-junto-a-zumbador hacer inicio
avanza;
fin;
si junto-a-zumbador entonces inicio
mientras no orientado-al-norte hacer inicio
gira-izquierda;
avanza;
fin;
fin;
fin;

define-nueva-instruccion LI como inicio
si orientado-al-oeste y junto-a-zumbador entonces inicio
    mientras junto-a-zumbador hacer inicio
        si junto-a-zumbador entonces inicio
        coge-zumbador;
        fin;
        si frente-libre entonces inicio
        avanza;
        fin;
    fin;
    si frente-libre entonces inicio
 gira-izquierda;
 gira-izquierda;
 avanza;
 fin;
 si frente-bloqueado entonces inicio
 gira-izquierda;
 gira-izquierda;
 fin;
 gira-izquierda;
 avanza;
 si no junto-a-zumbador entonces inicio
 gira-izquierda;
 gira-izquierda;
 gira-izquierda;
 avanza;
 gira-izquierda;
 fin;
  mientras junto-a-zumbador hacer inicio
        si junto-a-zumbador entonces inicio
        coge-zumbador;

        fin;
        si frente-libre entonces inicio
        avanza;
        fin;
    fin;
 gira-izquierda;
 mientras frente-libre hacer inicio
 avanza;
 fin;
 gira-izquierda;
 mientras frente-libre hacer inicio
 avanza;
 fin;
 fin;
 avanze;
 fin;


 define-nueva-instruccion LD como inicio
 si junto-a-zumbador y orientado-al-este entonces inicio
 mientras junto-a-zumbador hacer inicio
 si junto-a-zumbador entonces inicio
 coge-zumbador;
 fin;
 si frente-libre entonces inicio
 avanza;
 fin;
 fin;
 gira-izquierda;
 gira-izquierda;
 avanza;
 gira-izquierda;
 gira-izquierda;
 gira-izquierda;
 avanza;
  mientras junto-a-zumbador hacer inicio
 si junto-a-zumbador entonces inicio
 coge-zumbador;
 fin;
 si frente-libre entonces inicio
 avanza;
 fin;
 fin;
 gira-izquierda;
 mientras frente-libre hacer inicio
 avanza;
 fin;
 gira-izquierda;
 mientras frente-libre hacer inicio
 avanza;
 fin;
 fin;
 avanze;
 fin;


 define-nueva-instruccion ins como inicio
 si junto-a-zumbador entonces inicio
 gira-izquierda;
 si frente-libre entonces inicio
 avanza;
 fin;
 si junto-a-zumbador y orientado-al-oeste entonces inicio
 LI;
 fin;
 si orientado-al-oeste y no-junto-a-zumbador entonces inicio
 gira-izquierda;
 gira-izquierda;
 si frente-libre entonces inicio
 avanza;
 fin;
 si frente-libre entonces inicio
 avanza;
 fin;
 fin;
 si frente-bloqueado entonces inicio
 gira-izquierda;
 gira-izquierda;
 avanza;
 gira-izquierda;
 gira-izquierda;
 gira-izquierda;
 fin;
 si junto-a-zumbador y orientado-al-este entonces inicio
 LD;
 fin;
 si orientado-al-este y no junto-a-zumbador entonces inicio
 gira-izquierda;
 gira-izquierda;
 avanza;
 gira-izquierda;
 gira-izquierda;
 gira-izquierda;
 avanza;
 fin;
 fin;

 fin;
















    inicia-ejecucion

    avanze;
    mientras orientado-al-norte y junto-a-zumbador hacer inicio
    ins;
    fin;

    si orientado-al-norte y no-junto-a-zumbador entonces inicio
    gira-izquierda;
    mientras frente-libre hacer inicio
    avanza;
    fin;
    gira-izquierda;
    mientras frente-libre hacer inicio
    avanza;
    fin;
    mientras algun-zumbador-en-la-mochila hacer inicio
    deja-zumbador
    fin;
    fin;
        apagate;
    termina-ejecucion
finalizar-programa
 