Aula 9

Prolog

prolog interativo online

1 banco de conhecimentos?

pai(alberto,beatriz).
pai(alberto,carlos).
pai(alberto,denise).
pai(carlos,everton).
pai(carlos,fabio).
pai(fabio,guilherme).

Perguntas (query)

?- pai(X,everton).

?- pai(carlos,Z).

?- pai(A,B).

?- pai(A,B),pai(B,C).

2 regras

avo(A,B) :- pai(A,X),pai(X,B).

irmao(A,B) :- pai(X,A),pai(X,B). %  tem um problema

3 Exercicios

Assuma os fatos/predicados

filme(Nome,Ano). O filem Nome foi lancado no ano Ano
ator(Filme, Pernsonagem, Ator). O ator Ator fez o papel do Personagem no Filme
atriz(Filme, Personagem, Atriz).  idem
diretor(Filme, Diretor).    Diretor dirigiu o Filme
  • filmes lançados depois de 2010
  • atores que dirigiram filmes
  • atores ou atrizes que dirigiram filmes
  • atrizes que dirigiram a si proprias
  • filmes onde alberto e teresa foram co-estrelas
  • atores ou atrizes que atuaram como eles mesmos num filme

4 OU

A ; B

(A ; B) , C
?- (ator(F,Z,A) ; atriz(F,Z,A)) , diretor(F,A).

Duas regras funcionam como um OU delas

autodiretor(X) :- ator(F,Z,X), diretor(F,X).
autodiretor(X) :- atriz(F,Z,X), diretor(F,X).

autodiretor2(X) :- (ator(F,Z,X) ; atriz(F,H,X)) , diretor(F,X).

5 undersocore

Um underscore _ é uma variavel cujo valor deve ser descartado/não interessa.

autodiretor(X) :- ator(F,_,X), diretor(F,X).
autodiretor(X) :- atriz(F,_,X), diretor(F,X).

autodiretor2(X) :- (ator(F,_,X) ; atriz(F,_,X)) , diretor(F,X).

6 NAO

  • filmes sem atrizes
  • diretores que nunca foram atores
  • atores que nao trabalham desde 2000, mas trabalharam antes de 2000.
?- filme(F,_), \+ atriz(F,_,_)

?- diretor(_,D), \+ator(_,_,D).

7 Diferente

A \= B ou

\+ (A=B)
  • Corrigir o predicado de irmao

8 Recursão

Definir o predicado antecessor

antecessor(A,B) :- pai(A,B).
antecessor(A,B) :- pai(A,X), antecessor(X,B).

9 Exercicios

dado os predicados

pai(pai,filho/a).
mae(mae,filho/a).
masc(m) se m é masculino
fem(f) se f é feminino

definir os predicados

  • primo/a em primeiro grau
  • irmaos/asinteiro (de mesmo pai e mesma mae independente do genero dos irmaos)
  • meioirmaos/as (só de pai ou de mae mas nao de ambos)
  • erro1(X) - se X um pai feminino ou uma mae masculina
  • erro2(X) - se X é ao mesmo tempo pai e mae de alguem
  • erro3(X) - se X é ao mesmo tempo masculino e feminino
  • decmasc(A,B) se existe uma sequencia de pais de A para B e B é masculino (sequencia de herança do cromossomo Y).
  • descfem(A,B) se existe um sequencia de mae de A para B (nao importa o genero de B) (sequencia de herança do dna mitocondrial).

Usando o banco de dados de filmes. https://swish.swi-prolog.org/example/movies.pl tem um banco de dados desse tipo de filmes (mas acho que a ordem dos argumentos de atriz e ator nao sao os mesmos que eu falei).

  • atores ou atrizes que viraram diretores e nunca mais voltaram a atuar
  • atores que trabalharam em um so filme
  • atores que trabalharam por apenas 1 ano
  • filme one mais de um ator faz o mesmo papel
  • filme on

Author: Jacques Wainer

Created: 2018-03-28 Wed 12:33

Validate