O que é Prolog

Estudaremos um caso de linguagem orientada à programação lógica ( cálculo de predicados ): Prolog.

Por Miguel Angel Alvarez - Tradução de JML


Publicado em: 03/11/04

Valorize este artigo:
Estudaremos um caso de linguagem orientada à programação lógica ( cálculo de predicados ): Prolog.
  • PROLOG está orientado à resolução de problemas mediante o cálculo de predicados, baseado em:
    • Perguntas à base de dados.
    • Provas matemáticas.
  • O programa PROLOG especifica como deve ser a solução, ao invés de dar o algarismo para sua resolução. A solução se obtém mediante busca aplicando a lógica de predicados.
História

  • Coulmerauer (1970) desenvolveu uma linguagem para fazer deduções de texto.
  • Aplica-se um mecanismo de resolução sobre predicados especiais, cláusulas de Horn, chamado unificação.
  • A difusão da linguagem se produziu nos anos 80, mas de forma muito limitada devido à falta de aplicações em tal linguagem.
Perspectiva da linguagem

  • O programa prolog se compõem de fatos (dados) e um conjunto de regras, ou seja, relações entre objetos da base de dados.
  • A execução do programa carregado em memória consiste em realizar uma pergunta de forma interativa: o intérprete gerará por inferência os resultados que se deduzem a partir do conteúdo da base de dados.
  • PROLOG tem uma sintaxe e semântica simples. Só busca relações entre os objetos criados, as variáveis e as listas, que são suas estruturas básicas.
  • Comentários entre /* */
Objetos de dados

  • Tipos de dados primitivos: variáveis e constantes:
    • Inteiros
    • Reais
    • Caracteres
    Os identificadores com minúscula representam fatos, os que vão com maiúscula variáveis. O alcance de uma variável é a regra onde aparece.
  • Tipos de dados estruturados:
    • Átomos: constantes e variáveis de cadeia.
    • Listas, representadas entre [ ].
  • Tipos definidos pelo usuário. As regras para definir relações podem atuar como tipos de usuário.
Representação de armazenamento

  • As regras e fatos são armazenados na memória como listas enlaçadas.
  • A execução de prolog consiste em uma busca em profundidade de um diagrama contendo todas as possíveis soluções. Para cada uma delas se avaliará sua correção. A busca se pode fazer mais eficiente mediante a poda do diagrama de busca (corte).
Controle de seqüência

A ordem de avaliação é seqüencial.
  • Expressões, operações aritméticas e operadores relacionais. Not().
  • Enunciados
    • Fatos, relações que se expressam em uma consulta com um nome de predicado e uns argumentos.
    • Regras, implicações que se expressam em uma operação consult.
    • Perguntas, sucessão de términos que finalizam com um ponto.
    • Cortes, (!), força o retrocesso na busca. Isto pode impedir que se encontrem certas soluções, mas pode fazer mais eficiente a busca.
  • Entrada e saída, nl e write.
Subprogramas e gestão de armazenamento

  • PROLOG tem dois modos:
    • Modo consulta, introduzem-se novas relações (fatos) no armazenamento dinâmico da base de dados.
    • Modos pergunta, executa-se um intérprete baseado para avaliar as perguntas do usuário.
  • Alcance das variáveis:
    • Ambiente local de referência, todas as variáveis são locais à regra a qual estão definidas. A unificação faz interagir nomes locais de uma regra com os de outras regras.
    • Ambiente comum de referência, todos os dados são compartidos.
    • Passo de parâmetros, a unificação proporciona o passo de parâmetros entre regras.
  • Funções normais, já vão integradas na linguagem:
    • Consult(nomearquivo)
    • Fail, sempre fracassa.
    • See(nomearquivo), lê as entradas de um arquivo e as incorpora ao conjunto de regras.
    • Write(término).
    • Tell(término), re-orienta a saída do write ao arquivo.
    • Told, fecha o arquivo anterior.
    • Nl, quebra de linha.
    • Atom(X), devolve certo se X é um átomo.
    • Var(X), devolve certo se X é uma variável.
    • Integer(X), devolve certo se X é um inteiro.
    • Trace, ativa a depuração do programa.
Abstração e encapsulamento

PROLOG não proporciona estas capacidades.

Avaliação da linguagem

  • PROLOG vai bem para problemas de relações, p.e. Tratamento da linguagem natural, e consulta de bases de dados.
  • Apesar de ser possível desenvolver programas sem especificar o algarismo de resolução, às vezes há que utilizar outro tipo de programação para tornar os programas mais eficientes, e muitas vez se emprega o corte para limitar o espaço de busca.






Usuários :    login / registro
Manuais relacionados
Categorias relacionadas
O autor

Buscar projetos:

Home | Sobre nós | Copyright | Anuncie | Entrar em contato