iniciar-programa

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

    define-nueva-instruccion ultima como inicio
        mientras junto-a-zumbador y frente-libre hacer avanza;
        si frente-libre entonces inicio
            gira(2);
            avanza;
        fin sino inicio
            gira(2);
        fin;
    fin;

    define-nueva-instruccion llega11 como inicio
        mientras no-orientado-al-oeste hacer gira(1);
        mientras frente-libre hacer avanza;
    fin;

    define-nueva-instruccion norte como inicio
        mientras no-orientado-al-norte hacer gira(1);
        avanza;
    fin;

    define-nueva-instruccion este como inicio
        mientras no-orientado-al-este hacer gira(1);
        avanza;
    fin;

    define-nueva-instruccion sur como inicio
        mientras no-orientado-al-sur hacer gira(1);
        avanza;
    fin;

    define-nueva-instruccion oeste como inicio
        mientras no-orientado-al-oeste hacer gira(1);
        avanza;
    fin;

    define-nueva-instruccion direccion (x) como inicio
        si si-es-cero(precede(precede(precede(precede(x))))) entonces oeste;
        si si-es-cero(precede(precede(precede(x)))) entonces sur;
        si si-es-cero(precede(precede(x))) entonces este;
        si si-es-cero (precede(x)) entonces norte;
    fin;

    define-nueva-instruccion leer (n) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            leer (sucede(n));
        fin sino inicio
            si (no-junto-a-zumbador y frente-libre) entonces inicio
                avanza;
                leer(0);
                direccion(n);
                sal-de-instruccion;
            fin;
            direccion(n);
        fin;
    fin;

    inicia-ejecucion
        ultima;
        leer(0);
        apagate;
    termina-ejecucion
finalizar-programa
