Usar os predicados integrados, a sequência de metas ou especificar uma meta no prompt do sistema teria pouco valor por si só. Para escrever um programa Prolog, primeiro o usuário deve escrever um programa escrito na linguagem Prolog, carregar esse programa e então especificar uma sequência de um ou mais objetivos no prompt.
Para criar um programa em Prolog, a maneira mais simples é digitá-lo no editor de texto e salvá-lo como um arquivo de texto como prolog1.pl .
O exemplo a seguir mostra um programa simples de Prolog. O programa contém três componentes, conhecidos como cláusulas. Cada cláusula é encerrada com um ponto final.
dog(rottweiler). cat(munchkin). animal(A) :- cat(A).
Usando o predicado integrado ' consultar' , o programa acima pode ser carregado no sistema Prolog.
?-consultar('prolog1.pl').
Isso mostra que o arquivo prolog1.pl existe e que o programa prolog está sistemicamente correto, o que significa que possui cláusulas válidas, o objetivo será bem-sucedido e, para confirmar se o programa foi lido corretamente, ele produz uma ou mais linhas de saída. por exemplo.,
?-
# 0,00 segundos para consultar prolog1.pl
?-
tabela de reação
A alternativa de 'consultar' é 'Carregar', que existirá na opção de menu caso o sistema Prolog possua interface gráfica de usuário.
Quando o programa é carregado, a cláusula será colocada em uma área de armazenamento, e essa área de armazenamento é conhecida como banco de dados Prolog. Em resposta ao prompt do sistema, especifique uma sequência de objetivos e isso fará com que o Prolog procure e use as cláusulas necessárias para avaliar os objetivos.
Terminologia
No programa a seguir, três linhas mostram as cláusulas.
dog(rottweiler). cat(munchkin). animal(A) :- cat(A).
Usando o ponto final, cada cláusula será encerrada. Os programas Prolog possuem uma sequência de cláusulas. Fatos ou regras são descritos por estas cláusulas.
Exemplo de fatos é cachorro (rottweiler) e gato (pequenino) . Eles querem dizer que ' rottweiler é um cachorro' e ' pequenininho é um gato'.
Cachorro é chamado de predicado. Dog contém um argumento. Palavra ' rottweiler' entre colchetes ( ). Rottweiler é chamado de átomo.
O exemplo de regra é a linha final do programa.
animal(A) :- dog(A).
O caractere dois pontos (:-) será lido como 'if'. Aqui A é uma variável e representa qualquer valor. Naturalmente, a regra pode ser lida como “Se A é um animal, então A é um cachorro”.
A cláusula acima mostra que o rottweiler é um animal. Tal dedução também pode ser feita pelo Prolog:
?- animal(rottweiler).
sim
Para implicar isso pequenininho é um animal, não há nenhuma evidência disso.
?- animal(pequenino).
Não
Mais terminologia
Avaliar um termo de meta determina se ele é satisfeito ou não. Isso também significa que a meta é avaliada como verdadeira ou falsa.
Observe que quando um usuário insere uma meta, às vezes ela pode ser interpretada como um comando. Por exemplo,
?-parar. 'É usado para sair do sistema Prolog.'
Às vezes, pode ser considerado uma pergunta como,
?- animal(rottweiler). & 'O rottweiler é um animal?'
O programa a seguir mostra outro exemplo sobre animais. É composto por oito cláusulas. O comentário é mostrado por todo o texto entre /* e */.
/* Another Program of Animal */ Dog(rottweiler). cat(sphynx). dog(poodle). dog(bulldog). cat(bengal). dog(dobermann). cat(himalayan). cat(singapura). /* This Prolog program consists of various clauses. It is always terminated using the full stop.*/
O predicado cão e o predicado gato têm quatro cláusulas. Suponha que em um arquivo de texto 'animal.pl', o programa foi salvo e a saída é gerada ao carregar o programa e no prompt do sistema, estamos inserindo uma sequência de objetivos como segue:
?- consultar('animais1.pl'). Alerta do sistema
# 0,01 segundos para consultar Animals.pl Animals.pl carregado usando a consulta
?- cachorro(rottweiler).
sim
?- cachorro (boxeador).
Não
?- cachorro(A).
A = pausa do rottweiler - a tecla de retorno é pressionada pelo usuário
?- cachorro(B).
B = rottweiler; pausas? usuário pressiona;
B = poodle; pausas? usuário pressiona;
B = buldogue; pausas? usuário pressiona;
B = dobermann Sem pausa? Irá para a próxima linha
?- gato(A). A = esfinge; pausa ? prensas do usuário;
A = Bengala faz uma pausa? usuário pressiona retornar
?- ouvindo(cachorro). Ele listará todas as cláusulas que definem o predicado dog
/* cachorro/1 */
cachorro(rottweiler).
cachorro(caniche).
cachorro(buldogue).
cachorro(dobermann).
sim
?-
Neste exemplo, vários novos recursos do Prolog são introduzidos. A consulta é a seguinte:
?- cachorro(A).
Significa que encontre o valor de A e será o nome do cachorro. A resposta do Prolog é a seguinte:
A = rottweiler
Outras respostas possíveis de A são as seguintes, poodle, bulldog, dobermann. Isso causará uma pausa no Prolog e, por causa disso, teremos que esperar que o usuário pressione a tecla 'return' antes de exibir o prompt do sistema ?-.
Podemos inserir a próxima consulta da seguinte forma:
?- cachorro(B).
Esta consulta é a mesma de antes. A consulta acima significa que 'encontre o valor de B e será o nome de um cachorro'. A resposta do Prolog é a seguinte:
B = rottweiler
cidades na Austrália
O Prolog irá pausar novamente. Desta vez, a tecla ponto-e-vírgula (;) é pressionada pelo usuário. Agora o Prolog encontrará um valor alternativo de B que satisfaça o objetivo dog(B). Ele responderá da seguinte forma:
B = poodle
O Prolog irá pausar novamente. A tecla ponto e vírgula (;) é novamente pressionada pelo usuário. Prolog produz uma solução adicional como segue:
B = buldogue
O Prolog irá pausar novamente. A tecla ponto e vírgula (;) é novamente pressionada pelo usuário. Prolog produz uma solução adicional como segue:
B = dobermann
O Prolog reconhece que não há mais solução disponível não pausando, mas sim o prompt do sistema ?- indo imediatamente para a saída.
Um novo predicado integrado é introduzido neste exemplo. Especificando o objetivo
?- listagem (cachorro)
No objetivo acima, o Prolog listará todas as quatro cláusulas que definem o predicado dog. Eles serão definidos na mesma ordem em que foram carregados no banco de dados.
O uso de variáveis na consulta é mostrado no exemplo a seguir. A sequência do objetivo é a seguinte:
?-gato(A),cachorro(B).
Isso nos dará todas as combinações possíveis de gato e cachorro.
?-gato(A),cachorro(B).
A = esfinge,
B = rottweiler;
A = esfinge,
B = poodle;
atalhos de teclado linux
A = esfinge,
B = buldogue;
A = esfinge,
B = dobermann;
etc.
Em contraste, a sequência do objetivo é a seguinte:
?-gato(A), cachorro(A).
Isso fornecerá todos os animais que são um gato e um cachorro (no banco de dados não existe tal animal). Aqui A é 'qualquer valor' em cat(A) e dog(A), mas ambos devem ter o mesmo valor.
?-gato(A),cachorro(A).
Não