Parceiros
- CSS para Web Design
- S.O.S Designers
- Slackware-Brasil
- Crie seu Web site
- Oficina da Net
|
|
O que é PrologEstudaremos um caso de linguagem orientada à programação lógica ( cálculo de predicados ): Prolog.
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.
Autoria e outras referências sobre este artigo
Manuais relacionados com este artigo
Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo: + Entrar em Internet + Entrar em Programação
Comentários dos visitantes Os comentários dos visitantes são para ampliar a informação do artigo. Todos podem participar.
|