iniciar-programa
define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gira-izquierda;
define-nueva-instruccion sur como mientras no orientado-al-sur hacer gira-izquierda;
define-nueva-instruccion este como mientras no-orientado-al-este hacer gira-izquierda;
define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gira-izquierda;
define-nueva-instruccion llenarmapa como inicio
 si no-junto-a-zumbador entonces inicio
        deja-zumbador;
        llenarmapa;
    fin sino inicio
        norte;
        si frente-libre entonces inicio
            avanza;
            si no-junto-a-zumbador entonces llenarmapa;
            sur;
            avanza;
        fin;
        sur;
        si frente-libre entonces inicio
            avanza;
            si no-junto-a-zumbador entonces llenarmapa;
            norte;
            avanza;
        fin;
        este;
        si frente-libre entonces inicio
            avanza;
            si no-junto-a-zumbador entonces llenarmapa;
            oeste;
            avanza;
        fin;
        oeste;
        si frente-libre entonces inicio
            avanza;
            si no-junto-a-zumbador entonces llenarmapa;
            este;
            avanza;
        fin;
    fin;
fin;
DEFINE-NUEVA-INSTRUCCION BUSCA (z) COMO INICIO
    SI JUNTO-A-ZUMBADOR Y FRENTE-LIBRE ENTONCES INICIO
        AVANZA;
        BUSCA (Z);
    FIN SINO INICIO
        SI FRENTE-BLOQUEADO ENTONCES INICIO
            GIRA-IZQUIERDA;
            SI FRENTE-LIBRE ENTONCES INICIO
                AVANZa;
            FIN SINO INICIO
                MIENTRAS NO-ORIENTADO-AL-SUR HACER GIRA-IZQUIERDA;
                MIENTRAS FRENTE-LIBRE HACER AVANZA;
                MIENTRAS NO-ORIENTADO-AL-OESTE HACER GIRA-IZQUIERDA;
                MIENTRAS FRENTE-LIBRE HACER AVANZA;
                MIENTRAS NO-ORIENTADO-AL-ESTE HACER GIRA-IZQUIERDA;
                coge-zumbador;
                REPETIR z VECES DEJA-ZUMBADOR;
                APAGATE;
            FIN;
            GIRA-IZQUIERDa;
            MIENTRAS FRENTE-LIBRE HACER AVANZA;
            REPETIR 2 VECES GIRA-IZQUIERDA;
            BUSCA (Z);
        FIN;
        SI NO-JUNTO-A-ZUMBADOR ENTONCES INICIO
            LLENARMAPA;
            MIENTRAS NO-ORIENTADO-AL-SUR HACER GIRA-IZQUIERDA;
            MIENTRAS FRENTE-LIBRE HACER AVANZA;
            MIENTRAS NO-ORIENTADO-AL-OESTE HACER GIRA-IZQUIERDA;
            MIENTRAS FRENTE-LIBRE HACER AVANZA;
            MIENTRAS NO-ORIENTADO-AL-ESTE HACER GIRA-IZQUIERDA;
            BUSCA (SUCEDE (Z));
        FIN SINO INICIO         
        FIN;
    FIN;
FIN;
        inicia-ejecucion
        mientras no-orientado-al-sur hacer gira-izquierda;
        mientras frente-libre hacer avanza;
        mientras no-orientado-al-oeste hacer gira-izquierda;
        mientras frente-libre hacer avanza;
        mientras no-orientado-al-norte hacer gira-izquierda;
        llenarmapa;
        MIENTRAS NO-ORIENTADO-AL-ESTE HACER GIRA-IZQUIERDA;
        BUSCA(0);
        apagate;
    termina-ejecucion
finalizar-programa
