iniciar-programa
    define-nueva-instruccion gira(n) como inicio
        repetir n veces inicio
        gira-izquierda
        fin;
        fin;

    define-nueva-instruccion pal-norte como inicio
        si orientado-al-sur entonces inicio
        gira(2);
        fin;
        si orientado-al-este entonces inicio
        gira-izquierda;
        fin;
        si orientado-al-oeste entonces inicio
        gira(3);
        fin;
        fin;

    define-nueva-instruccion pal-oeste como inicio
       si orientado-al-norte entonces inicio
       gira-izquierda;
       fin;
       si orientado-al-sur entonces inicio
       gira(3);
       fin;
       si orientado-al-este entonces inicio
       gira(2);
       fin;
       fin;

    define-nueva-instruccion pal-este como inicio
        si orientado-al-sur entonces inicio
        gira-izquierda;
        fin;
        si orientado-al-oeste entonces inicio
        gira(2);
        fin;
        si orientado-al-norte entonces inicio
        gira(3);
        fin;
        fin;

    define-nueva-instruccion pal-sur como inicio
       si orientado-al-norte entonces inicio
       gira(2);
       fin;
       si orientado-al-este entonces inicio
       gira(3);
       fin;
       si orientado-al-oeste entonces inicio
       gira-izquierda;
       fin;
       fin;

    define-nueva-instruccion muro-derecho como inicio
       avanza;
       gira(3);
       si frente-bloqueado entonces inicio
       gira-izquierda;
       fin
       sino inicio
       avanza;
       deja-zumbador;
       fin;
       fin;

    define-nueva-instruccion ida como inicio
       si no junto-a-zumbador entonces inicio
       deja-zumbador;
       fin;
       mientras frente-libre hacer inicio
       avanza;
       mientras no-junto-a-zumbador hacer inicio
       deja-zumbador;
       fin;
       fin;
       gira(3);
       si frente-libre entonces inicio
       avanza;
       fin
       sino inicio
       apagate;
       fin;
       gira(3);
       fin;

     define-nueva-instruccion vuelta como inicio
       si no junto-a-zumbador entonces inicio
       deja-zumbador;
       fin;
       mientras frente-libre hacer inicio
       avanza;
       mientras no-junto-a-zumbador hacer inicio
       deja-zumbador
       fin;
       fin;                                     
       gira-izquierda;
       si frente-libre entonces inicio
       avanza;
       gira-izquierda;
       fin
       fin;

    inicia-ejecucion
        pal-este;
        avanza;
        mientras junto-a-zumbador hacer inicio
        coge-zumbador;
        fin;
        gira(2);
        avanza;
        pal-norte;
        mientras no-junto-a-zumbador hacer inicio
        muro-derecho;
        fin;
        pal-norte;
        mientras frente-libre hacer inicio
        avanza;
        fin;
        mientras no-junto-a-zumbador hacer inicio
        deja-zumbador;
        fin;
        pal-sur;
        mientras frente-libre hacer inicio
        si no-junto-a-zumbador entonces inicio
        deja-zumbador;
        fin;
        avanza;
        fin;
        mientras no-junto-a-zumbador hacer inicio
        deja-zumbador;
        fin;
        gira-izquierda;
        si frente-libre entonces inicio
        avanza;
        fin;
        gira-izquierda;
        mientras frente-libre hacer inicio
        ida;
        vuelta;
        fin;
        apagate;
    termina-ejecucion
finalizar-programa
