Pesquisa Apresentada à Disciplina de Lógica Aplicada a Computação para Fins Avaliativos
Por: Vinicius Mota • 10/2/2020 • Trabalho acadêmico • 1.785 Palavras (8 Páginas) • 202 Visualizações
[pic 1]
UNIVERSIDADE ESTADUAL DO SUDOESTE DA BAHIA – UESB
VINICIUS MOTA SANTANA
GUILHERME COSTA OLIVEIRA
PROLOG
Jequié - BA
2019
Universidade Estadual do Sudoeste da Bahia – UESB
Vinicius Mota Santana
Guilherme Costa Oliveira
PROLOG
Pesquisa apresentada à disciplina de Lógica Aplicada a Computação para fins avaliativos.
Jequié - BA
2019
Introdução
A linguagem de programação PROLOG foi criada por Alain Colmareur e seus colegas Robert Pasero, Jean Trudel, Philippe Roussel e posteriormente Robert Kowalski, na Universidade de Marseille, França, entre o fim do ano de 1971 e sendo finalizado definitivamente em 1973. O termo PROLOG é uma abreviação provinda da expressão inglesa “Programming in Logic”, tendo como maior notoriedade o trabalho voltado para linguística computacional e inteligência artificial.
Essa linguagem de programação é implementada sobre um paradigma lógico, cuja base é o Cálculo dos Predicados ou Lógica de 1° Ordem (LPO). As limitações da completude e corretude da LPO são contornadas com um método de prova sistemático e completo. PROLOG é uma linguagem de aprendizado fácil, pois, diferentemente de linguagens de programação com orientação a objetos, ela é uma linguagem declarativa, desta forma, ela mostra como o problema proposto deve ser resolvido por meio de fatos e regras lógicas.
Os programas em linguagens de programação orientadas a objetos estipulam como o computador chegará à solução, contudo os programas em PROLOG são baseados por fatos, regras e consultas. Esses programas são baseados em três passos principais: a declaração de alguns fatos sobre objetos e como se relacionam, definir regras sobre o relacionamento dos objetos e a consulta desses relacionamentos.
A estrutura de um fato é dada por um predicado, seus argumentos (objetos) e sempre se coloca um ponto quando deseja finalizar a instrução.
predicado(argumento1,argumento2,...).
O predicado é como os elementos vão interagir então se estabelecermos um fato do seguinte tipo: “progenitor(joão,josé).” “progenitor” é o nome da relação e “joão e josé” são seus argumentos.
Já as regras são utilizadas para fazer construções de questões mais complexas, elas fazem um relacionamento entre dois ou mais fatos. Para utilizar das regras, usa-se o símbolo “ :- ” o qual indica a condição ‘se’. Exemplificando a utilização das regras temos o seguinte exemplo:
Fatos:
pai(felipe,fábio).
pai(felipe,marco).
pai(marco,joão).
pai(fábio,roberto)
Regra:
“avo(X,Y):-pai(X,Y),pai(Y,Z).” Ou seja, se uma pessoa pai de uma pessoa, que é pai de outra pessoa, então ele é avô. Para conferir a regra do exemplo citado, temos:
?-avo(felipe,joao),avo(felipe,roberto).
A saída do programa será “YES”, já que “felipe” é avô de “roberto” e de “joão”, pois “felipe” é pai dos pais de “roberto” e de “joão”.
Assim como em outras linguagens de programação, PROLOG também possui variáveis, entretanto nessa linguagem as variáveis não são espaços da memória vazios onde pode-se atribuir qualquer valor, mas sim uma incógnita que quando tem seu valor determinado não pode ser alterado.
Características
- Linguagem orientada ao processamento de símbolos (termos).
- Construções matemáticas abstratas, como os autômatos, podem frequentemente ser traduzidas diretamente para especificações executáveis em PROLOG.
- Apresenta uma semântica declarativa inerente a uma lógica.
- Permite a definição de programas reversíveis, isto é, programas que não fazem distinção entre os argumentos de entrada e saída.
- Um nome de variável pode ser utilizado para denotar mais de uma variável diferente
- Permite a obtenção de respostas alternativas.
- Suporta naturalmente código recursivo e iterativo para a descrição de processos e problemas, dispensando mecanismos tradicionais de controle, tais como comandos de repetição.
- Três tipos de semântica são atribuídos aos programas PROLOG: declarativa, procedimental e operacional.
- Permite associar o processo de especificação ao processo de codificação de programas.
Tipos de Ferramentas Existentes
⦁ YAP (Yet Another Prolog) - Implementação de Prolog, possui apenas o modo de interpretação;
⦁ XSB - Prover uma abordagem alternativa para criar sistemas de banco de dados dedutivos;
⦁ SWI Prolog - Projetado para ser simples e compacto;
⦁ SICStus Prolog - Implementa alguns recursos adicionais como o corte, predicados aritméticos, testes de tipo, além de ter suporte para coleta de lixo, corrotinas e manipulação de interrupções;
⦁ Parma - Compilador Prolog experimental para arquitetura MIPS. O componente mais importante do Parma é a fase de análise global, que examina o programa como um todo;
⦁ GNU Prolog - Sistema fornece dois modos de execução: interpretado e nativo;
⦁ Aquarius - Foi primeiro sistema a compilar código nativo sem um estágio intermediário baseado na WAM;
⦁ BinProlog - Capaz de interpretar, gerar código C/C++ ou ainda gerar código executável;
⦁ Ciao Prolog - Ambiente de programação multi-paradigma desenvolvido na Universidade Politécnica de Madri. Foi inicialmente projetado para transformar código Prolog para C;
⦁ Quintus Prolog - Própria para aplicações comerciais e projetos de pesquisa que requerem ferramentas de software confiáveis;
...