Escolar Documentos
Profissional Documentos
Cultura Documentos
Sistema de Informação
Prof. Dr. Roberta Andrade
raafupe@gmail.com
Índice
Listas
Definição
Operações
Predicados
Listas Prolog
Estruturas de dados suportadas
nativamente em Prolog
Listas Prolog
Lista é uma das estruturas mais simples em
Prolog, muito comum em programação não
numérica
Ela é uma sequência ordenada de elementos
Uma lista pode ter qualquer comprimento
Listas Prolog
No exemplo [ana, tênis, pedro]
ana é a Cabeça da lista
[tênis, pedro] é a Cauda da lista
Listas Prolog
Como a Cauda é uma lista, ela é vazia ou
ela tem sua própria cabeça e sua cauda:
hobbies1([tênis, música]).
hobbies2([esqui, comida]).
Lista([ana,Hobbies1,pedro,Hobbies2]).
Saída
? - Hobbies1 = [tênis,música].
?- Hobbies2 = [esqui,comida].
?- L = [ana, [tênis,música], pedro, [esqui,comida]].
Listas Prolog
Em geral, é comum tratar a cauda como um
objeto simples
Por exemplo, L = [a,b,c] pode ser escrito como
Cauda = [b,c]
L = [a,Cauda]
Listas Prolog
L = [a | Cauda]
A notação é geral por permitir que qualquer
número de elementos seja seguido por ‘|’ e o
restante da lista:
[a,b,c] = [a | [b,c]] = [a,b | [c]] = [a,b,c | [ ]].
? - [Cabeca|Cauda] = [maria, vicente, julia, yolanda].
Cabeça =maria
Cauda=[vicente, julia, yolanda]
?- [X1,X2,X3|Cauda] = [maria, vicente, marcelo, josy,
yolanda].
[maria, vicente, marcelo,[ josy, yolanda]].
listas([1,2,3,4,5,6]).
listas([a,b,c,d,e,f]).
Consulta
? – listas(P).
?- [Parte1|Parte2] = [brasil, urugai,argentina,paraguai].
%Regras
?- apaga(a,[a,b,c,d],L).
?- apaga(1,[1,2,3,4,c],L).
membro( X, [X|_] ).
membro( X, [_|R] ) :- membro( X, R ).
%perguntas
?- membro(b,[a,b,c]).
?- membro(X,[a,b,c]).
L3 lista resultante.
%regras
concatena([],L,L).
concatena([X|L1],L2,[X|L3]):-
concatena(L1,L2,L3).
%Perguntas
?- concatena([1,2,3],[a,b,c],L).
16 AULA 7 – LPA II quinta-feira, 9 de fevereiro de 2023
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
?- somatorio(X,[1,2,3,4,5]).
?- media(X,[1,2,3,4,5]).
?- member(4,[2,4,6]).
?-member(vincent,[yolanda,trudy,vincent,jules]).
?-member(zed,[vincent,jules]).
?-member(zed,[]).
?- member(a,[c,b,a,y]).
?- member(x,[a,b,c]).
?- member(X,[a,b,c]).
length([’eu’,’tu’,’ele’],Z).
sort([8,3,3,816], Y).
sort([marcia,camila,ana], Z).
last(?List,?Elem)
Quem é o último elemento da lista
last([1, 2, 3],Y).
sumlist(?List, ?Int)
Soma os elementos de uma lista
?- sumlist([10,8,9],Z).
Z=27
25 AULA 7 – LPA II quinta-feira, 9 de fevereiro de 2023
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
Listas Prolog
Exercício_Resposta_01
dist(recife,caruaru,120).
dist(recife,serratalhada,380).
dist(recife,salgueiro,480).
dist(recife,garanhus,210).
findall(Campus/Distancia,
(dist(recife,Campus,Distancia),Distancia=<250),L).
findall(Campus/
Distancia,dist(recife,Campus,Distancia),L).