Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: 🚀 **Integração do Protocolo MCP com Harbour: Um Novo Horizonte para Aplicações Desktop/Web**

_Créditos das imagens: Grok 🚀 **Integração do Protocolo MCP com Harbour: Um Novo Horizonte para Aplicações Desktop/Web** 🧠 O Protocolo de Contexto de Modelo (MCP) está transformando a maneira como modelos de linguagem interagem com dados e ferramentas externas. 📢 Recentemente, a comunidade Harbour deu um passo significativo ao integrar o MCP em aplicações desktop. 💡 **O que é o MCP?** Desenvolvido pela Anthropic, o MCP é um protocolo aberto que padroniza a forma como aplicações fornecem contexto a modelos de linguagem. Pense nele como uma porta USB-C para aplicações de IA, permitindo conexões consistentes com diversas fontes de dados e ferramentas. 🛠️ **Implementação no Harbour** No fórum da FiveTech, Antonio Linares compartilhou um exemplo prático de um servidor MCP implementado em Harbour. Este servidor utiliza JSON-RPC para comunicação e expõe ferramentas como `get_time` e `hb_version`, demonstrando a capacidade do Harbour de se integrar com protocolos modernos de...

BlackTDN :: Técnica de Multiplicação Chinesa :: Solução em Harbour/xBase

_Créditos das imagens: ChatGPT
# Técnica de Multiplicação Chinesa :: Solução em Harbour/xBase

A multiplicação chinesa é uma técnica antiga e surpreendente para realizar multiplicações que foge do método tradicional ensinado nas escolas. Recentemente, tive a oportunidade de explorar duas implementações desta técnica na linguagem Harbour, disponíveis gratuitamente no repositório [naldodj-xbase-leetcode-solutions](https://github.com/naldodj/naldodj-xbase-leetcode-solutions). Essa implementação, que chamamos de “brinde”, destaca-se pela originalidade e pela forma elegante de resolver o problema, especialmente considerando que, até onde se sabe, nenhum desafio popular (como os do LeetCode) aborda este método.

## O Conceito da Multiplicação Chinesa

A técnica de multiplicação chinesa baseia-se na disposição dos dígitos dos números a serem multiplicados em uma espécie de grade ou matriz. Cada célula dessa grade representa o produto parcial dos dígitos correspondentes. Em seguida, esses produtos são somados seguindo diagonais que se formam na matriz, onde cada diagonal acumula os produtos que, juntos, compõem as casas decimais do resultado final. Essa abordagem permite que o “vai um” (carry) seja processado de forma ordenada, culminando no valor final da multiplicação.

## Implementação em Harbour

Nas duas versões da implementação encontradas, o autor utiliza o Harbour para manipular strings e arrays, o que facilita o trabalho com números muito grandes – algo importante para cálculos que exigem alta precisão.

### Principais Pontos das Implementações

- **Definição de Casos de Teste:** Ambas as implementações começam definindo diversos casos de teste, onde os números são passados como strings. Isso possibilita testar a função de multiplicação com números de diferentes tamanhos, garantindo robustez.
- **Construção da Matriz:** O algoritmo monta uma matriz onde cada elemento é o resultado da multiplicação entre dígitos individuais dos dois números.
- **Soma das Diagonais:** Uma vez formada a matriz, os produtos são somados diagonalmente. Essa soma leva em conta o “vai um”, o que é processado a partir da diagonal menos significativa até a mais significativa.
- **Conversão para String:** Por fim, o resultado é convertido para uma string, representando o produto final da multiplicação.

### Diferenças entre as Duas Versões

Apesar de ambas as versões seguirem a mesma lógica geral, elas apresentam diferenças sutis na organização e otimização do código. Essas variações demonstram a flexibilidade da linguagem Harbour e como diferentes abordagens podem levar ao mesmo resultado com elegância e eficiência.

## Exemplo Prático: Diagrama da Multiplicação

Para ilustrar o processo, vejamos um exemplo simples utilizando os números **23** e **45**:

### Passo 1: Calcular os Produtos Parciais

Organize os dígitos dos dois números em uma grade:

```
       2     3
     -----------
 4 |   2×4   2×5
   |   =8    =10
     -----------
 5 |   3×4   3×5
   |   =12   =15
```

### Passo 2: Agrupar os Produtos pelas Diagonais

Os produtos são somados conforme as diagonais formadas na grade:

- **Diagonal 1 (canto inferior direito):** Apenas o produto 15.
- **Diagonal 2 (centro):** Soma de 10 (superior direito) e 12 (inferior esquerdo) → **10 + 12 = 22**.
- **Diagonal 3 (canto superior esquerdo):** Apenas o produto 8.

### Passo 3: Processar os “Vai Um” (Carry)

Os valores das diagonais são processados da direita para a esquerda:

1. **Diagonal 1:** 15  
   - Dígito: 15 mod 10 = **5**  
   - Vai um: 15 div 10 = **1**

2. **Diagonal 2:** 22 + 1 (carry) = 23  
   - Dígito: 23 mod 10 = **3**  
   - Vai um: 23 div 10 = **2**

3. **Diagonal 3:** 8 + 2 (carry) = 10  
   - Dígito: 10 mod 10 = **0**  
   - Vai um: 10 div 10 = **1**

4. **Vai um Final:** O restante é **1**, que é colocado à esquerda.

### Passo 4: Montar o Resultado Final

Concatenando os dígitos (da esquerda para a direita): **1**, **0**, **3**, **5** → O resultado final é **1035**, que é o produto de 23 por 45.

## Onde Encontrar o Código

Você pode conferir os detalhes completos das implementações diretamente nos seguintes links:

- [README da Multiplicação Chinesa](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/hb/_00/gifts/001-chinese_multiplication/README.md)  
- [Implementação 1 (.prg)](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/hb/_00/gifts/001-chinese_multiplication/chinese_multiplication.1.prg)  
- [Implementação 2 (.prg)](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/hb/_00/gifts/001-chinese_multiplication/chinese_multiplication.2.prg)  

## Conclusão

A técnica de multiplicação chinesa é um excelente exemplo de como métodos antigos podem ser reaproveitados em contextos modernos, especialmente em linguagens como o Harbour, que permitem manipular números grandes e complexos com facilidade. Este “brinde” no repositório naldodj-xbase-leetcode-solutions é uma verdadeira celebração da criatividade na programação, oferecendo aos entusiastas de tecnologia uma nova perspectiva sobre a resolução de problemas clássicos.

---

**Hashtags:**  
#Tecnologia, #Harbour, #MultiplicaçãoChinesa, #Programação, #XBase, #Algoritmos, #Desenvolvimento, #CódigoAberto, #Inovação, #BrindeTech

Comentários

Postagens mais visitadas