Pular para o conteúdo principal

Postagem em destaque

BlackTDN NEWS :: 2025.02.17 :: 22:53:04

_Créditos das imagens: ChatGPT # Challenger 3: tanque britânico precisa de IA para combater drones, aponta relatório **Fonte:** Tecmundo.com.br **Autor:** André Luiz Dias Gonçalves **Publicado em:** 2025-02-17T11:00:00Z ![Imagem](https://tm.ibxk.com.br/2025/02/14/14211125639006.jpg?ims=1200xorig) > Modelo de última geração que será utilizado pelo Exército Britânico a partir deste ano, o tanque Challenger 3 recebeu várias melhorias, garantindo maior mobilidade, poder de fogo e proteção no campo de batalha. No entanto, as adições podem não ser suficientes… [Leia mais](https://www.tecmundo.com.br/seguranca/402613-challenger-3-tanque-britanico-precisa-de-ia-para-combater-drones-aponta-relatorio.htm) --- # Uso exagerado de fones com cancelamento de ruído ativo pode gerar transtornos, suspeitam médicos **Fonte:** Tecmundo.com.br **Autor:** Igor Almenara Carneiro **Publicado em:** 2025-02-17T20:30:00Z ![Imagem](https://tm.ibxk.com.br/2025/02/17/17141315227128.jpg?ims=1200xorig) ...

Protheus :: Programação Básica em Advpl “Combo XL”

Classificando um Array Unidimensional e Bidimensional:

Da mesma forma que podemos passar um bloco para aScan(), também podemos passar um bloco para aSort(). A função aSort() classifica o Array passada por parâmetro, na ordem ascendente, mas, em substituição, podemos passar para ela um bloco de codificação para fazer a comparação. Quando fizermos isso, em vez de aSort() comparar os elementos internamente, ela passará para o Bloco de Codificação os dois elementos necessários para a comparação. A avaliação do Bloco, então, retornará verdadeiro se os dois elementos estiverem classificados em ordem; caso contrário, retornará falso. Quando o Bloco retornar falso, aSort() trocará os dois elementos.

É importante observar que aSort() passa o elemento com o número mais baixo do Array como primeiro parâmetro do bloco; desta forma, saberemos quem é quem! É igualmente importante notar que não teremos conhecimento dos dois elementos que estaremos comparando; só saberemos que o primeiro parâmetro é um elemento com número menor do que o segundo. aSort() assegura a classificação do Array, determina os elementos a comparar e sabe quando a classificação termina.

Para classificar um Array Unidimensional em ordem ascendente a passagem do bloco é opcional. Mas, para ordená-lo em ordem descendente, teremos passar o bloco informado a regra para a classificação:

Exemplos de classificação de Array unidimensional

Local aNomes := {;
“Vinicius”,;
“Aline”,;
“Marinaldo”,;
“Michele”,;
“Camara”,;
“Andre”,;
“Valeria”,;
“João”,;
“Adriana”;
}
Local aSvNomes := aClone( aNomes ) //Efetua a cópia do array
Local bSort

//Mostrando as informações do Array no Console
ConOut( “Lista de Nomes nao ordenados” )
ConOut( “” )
aEval( aNomes , { |cNome| ConOut( cNOme ) } )
ConOut( “” )

//Ordenando o Array Unidimensional em ordem ascendente sem
//utilizar o Bloco de Codificação:
aSort( aNomes )

//Mostrando as informações do Array no Console
ConOut( “Lista de Nomes ordenados sem Bloco” )
ConOut( “” )
aEval( aNomes , { |cNome| ConOut( cNOme ) } )
ConOut( “” )

aNomes := aClone( aSvNomes ) //Restaurando aNomes

//Mostrando as informações do Array no Console
ConOut( “Lista de Nomes nao ordenados” )
ConOut( “” )
aEval( aNomes , { |cNome| ConOut( cNOme ) } )
ConOut( “” )

//Monta Bloco para Classificação em Ordem Ascendente
bSort := { |x,y| x < y }
aSort( aNomes , NIL , NIL , bSort )

//Mostrando as informações do Array no Console
ConOut( “Lista de Nomes ordenados ( asc ) utilizando Bloco” )
ConOut( “” )
aEval( aNomes , { |cNome| ConOut( cNOme ) } )
ConOut( “” )

//Monta Bloco para Classificação em Ordem Descendente
bSort := { |x,y| x > y }
aSort( aNomes , NIL , NIL , bSort )

//Mostrando as informações do Array no Console
ConOut( “Lista de Nomes ordenados ( desc ) utilizando Bloco” )
ConOut( “” )
aEval( aNomes , { |cNome| ConOut( cNOme ) } )
ConOut( “” )

aNomes := aClone( aSvNomes ) //Restaurando a Nomes

//Mostrando as informações do Array no Console
ConOut( “Lista de Nomes nao ordenados” )
ConOut( “” )
aEval( aNomes , { |cNome| ConOut( cNOme ) } )
ConOut( “” )

//Ordenando o Array em ordem Ascendente considerando apenas //alguns elementos
aSort( aNomes , 1 , 3 , { |x,y| x < y } )
//Mostrando as informações do Array no Console
ConOut( “Lista de Nomes Ordenados. Elem 1 a 3” )
ConOut( “” )
aEval( aNomes , { |cNome| ConOut( cNOme ) } )
ConOut( “” )

Exemplos de classificação de Array Bidimensional:

Local aStru := {;
{ "SNome" , "C" , 10 , 0 },;
{ "PNome" , "C" , 10 , 0 },;
{ "Ender1" , "C" , 30 , 0 },;
{ "Ender2" , "C" , 40 , 0 } ;
}
Local aSvStru := aClone( aStru ) //Efetua a cópia do array
Local bSort

/Mostrando as informações do Array no Console
ConOut( "Lista nao ordenada" )
ConOut( “” )
aEval( aStru , { |aElem| ConOut( aElem[1] ) } )
ConOut( “’ )

//Definindo bloco para ordenacao ascendente
bSort := { |x,y| x[1] < y[1] }

//Ordenando Array
aSort( aStru , NIL , NIL , bSort )

//Mostrando as informações do Array no Console
ConOut( "Lista ordenada ascendente" )
ConOut( "" )
aEval( aStru , { |aElem| ConOut( aElem[1] ) } )
ConOut( "" )

//Definindo bloco para ordenacao descendente
bSort := { |x,y| x[1] > y[1] }

//Ordenando Array
aSort( aStru , NIL , NIL , bSort )

//Mostrando as informações do Array no Console
ConOut( "Lista ordenada descendente" )
ConOut( “” )
aEval( aStru , { |aElem| ConOut( aElem[1] ) } )
ConOut( “” )

Comentários

Postagens mais visitadas