Académique Documents
Professionnel Documents
Culture Documents
Rodrigo de Moraes
UNISINOS – Universidade do Vale dos Sinos
Av. Unisinos, 950, São Leopoldo, RS, Brasil
digao@sinos.net
2. Conceitos
A estrutura utilizada para a programação em
PROLOG resume-se em objetos e relações entre
objetos, para isso são utilizadas declarações de
fatos, chamados também de predicados,
afirmações que o programador impõe ao Figura 1 - PROLOG básico.
programa, declaradas com um ponto final no
fim da linha, definições de regras, ou seja, 2.1 Objetos
quando um fato depende de outro fato e
consulta sobre as relações entre objetos, Como se pode perceber, os objetos são as
declaradas com “:-” no meio da relação (Figura personagens dessa programação, são eles que
1)[2]. são alguma coisa ou que fazem alguma coisa,
1
que podem ser escritos de duas maneiras, em dada a base de dados:
formas de átomos ou de estruturas. /* *fatos **/
Na forma de átomos um objeto pode ainda fica-em(sao-paulo,brasil).
ser declarado de forma constante, ou seja, fica-em(paris,frança).
definida, como, brasil ou ‘Paulo’ ou ainda um fica-em(grenoble,frança).
número inteiro. Além da forma definida o nasceu-em(joao,sao-paulo).
objeto pode ser uma variável como por nasceu-em(jean,paris).
exemplo: País, porém o conceito “variável” não nasceu-em(louis,grenoble).
é o mesmo do que no paradigma imperativo ou /** regra* */
orientado a objetos, em PROLOG uma variável patria-de(X,Y):-nasceu-em(X,Z),fica-em(Z,Y).
apenas aponta, representa, um ou mais objetos
sem importar seu tipo com o objetivo de as seguintes consultas têm como respostas:
estabelecer relações entre objetos mais
facilmente (Figura 2) e não pode ser alteradas ?-patria-de(louis,P).
no decorrer da execução do programa. P=frança
Em formas de estruturas um objeto é ?-patria-de(joao,brasil).
declarado juntamente com suas definições, Yes
como foi o caso de pluto ser um cachorro
(Figura 1), porém elas podem estabelecer mais A regra estabelece que “patria-de” é uma
de um conceito de uma só vez (Figura 2). relação dependente das relações “nasceu-em” e
“fica-em”, e mostra como os itens da relação
“patria-de” se relacionam com os itens das
outras relações [4].
3. Busca e Recursividade
nesse caso o fato seria a condição de para de ou inteiros), caractere ASCII, strings e dados
uma “while” em uma programação imperativa. formados.
As entradas e saídas de termos tem como
comandos o “read(termo)”, que lê um termo a
partir do dispositivo padrão de entrada, o
“write(termo)”, escreve no dispositivo padrão
de saída e o “display(termo)” que escreve um
termo em um forma prefixada.
Para que esse termo seja lido ou escrito de
forma correta é preciso obedecer algumas
Figura 3 - Recursividade
regras, como por exemplo quando é necessários
ler de um teclado, o “.” e o sinal de transmissão
marcam o fim do termo. Átomos que contenham
4. Predicados Pré-Definidos
predicados que iniciam em letra maiúscula,
contenham espaços ou quando uma variável não
Além dos predicados que podemos criar para aponta para nenhum objeto necessitam ser
a associação de objetos, a linguagem apresenta colocados entre apóstrofes e
outros predicados pré-definidos como para: A entrada e saída de caracteres se difere por
entrada e saída de dados, manipulação da base ler e ou escrever um caractere por vez,
de dados, controle de retrocesso, operações fornecendo meios mais naturais para esse tipo
aritméticas (veja alguns exemplos na Tabela 1) de linguagem, sendo utilizados os comandos:
e manipulação de termos (alguns exemplos “get0(caractere)”, que lê um caractere e verifica
Tabela 2) [4]. se o próximo caractere a ser lido é igual,
retornando sucesso ou falha, “get(caractere)”,
X>Y Sucede se X for maior que Y. simplesmente lê um caractere e “put(caractere)”,
X<Y Sucede se X for menor que Y. que escreve um caractere no dispositivo padrão
X >= Y Sucede se X for maior ou igual a Y. de sida.
X =< Y Sucede se X for menor ou igual a Y. Outros dois comandos utilizados para a
X =:= Sucede se X for igual a Y. manipulação de caracteres é o “ln” que faz com
Y que a próxima saída no dispositivo seja escrita
X =\= Sucede se X for diferente de Y. na próxima linha e o tab(número), para dar
Y tabulação a linha.
Tabela 1 – Predicados de operações aritméticas. Esses comandos também podem ser
utilizados na manipulação de dados que estão
var(X) Sucede se X é uma variável não em um arquivo, porém é preciso adicionar o
instanciada. apontador de “arquivo(AA)”, número associado
nonvar(X) Determina se X é uma variável ao arquivo pela linguagem, na sintaxe do
anônima. comando antes do termo ou caractere, por
atom(X) Sucede quando X está exemplo: “get(AA, caractere)” ou “read(AA,
representando um átomo Prolog. termo)”. Além dos comandos já mencionados,
integer(X) Sucede quando X está ainda temos o “open(AA,Arquivo,Modo)”, onde
representando um número o modo pode ser de somente leitura, somente
inteiro. escrita ou ambos, “colose(AA)”, fecha o
atomic(X) Sucede quando X está arquivo e o “create(AA,Arquivo)”, que cria e
representando um átomo ou um abre para gravação um arquivo.
inteiro.
X=Y Sucede se X é unificável com Y. 4.2 Manipulação da Base de Dados
X \= Y Sucede se X não é unificável
com Y. Estes predicados são utilizados para um
X == Y Sucede se X for equivalente a Y. melhor aproveitamento da base de dados. Eles
X \== Y Sucede se X não for equivalente permitem consultar um arquivo como base de
a Y. dados, gravar em um arquivo, listar os
Tabela 2 – Predicados de manipulação de termos predicados, editar regras e etc.
como por exemplo a base de dados de clientes
de uma empresa, onde ficam registrados todas
as operações e características desse cliente. Com
a linguagem pode-se criar um programa que
busque clientes que tenham uma combinação de
dados que resulta em uma conclusão favorável a
empresa.
Como exemplo pode-se ter uma empresa que
vende vários tipos de aço e a maioria dos
clientes que compram aço do tipo1 compram
aço do tipo2. Em cima de uma lógica aplicada
em um programa em PROLOG pode-se fazer
um programa que busque na base de dados,
clientes que comprem só um dos tipos para que
a empresa possa oferecer o outro tipo de aço.
6. Conclusão
Podemos perceber que o PROLOG é uma
linguagem muito poderosa que dispõe de vários
recursos e que está sendo utilizada em
tecnologias importantes, porém isoladas, o que
explica o fato de não ser popular como as
linguagens convencionais.
Este artigo apresentou o mecanismo de
funcionamento da linguagem e alguns recursos
que ela oferece, mas deixa em aberto algumas
estruturas mais complexas visando o objetivo de
introduzir de forma clara e básica o PROLOG.
7. Referências Bibliográficas
[1]Disponível em:
http://pt.wikipedia.org/wiki/Prolog, aceso em
01/06/08.
[2]Disponível em:
http://www.din.uem.br/ia/ferramen/prolog,
acesso em 01/06/08.
[3] Disponível em:
http://inf.unisinos.br/~barbosa/grefe/temas/tema
9/exemplos.zip (pais.pl), acesso em 06/06/08.
[4]Disponível em:
http://inf.unisinos.br/~barbosa/grefe/temas/tema
9/prolog.pdf, acesso em 01/06/08.
4