iniciar-programa
define-nueva-instruccion camina2 como inicio
    mientras frente-libre hacer inicio
        avanza;
    fin;
fin;
define-nueva-instruccion avanzar como inicio
mientras junto-a-zumbador y frente-libre hacer inicio
avanza;
fin;
fin;
define-nueva-instruccion derecha como inicio
    repetir 3 veces inicio
        gira-izquierda;
    fin;
fin;
define-nueva-instruccion camina como inicio
    mientras no junto-a-zumbador y frente-libre hacer inicio
        avanza;
    fin;
fin;
define-nueva-instruccion norte como inicio
    mientras no orientado-al-norte hacer inicio
        gira-izquierda;
    fin;
fin;
define-nueva-instruccion vuelta como repetir 2 veces gira-izquierda;
define-nueva-instruccion coger como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        coger;
        deja-zumbador;
        fin sino inicio
        norte;
        avanza;
        avanzar;
     fin;
fin;
define-nueva-instruccion coger2 como inicio
    si junto-a-zumbador entonces inicio
            coge-zumbador;
            coger2;
            deja-zumbador;
        fin sino inicio
        vuelta;
        camina2;
    fin;
fin;
define-nueva-instruccion fila1 como inicio
    si junto-a-zumbador entonces inicio
            coge-zumbador;
            fila1;
            avanza;
            si frente-bloqueado y orientado-al-sur entonces inicio
                gira-izquierda;
            fin;
    fin sino inicio
        vuelta;
    fin;
fin;
define-nueva-instruccion fila2 como inicio
   si junto-a-zumbador entonces inicio
            coge-zumbador;
            fila2;
            avanza;
        fin sino inicio
        vuelta;
        avanza;
        gira-izquierda;
        avanza;
        gira-izquierda;
        avanzar;
        vuelta;
    fin;
fin;
define-nueva-instruccion cheka como inicio
    gira-izquierda;
    camina;
    si junto-a-zumbador entonces inicio
        coger2;
    fin;
fin;
define-nueva-instruccion recoger como inicio
    si junto-a-zumbador entonces inicio
            coge-zumbador;
            recoger;
            deja-zumbador;
        fin sino inicio
        norte;
        gira-izquierda;
        camina2;
        vuelta;
        avanzar;
     fin;
fin;
define-nueva-instruccion ordena como inicio
    mientras junto-a-zumbador hacer inicio
        recoger;
        avanza;
        camina;
    fin;
fin;
define-nueva-instruccion zumbador como inicio
    si junto-a-zumbador entonces inicio
            coge-zumbador;
            zumbador;
            deja-zumbador;
        fin sino inicio
        derecha;
        avanza;
        gira-izquierda;
        avanzar;
     fin;
fin;
define-nueva-instruccion final como inicio
    mientras algun-zumbador-en-la-mochila hacer inicio
        gira-izquierda;
        avanza;
        gira-izquierda;
        camina;
        si frente-bloqueado y no junto-a-zumbador entonces inicio
            apagate;
        fin;
        avanzar;
        vuelta;
        si no junto-a-zumbador entonces inicio
            avanza;
        fin;
        zumbador;
    fin;
fin;
    inicia-ejecucion
    norte;
    avanza;
    fila1;
    coger;
    vuelta;
    camina2;
    derecha;
    camina2;
    derecha;
    avanza;
    derecha;
    camina;
    fila2;
    vuelta;
    mientras junto-a-zumbador hacer inicio
        coger;
        vuelta;
        avanza;
        gira-izquierda;
        si frente-libre entonces inicio
            avanza;
        fin;
    fin;
    cheka;
    ordena;
    final;
        apagate;
    termina-ejecucion
finalizar-programa

