Aplicação Prática com Estrutura

Uma das aplicações mais elegantes das estruturas em Prolog é a modelagem de objetos geométricos. Usando functors aninhados, podemos representar pontos, linhas, triângulos e outras figuras, e então verificar propriedades através de unificação e casamento de padrões. Vamos explorar essa aplicação passo a passo.

1. Modelagem Geométrica

Primeiro, definimos as estruturas básicas:

Essas estruturas podem ser aninhadas. Por exemplo, uma linha é definida por dois pontos:

2. Diagrama dos Objetos Geométricos

Visualize os objetos no plano cartesiano:

3. Programa 5.6: Vertical e Horizontal

Vamos definir predicados para identificar linhas verticais e horizontais usando apenas casamento de padrões e unificação:

Observe a elegância dessas definições:

  • Não há loops, comparações ou cálculos.
  • Apenas casamento de padrões com a estrutura linha(ponto(X,_), ponto(X,_)).
  • O Prolog unifica automaticamente as coordenadas X.

4. Consultas com Vertical e Horizontal

Teste 1: Linha Vertical

A unificação verifica que X=1 em ambos os pontos → linha vertical.

Teste 2: Linha Não Vertical

X é diferente (1 ≠ 2) → não é vertical.

Teste 3: Linha Horizontal com Variável

O Prolog descobre que Y deve ser 1 para que a linha seja horizontal.

5. Consultas Mais Complexas

“Existe uma linha vertical com extremo em (2,3)?”

O Prolog responde com uma solução genérica: o segundo ponto deve ter a mesma coordenada X=2, mas Y pode ser qualquer valor (_ é uma variável não instanciada).

“Existe uma linha que seja vertical e horizontal ao mesmo tempo?”

6. Exercícios do PDF: Retângulos e Quadrados

Exercício: Definir regular/1

Um retângulo regular tem lados verticais e horizontais. Podemos definir:

Exercício: Definir quadrado/1

Um quadrado é um retângulo com lados iguais. Podemos estender a definição:

Testando as Definições

7. O Poder da Unificação com Estruturas

A magia por trás dessas definições é a unificação. Observe:

Essa capacidade de gerar respostas parciais (com variáveis) é uma das características mais poderosas do Prolog. Ela permite que o sistema derive propriedades sem que precisemos especificar todos os detalhes.

8. Diagrama: Retângulo e Quadrado

Visualize as definições:

9. Exercícios Adicionais

  1. Paralelogramo: Defina paralelogramo/1 para uma lista de 4 pontos onde lados opostos são paralelos.
  2. Losango: Defina losango/1 como um paralelogramo com todos os lados iguais.
  3. Ponto médio: Defina ponto_medio(P1, P2, M) onde M é o ponto médio entre P1 e P2.
  4. Comprimento: Defina comprimento(linha(P1,P2), C) que calcula o comprimento da linha.
  5. Circunferência: Defina uma estrutura circulo(Centro, Raio) e predicados para verificar se um ponto pertence à circunferência.

10. Conclusão

Este exemplo mostra como estruturas + padrões criam uma base poderosa para programação declarativa:

  • Estruturas modelam dados complexos (pontos, linhas, figuras).
  • Padrões (casamento de estruturas) permitem verificar propriedades.
  • Unificação gera respostas genéricas e parciais.
  • Recursão permite explorar figuras mais complexas.

Essa abordagem elimina a necessidade de loops, índices ou estruturas de controle complexas. O código é legível, conciso e expressivo — exatamente como a programação lógica deve ser.

Deixe um comentário