ASORT ( )

Ordena una matriz

Sintaxis

     ASORT(, [],

        [], []) –> aDestino

Argumentos

es la matriz que se va a ordenar.

es el primer elemento que se va a ordenar. Si no se específica, la posición inicial por defecto es uno.

es el número de elementos que se van a ordenar. Si no se especifica, se ordenan todos los elementos de la matriz desde el elemento inicial.

es un bloque de código opcional que se utiliza para determinar el criterio de ordenación. Si no se especifica, el criterio por defecto es ascendente.

Devuelve

ASORT() devuelve una referencia a la matriz .

Descripción

ASORT() es una función de matrices que clasifica, total o parcialmente, una matriz que contiene elementos del mismo tipo de datos. Los tipos de datos que pueden ordenarse son caracteres, fechas, valores lógicos y numéricos.

Si no se especifica el argumento , el orden por defecto es ascendente. Los elementos con valores bajos se sitúan al principio de la matriz (primer elemento) y los elementos con valores altos se colocan al final de la misma (último elemento).

Si se especifica un argumento en forma de bloque, el bloque se evalúa para determinar el orden de clasificación. Cada vez que se evalúa el bloque, se le pasan como parámetros dos elementos de la matriz destino. El bloque devuelve verdadero (.T.) si los elementos están en el orden correcto. Esta opción permite crear un criterio de ordenación descendente o cualquier otro. Consulte los ejemplos siguientes.

Al ordenarse, las cadenas de caracteres se sitúan secuencialmente según el valor de su código ASCII, los valores lógicos se clasifican con falso (.F.) como valor bajo; los valores de fecha se clasifican cronológicamente; y los valores numéricos se clasifican por su magnitud.

Nota: Como DPXBASE crea las matrices multidimensionales anidando submatrices dentro de otras matrices, ASORT() no puede ordenar directamente una matriz multidimensional. Para ordenar una matriz anidada, debe especificarse un bloque de código que permita manejar adecuadamente submatrices.

 Ejemplos

     ¦  El ejemplo siguiente crea una matriz de cinco elementos sin

        ordenar, la clasifica en orden ascendente y, a continuación, la

        clasifica en orden descendente con un bloque de código:

        aMatriz := { 3, 5, 1, 2, 4 }

        ASORT(aMatriz)

        //Resultado: { 1, 2, 3, 4, 5 }

 

        ASORT(aMatriz,,, { x, y x > y })

        //Resultado: { 5, 4, 3, 2, 1 }

     ¦  El ejemplo siguiente ordena una matriz de cadenas de

        caracteres en orden ascendente, sin diferenciar mayúsculas o

        minúsculas. Para ello, utiliza un bloque de código que convierte los

        elementos en mayúsculas antes de compararlos:

        aMatriz := { “Federico”, “Catalina”, “ALBERTO”, “amigo” }

        ASORT(aMatriz,,, { x, y UPPER(x) < UPPER(y) })

     ¦  El ejemplo siguiente clasifica una matriz anidada utilizando

        el segundo elemento de cada submatriz:

        aChicos := { {“María”, 14}, {“José”, 23}, {“Arturo”, 16} }

        aClasifChicos := ASORT(aChicos,,, { x, y x[2] < y[2] })

        Resultado:

        { {“María”, 14}, {“Arturo”, 16}, {“José”, 23} }

 Ficheros:  La biblioteca asociada es EXTEND.LIB.