Escolar Documentos
Profissional Documentos
Cultura Documentos
Inteligncia Artificial
Exerccios
Relembrando a introduo:
Exerccios pgs 22 e 23 Livro Palazzo
introducaoProgramacaoProlog_Palazzo.pdf 1.
Joo nasceu em Pelotas e Jean nasceu em Paris. Pelotas fica no Rio Grande do Sul. Paris fica na Frana. S gacho quem nasceu no Rio Grande do Sul.
2
Exerccios
1.
Resposta:
Exerccios
2.
Os corpos celeste dignos de nota so as estrelas, os planetas e os cometas. Vnus um corpo celeste, mas no uma estrela. Os cometas possuem cauda quando esto perto do sol. Vnus est perto do sol, mas no possui cauda.
4
Exerccios
2.
Resposta:
corpo_celeste(estrela). corpo_celeste(planeta). corpo_celeste(cometa). corpo_celeste(asteroide). digno_de_nota(Corpo_Celeste):corpo_celeste(Corpo_Celeste), (Corpo_Celeste == estrela ; Corpo_Celeste == planeta; Corpo_Celeste == cometa).
%Programa que deve ser criado: tipo/2 %tipo(Instancia_Corpo_Celeste, X). % + <arg1>: uma instncia de um corpo % celeste % - <arg2>: o tipo do corpo celeste tipo(venus,X):corpo_celeste(X), X \= estrela, esta_perto_sol(venus), not(possui_cauda(venus,X)),!. possui_cauda(X,Y):esta_perto_sol(X), Y == cometa. esta_perto_sol(venus).
Exerccios
3.
Assuma que arcos em um grafo dirigido representam custos e sejam descritos como arco(R,S,T), significando que h um arco de custo T entre R e S. Defina custo(U,V,L) existe um caminho de custo L entre U e V B E 2
3 2 A 4 C
6
5 4
D 5 F
Exerccios
3.
Resposta:
arco(a,b,3). arco(b,d,2). arco(a,d,5). arco(a,c,4). arco(c,d,4). arco(c,f,5). arco(d,e,2). arco(e,f,2). mais(X,Y,Z):Z is X + Y. custo(X,Y,T):arco(X,Y,T),!. custo(X,Y,T):arco(X,Z,T1),!, custo(Z,Y,T2), mais(T1,T2,T).
7
Variveis
Cadeias de letras, dgitos e caracter _, sempre comeando com maiscula ou _ Exemplos:
X Mapa_da_mina _nome
Objetos Estruturados
Objetos de dados com vrios componentes, podendo ser, cada um deles, por sua vez, uma estrutura Todas os objetos estruturados em Prolog so rvores tomo: rvore somente com raiz
Objetos Estruturados
Exemplo:
Data estrutura com trs componentes: dia, ms e ano
10
Objetos Estruturados
data(7,julho,1953) Pode ser visto com um fato Como objeto estruturado, data(7,julho,1953) apresentado como um argumento em uma relao
data deixa de ser uma relao e passa a ser um funtor
11
Objetos Estruturados
Um funtor definido por:
Nome sintaxe a mesma dos tomos Aridade corresponde ao nmero de argumentos data/2
12
Listas
Uma das estruturas mais simples em Prolog Seqncia ordenada de elementos Pode ter qualquer comprimento Ordenada: ordem dos elementos na seqncia importante Todos os objetos em Prolog so rvores
Listas no fogem regra
13
Listas
Funtor de lista: . Argumentos: Cabea e Cauda
.(Cabea,Cauda)
Listas
Lista [gosto,de,vinho] [[3],5,[2,7]] [X,Y|Z] [[c,gato]] Cabea gosto [3] X [c,gato] Cauda [de,vinho] [5,[2,7]] [Y|Z] []
Colchetes: melhoria notacional Listas representadas por rvores Como fica a representao das listas ao lado?
15
Listas
Operao envolvendo termos: unificao Dados dois termos, eles se unificam se:
So idnticos OU As variveis em ambos os termos podem ser instanciadas em objetos, de maneira que aps a substituio das variveis por esses objetos, os termos se tornam idnticos
16
Listas
Unificao de [X|Y] X,Y variveis com [a1, a2, a3, ..., an]
Listas
Busca Recursiva:
Qual a base da busca por um elemento em uma lista? E como fao a recurso?
18
Listas
Base: pertence(X,[X|_]). Recurso: pertence(X,[_|Y]):pertence(X,Y).
19
20
21
Implementar em Prolog
22
Interrogar Prolog:
?-f(1,Y),2<Y.
23
Interrogar Prolog:
?-f(1,Y),2<Y.
24
Interrogar Prolog:
?-f(1,Y),2<Y.
25
26
27
28
Exerccios
Quais das prximas operaes de unificao sero bem sucedidas e quais iro falhar? Para as que forem bem sucedidas, quais so as instanciaes de variveis resultantes?
ponto(A, B) = ponto(1, 2). ponto(A, B) = ponto(X, Y, Z). mais(2, 2) = 4. +(2, D) = +(E, 2). t(p(-1,0), P2, P3) = t(P1, p(1, 0), p(0, Y)).
29
Exerccios
Supondo que um retngulo seja representado pelo termo: retngulo(SupEsq, InfDir) onde SupEsq representa o ponto superior esquerdo e InfDir o ponto inferior direito de um retngulo em uma tela de vdeo (1280 x 1024). Defina a relao quadrado(R, ...) que verdadeira se R um quadrado.
30
Exerccios
Resposta:
%quadrado(retangulo(PontoSuperiorEsquerdo, % PontoInferiorDireito)). quadrado(retangulo(ponto(X1,Y1),ponto(X2,Y2))):Comp1 is X2 - X1, Comp2 is Y2 - Y1, Comp1 == Comp2.
31
Exerccios
Considere o seguinte programa: f(1, um). f(s(1), dois). f(s(s(1))), trs). f(s(s(s(X))), N) :- f(X, N). Como iria o sistema Prolog responder as seguintes questes? Quando vrias respostas so possveis, d pelo menos duas: ?-f(s(1), A). ?-f(s(s(1)), dois). ?-f(s(s(s(s(s(s(1)))))), C). ?-f(D, trs).
32
Exerccios
Implementar as outras relaes da nota didtica processamentos de listas
33
Fonte
Monard, M.C.; Nicoletti, M.C. Programas Prolog para processamento de listas e aplicaes. Notas Didticas do ICMC-USP, N. 07, 1993, 75pg.
ftp://ftp.icmc.sc.usp.br/pub/BIBLIOTECA/not_did/listas-prolog.pdf
34