iniciar-programa

    define-nueva-instruccion norte como
    inicio
        mientras no-orientado-al-norte hacer
        inicio
            gira-izquierda;
        fin;
    fin;

    define-nueva-instruccion sur como
    inicio
        mientras no-orientado-al-sur hacer
        inicio
            gira-izquierda;
        fin;
    fin;

    define-nueva-instruccion este como
    inicio
        mientras no-orientado-al-este hacer
        inicio
            gira-izquierda;
        fin;
    fin;

    define-nueva-instruccion oeste como
    inicio
        mientras no-orientado-al-oeste hacer
        inicio
            gira-izquierda;
        fin;
    fin;

    define-nueva-instruccion gira-derecha como
    inicio
        repetir 3 veces
        inicio
            gira-izquierda;
        fin;
    fin;

    define-nueva-instruccion gira-doble como
    inicio
        repetir 2 veces
        inicio
            gira-izquierda;
        fin;
    fin;

    define-nueva-instruccion camina como
    inicio
        mientras frente-libre hacer
        inicio
            avanza;
        fin;
    fin;

    define-nueva-instruccion siete(x) como
    inicio
        si (junto-a-zumbador y orientado-al-oeste) entonces
        inicio
           repetir 7 veces
           inicio
               si junto-a-zumbador entonces
               inicio
                  coge-zumbador;
               fin
               sino
               inicio
                   repetir 6 veces
                   inicio
                       este;
                       deja-zumbador;
                   fin;
               fin;
           fin;
           si orientado-al-oeste entonces
           inicio
              siete(sucede(x));
           fin
           sino
           inicio
               siete(x);
           fin;
        fin
        sino
        inicio
            si orientado-al-oeste entonces
            inicio
                si si-es-cero(precede(x)) entonces
               inicio
                   deja-zumbador;
               fin;
            fin
            sino
            inicio
                oeste;
                repetir x veces
                inicio
                    repetir 7 veces
                    inicio
                        deja-zumbador;
                    fin;
                fin;
            fin;
        fin;
    fin;


    define-nueva-instruccion cinco(x) como
    inicio
        si (junto-a-zumbador y orientado-al-oeste) entonces
        inicio
           repetir 5 veces
           inicio
               si junto-a-zumbador entonces
               inicio
                  coge-zumbador;
               fin
               sino
               inicio
                   repetir 4 veces
                   inicio
                       este;
                       deja-zumbador;
                   fin;
               fin;
           fin;
           si orientado-al-oeste entonces
           inicio
              cinco(sucede(x));
           fin
           sino
           inicio
               cinco(x);
           fin;
        fin
        sino
        inicio
            si orientado-al-oeste entonces
            inicio
               si si-es-cero(precede(x)) entonces
               inicio
                   deja-zumbador;
               fin;
            fin
            sino
            inicio
                oeste;
                repetir x veces
                inicio
                    deja-zumbador;
                    deja-zumbador;
                    deja-zumbador;
                    deja-zumbador;
                    deja-zumbador;
                fin;
                siete(0);
            fin;
        fin;
    fin;



    define-nueva-instruccion tres(x) como
    inicio
        si (junto-a-zumbador y orientado-al-oeste) entonces
        inicio
           repetir 3 veces
           inicio
               si junto-a-zumbador entonces
               inicio
                  coge-zumbador;
               fin
               sino
               inicio
                   repetir 2 veces
                   inicio
                       este;
                       deja-zumbador;
                   fin;
               fin;
           fin;
           si orientado-al-oeste entonces
           inicio
              tres(sucede(x));
           fin
           sino
           inicio
               tres(x);
           fin;
        fin
        sino
        inicio
            si orientado-al-oeste entonces
            inicio
               si si-es-cero(precede(x)) entonces
               inicio
                   deja-zumbador;
               fin;
            fin
            sino
            inicio
                oeste;
                repetir x veces
                inicio
                    deja-zumbador;
                    deja-zumbador;
                    deja-zumbador;
                fin;
                cinco(0);
            fin;
        fin;
    fin;

    define-nueva-instruccion dos(x) como
    inicio
        si (junto-a-zumbador y orientado-al-oeste) entonces
        inicio
           repetir 2 veces
           inicio
               si junto-a-zumbador entonces
               inicio
                  coge-zumbador;
               fin
               sino
               inicio
                   este;
                   deja-zumbador;
               fin;
           fin;
           si orientado-al-oeste entonces
           inicio
               dos(sucede(x));
           fin
           sino
           inicio
               dos(x);
           fin;
        fin
        sino
        inicio
            si orientado-al-oeste entonces
            inicio
               si si-es-cero(precede(x)) entonces
               inicio
                   deja-zumbador;
               fin;
            fin
            sino
            inicio
                oeste;
                repetir x veces
                inicio
                    deja-zumbador;
                    deja-zumbador;
                fin;
                tres(0);
            fin;
        fin;
    fin;

    define-nueva-instruccion primo como
    inicio
        oeste;
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            si junto-a-zumbador entonces
            inicio
                deja-zumbador;
                dos(0)
            fin;
        fin;
    fin;

    define-nueva-instruccion buscar como
    inicio
        si junto-a-zumbador entonces
        inicio
            mientras junto-a-zumbador hacer
            inicio
                coge-zumbador;
            fin;
            norte;
            si frente-libre entonces
            inicio
                avanza;
                primo;
                si junto-a-zumbador entonces
                inicio
                    buscar;
                fin
                sino
                inicio
                    sur;
                    avanza;
                fin;
            fin;
            sur;
            si frente-libre entonces
            inicio
                avanza;
                primo;
                si junto-a-zumbador entonces
                inicio
                   buscar;
                fin
                sino
                inicio
                    norte;
                    avanza;
                fin;
            fin;
            este;
            si frente-libre entonces
            inicio
                avanza;
                primo;
                si junto-a-zumbador entonces
                inicio
                   buscar;
                fin
                sino
                inicio
                    oeste;
                    avanza;
                fin;
            fin;
            oeste;
            si frente-libre entonces
            inicio
                avanza;
                primo;
                si junto-a-zumbador entonces
                inicio
                   buscar;
                fin
                sino
                inicio
                    este;
                    avanza;
                    apagate;
                fin;
            fin;
        fin;
    fin;

    inicia-ejecucion
        buscar;
        apagate;
    termina-ejecucion
finalizar-programa
