Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: LeetCode 23: Mesclando K Listas Ordenadas com Harbour/xBase e Reutilização de Código

_Créditos das imagens: ChatGPT **Título:** LeetCode 23: Mesclando K Listas Ordenadas com Harbour/xBase e Reutilização de Código **Introdução** Olá, entusiastas de Harbour/xBase e desafios de programação! Depois de explorarmos como mesclar duas listas ordenadas no [nosso post sobre o LeetCode 21](https://www.blacktdn.com.br/2025/03/blacktdn-leetcode-21-merge-two-sorted.html), vamos dar um passo adiante e enfrentar um problema um pouco mais complexo: o LeetCode 23 - Merge K Sorted Lists. Neste artigo, vamos desvendar uma implementação em Harbour/xBase para este desafio, demonstrando como podemos inteligentemente reutilizar a solução que já construímos para o problema 21. Veremos como a modularidade e a construção sobre soluções anteriores podem simplificar problemas mais complexos. **O Problema: LeetCode 23 - Merge K Sorted Lists** O desafio é o seguinte: dado um array (`aLists` em nossa implementação) contendo `k` listas encadeadas, onde cada lista já está ordenada em ordem cres...

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

Operadores Unários:

O Advpl suporta um sinal negativo ( o chamado operador unário). Ele tem a maior prioridade entre os operadores aritméticos. Por Exemplo:

  • - 1 + 2
  • resulta 1 e não -3.
O Advpl suporta os operadores de incrementos e decrementos unários ++ e --. O Operador ++ acrescenta 1 a seu operando, -- subtrai 1. Ambos têm parceiros nas instruções regulares de atribuições. Exemplo:

nContador++ é idêntico a nContador := nContador + 1

Entretanto, a vantagem desses operadores unários é o fato de serem concisos e de poderem ser utilizados para deferir a operação até depois de processado o valor. Por Exemplo, para carregar um array de campo CPnome de cada registro de um banco de dados chamado Alunos, poderíamos escrever:

Local acPNomes
Local nContador := 1

Use Alunos

acPNomes := Array( RecCount() )
While ( Alunos )->( !Eof() )
acPNomes[ nContador++ ] := ( Alunos )->CPNOME
( Alunos )->( dbSkip() )
End While

O Subscrito do array usa o valor de nContador, depois acrescenta 1. Dizemos que o ++, neste caso, é um operador pós-determinado. Você pode usá-lo como um operador de prefixos, em cujo caso o valor será incrementado ANTES de ser usado. Por exemplo, a codificação anterior deixa o nContador com um valor superior em 1 unidade ao número de registros processados. Para deixá-lo com o valor real, poderíamos escrever:

Local acPNomes
Local nContador := 0

Use Alunos

acPNomes := Array( RecCount() )
While ( Alunos )->( !Eof() )
acPNomes[ ++nContador] := ( Alunos )->CPNOME
( Alunos )->( dbSkip() )
End While

No modo de prefixo, o computador aplica o incremento antes de usar o valor.

Comentários

Postagens mais visitadas