Pular para o conteúdo principal

Postagem em destaque

BlackTDN NEWS :: 2025.02.12 :: 22:09:23

_Créditos das imagens: ChatGPT # Essa é a primeira imagem gerada por IA protegida por direitos autorais **Fonte:** B9.com.br **Autor:** Carlos Merigo **Publicado em:** 2025-02-12T17:58:04Z ![Imagem](https://assets.b9.com.br/wp-content/uploads/2025/02/i-american-cheese.jpg) > A primeira obra de arte inteiramente gerada por inteligência artificial acaba de receber proteção de direitos autorais nos Estados Unidos. A imagem “A Single Piece of American Cheese”, criada por Kent Keirsey, CEO da Invoke, foi aprovada pelo U.S. Copyright O… [Leia mais](https://www.b9.com.br/171074/imagem-ia-recebe-protecao-direitos-autorais-american-cheese/) --- # SXSW 2025: Issa Rae, Hideo Kojima e elenco de “The Last of Us” estão entre os novos destaques confirmados **Fonte:** B9.com.br **Autor:** Carlos Merigo **Publicado em:** 2025-02-12T13:06:07Z ![Imagem](https://assets.b9.com.br/wp-content/uploads/2025/02/sxsw-pedro-pascal.jpg) > O SXSW anunciou uma nova leva de keynotes e palestrantes para...

BlackTDN :: Tips & Tricks : Otimizando aScan e aEval

tips-tricks

Pela minha experiência, sempre que vejo um fonte com as funções aScan e aEval elas estão escritas da seguinte forma:

aScan

aEval

nAT := aScan( aArr , { |x| x == y } )

aEval( aArr , { |x| aAdd(y,x) } )

Vamos observar, segundo o TDN, os parâmetros formais para cada uma dessas funções.

Função: aScan

Executa um bloco de código para cada elemento de um array.

aScan ( < aArray>, < ExpProcura>, [ nInicio], [ nQuant ] ) --> nRet
Nome Tipo Descrição Obrigatório Referência
aArray Vetor Indica o array a ser avaliado. Sim Não
ExpProcura Qualquer

Indica a expressão de busca. Para um array de dimensão simples, pode ser colocado diretamente um valor a ser procurado. Para uma busca mais complexa ou para uma busca em array muti-dimensional, deve ser especificado um bloco de código.

Sim Não
nInicio Numérico

Indica a partir de qual elemento será realizada busca. Por padrão a pesquisa inicia no elemento 1.

Não Não
nQuant Numérico

Indica por quantos elementos serão considerados na operação de busca. Caso não especificado, todos os elementos do array a partir da posição inicial de busca serão considerados.

Não Não

Função: aEVal

Percorre um array procurando por um valor especificado. Pode ser especificado um valor a ser buscado, ou pode ser informada uma condição de busca através de um bloco de código.

aEVal ( < aArray>, < bBloco>, [ nInicio], [ nQuant ] ) --> NIL
Nome Tipo Descrição Obrigatório Referência
aArray Vetor Indica o array a ser avaliado. Sim Não
bBloco Bloco de Código

Indica o bloco de código que será executado para cada elemento encontrado.

Sim Não
nInicio Numérico

Indica o elemento inicial. Caso não seja especificado, o padrão assumido será o elemento um.

Não Não
nQuant Numérico

Indica a quantidade de elementos que serão processados a partir do parâmetro nInicio. Caso não seja especificado, o padrão será todos os elementos do array.

Não Não

Normalmente os parâmetros nInicio e nQuant são omitidos mas, se bem utilizados poderão otimizar a pesquisa conforme exemplo abaixo.

Utilizarei fragmentos do código de GAME 15 para exemplificar.

aScan Exemplo de Otimização
aScan Exemplo de Otimização
aScan Exemplo de Otimização
aScan Exemplo de Otimização

 

magic_tips_and_tricks

Observem que na revisão anterior (em rosa) não utilizava, em aScan, os parâmetros nInico (nBL) e nQuant (nEL) forçando que a pesquisa sempre iniciasse em 1 e finalizasse, caso não encontrasse o elemento da procura, no último elemento do array. Um desperdício uma vez que sabemos o intervalo e o número de elementos para a pesquisa. Dessa forma, ao passarmos os valores para nInicio (nBL) e nQuant (nEL), tornamos a pesquisa em aScan muito mais otimizada.

O mesmo poderemos dizer para aEval(). Só que no caso de aEval desde a versão original de GAME 15 os parâmetros nInicio (nBL) e nQuant (nEL) foram passados. Oras, se sei a partir e quanto avaliar, porque avaliar o Array inteiro.

Observe:

aEval Exemplo de Otimização

Com isso restrinjo o intervalo para avaliação do Bloco de código tornando-a muito mais rápida, ou seja, otimizada.

Em resumo, utilizem os parâmetros nInicio e nQuant em aScan e aEval para otimizar o processo de pesquisa e avaliação.

Fica a dica.

[]s
иαldσ dj

Comentários

Postagens mais visitadas