5. Processamento de Listas

Slides:



Advertisements
Apresentações semelhantes
Programação Funcional
Advertisements

Mineração de Dados Algoritmo APRIORI
Python: Listas Claudio Esperança.
Relatório dos Municípios com Pendências no Sisprenatal de 2009 Município com Pendência de um mês Bom Jesus (Nov) Município com Pendência de doze.
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
AUDITORIA Contas a receber
4. Operadores e Aritmética
Programação Lógica ProLog
Introdução à Linguagem Prolog
Gerenciamento de Arquivos, Páginas e Registros
Busca em Profundidade Para encontrar um caminho de solução Sol, de um dado nó para algum nó objetivo Se N é um nó objetivo, então Sol=[N] Se há um nó N1.
Sobrecarga de Operadores
Hashing (Espalhamento)
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
6. Backtracking e Controle
2. A Linguagem Prolog.
Introdução à Modelagem Conceitual 3. Prolog
4. Operadores e Aritmética. Introdução à Programação Prolog2 Operadores Na matemática costuma-se escrever expressões como 2*a + b*c onde + e * são operadores.
CAP-223 Árvore através de uma Árvore Binária A BCDE FGHIJK A BC D E FGHIJK.
Instrutor: Nilo Menezes
LISTAS Uma lista é uma estrutura de dados muito comum na programação não numérica (com particular destaque na computação simbólica onde representa quase.
Inteligência Artificial: A Linguagem Prolog (parte 2)
Vinicius Ponte Machado
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Introdução à Programação de Computadores
Aula Prática - Prolog Sistemas Inteligentes /~if684
LISTAS Uma lista é uma estrutura de dados muito comum na programação não numérica (com particular destaque na computação simbólica onde representa quase.
Prolog Programação Lógica Ícaro A. Souza.
Campus de Mal. Cdo. Rondon - PR. SISTEMAS ESCALONADOS – FORMA ESCADA.
Aula Prática - Prolog Sistemas Inteligentes /~if684
Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012.
Definição de tipos - LF3Definição de tipos - LF3 PLP - Apresentação 1.
Objetivo Raciocinar sobre: os efeitos de ações; o seqüenciamento de ações para atingir um efeito cumulativo desejado. Exemplo de uma Tarefa no Mundo dos.
Denise Guliato Faculdade de Computação – UFU
GUIA DO SUPERVISOR PEDAGÓGICO CONHECENDO A VERSÃO PRELIMINAR
Uma Breve Introdução á programação lógica
Média, Moda e Mediana.
Algoritmos de Busca em Prolog
Melhorando o ambiente de negócios por meio da transparência no Estado de São Paulo.
| SALVADOR-BA | Av. Tancredo Neves.
DESENVOLVIMENTO WEB I HTML Tabelas. Tabelas servem para organizar!!!  Usamos tabelas para organizar conteúdos que tenham relação entre si, procurando.
Potenciação de base real e expoente inteiro
Elsa Carvalho 18 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Estruturas de.
Empréstimo Consignado Nacional. Quantidade de Operações de Crédito (Empréstimo Pessoal e Cartão) realizadas por Instituições Financeiras com Aposentados.
Q UANTO VAMOS INVESTIR NESSE NEGÓCIO ? 1 2 sócios Capital PróprioR$ ,00 Capital de TerceirosR$ ,85 Investimentos TotaisR$ ,85.
CONTOLE DE QUALIDADE PARA AS BACILOSCOPIAS DE TUBERCULOSE LACEN-PR.
Exemplos de Prolog Automática I.
PLANO DE COMPENSAÇÕES. TERMOS A TER EM CONTA Consultor = (Distribuidor) : Quando uma pessoa se afilia a nossa empresa em qualquer de seus níveis se converte.
SQL Server Comando PIVOT.
22/05/2009 REPORTE OPERACIONAL ABRIL/ Pampulha.
DESPESAS ANTECIPADAS EXERCÍCIO
Vinicius Ponte Machado
Estrutura de Dados Aula 3 - Listas
1 Boletim Trimestral BNDES 1º Trimestre de 2010 Abril de 2010.
Empréstimo Consignado Nacional
Exemplos com Operadores matemáticos
Cálculos utilizados em Perícias Contábeis Judiciais:
LEITOS REGTAGUARDA Hospital 2 de Julho H2J Hospital Salvador Hospital Polícia Militar HPM Hospital Martagão Gesteira HMG  Portaria Gasec / Ba, Nº 2580.
Previsão de Cheias do Sistema Negro/Solimões º ALERTA DE CHEIAS DE MANAUS Manaus, 02 de maio de 2013.
RESUMO DOS LEILÕES NA FASE DA MISTURA OPCIONAL 2% Jan/06 a dez/07 Fonte: Superintendência de Abastecimento.
Inteligência Artificial Objetos em Prolog  Esta aula introduz objetos de dados simples e estruturados  Os tópicos abordados são:  Unificação como operação.
Programa de Formação por Competências Equideocultura
Aluno: Orientador: Prof.
DATAS FIXAS DA PASTORAL FAMILIAR - ANO 2017
5. Processamento de Listas
CÁLCULOS PARA A PESQUISA
Acompanhamento dos Processos Pedagógicos
AUDITORIAS E CERTIFICAÇÕES.
Título do Roteiro do Produto
TÍTULO DO ROTEIRO DO PRODUTO
Transcrição da apresentação:

5. Processamento de Listas

Representação de Listas [a, b, c, d]. .(Cabeça, Corpo). .(a, .(b, .(c, .(d, .([])))). [a] = .(a, []). [Cabeça | Corpo] · · brasil · uruguai · argentina [ ] paraguai [brasil, uruguai, argentina, paraguai] Qualquer termo Prolog Sempre uma Lista Introdução à Programação Prolog

Exemplos com Listas [X | Y] = [X | [Y | Z]] = [a, b, c, d] [a, b, c] = [a | [b | [c]]] = [a | [b, c]] = [a, b | [c]] = [a, b, c | []] As consultas abaixo também são elucidativas: ?-[X | Y] = [a, b, c]. X=a, Y=[b, c] ?-[X, Y, Z] = [a, b, c, d]. no ?-[X | [Y | Z]] = [a, b, c, d]. X=a, Y=b, Z=[c, d] Introdução à Programação Prolog

Construção de Listas lista([]). % Uma lista, ou é vazia ou é lista([_|_]). % formada por uma cabeça e um corpo. cons(X, Y, [X|Y]). % Constrói (ou decompõe) uma lista. ?- cons(a, [b, c], X). % Observar que o corpo de uma lista X = [a, b, c] % é sempre uma lista. ?- cons(X, Y, [a, b, c]). % A lista dada [a, b, c] se X = a, Y = [b, c] % decompõe em cabeça e corpo. ?- cons(a, X, [a, b, c]). % Prolog permite também resultados X = [b, c] % implícitos, como este. Introdução à Programação Prolog

O Predicado membro/2 membro(X, [X|_]). % X é membro de uma lista se X é a membro(X, [_|Y]):- % cabeça da lista. Ou então se X é membro(X,Y). % membro do corpo da lista. ?- membro(c, [a, b, c]). yes ?- membro(X, [a, b, c]). X = a; X = b; X = c; no ?- membro(b, [a, [b, c]]). Introdução à Programação Prolog

Concatenação de Listas conc([], L, L). conc([X | L1], L2, [X | L3]):- conc(L1, L2, L3). Introdução à Programação Prolog

Exemplos com conc/3 ?- conc([a, b, c], [1, 2, 3], L). L = [a, b, c, 1, 2, 3] ?- conc([a, [b, c], d], [a, [], b], L). L = [a, [b, c], d, a, [], b] ?- conc([a, b], [c | R], L). L = [a, b, c | R] ?- conc(L1, L2, [a, b, c]). L1 = [], L2 = [a, b, c]; L1 = [a], L2 = [b, c]; L1 = [a, b], L2=[c]; L1 = [a, b, c], L2=[]; no Introdução à Programação Prolog

Mais Exemplos com conc/3 ?- conc(_, [X, g, Y | _], [a, b, c, d, e, f, g, h]). X = f, Y = h; no ?- conc(Trab, [sab | _], [seg, ter, qua, qui, sex, sab, dom]). Trab = [seg, ter, qua, qui, sex]; ?- M=[jan, fev, mar, abr, mai, jun, jul, ago, set, out, nov, dez], conc(Antes, [mai | Depois], M). Antes = [jan, fev, mar, abr], Depois = [jun, jul, ago, set, out, nov, dez]; Introdução à Programação Prolog

Outros Predicados com Listas membro1(X, L):- % membro/2 em função de conc/3. conc(_, [X|_], L). remover(X, [X|C], C). % Pode-se remover um elemento X de uma lista onde remover(X, [Y|C], [Y|D]):- % X é a cabeça. Se X não é a cabeça da lista, então remover(X, C, D). % X deve ser removido do corpo da lista. inserir(X, L, L1):- % inserir/3 em função de remover/3. remover(X, L1, L). % A inserção é sempre feita na cabeça de L. inverter([], []). % A inversão de uma lista vazia é a própria lista vazia. inverter([X|Y], Z):- % A inversão de uma lista não-vazia é a inversão de inverter(Y, Y1), % seu corpo e a concatenação deste corpo invertido conc(Y1, [X], Z). % com a cabeça da lista original. Introdução à Programação Prolog

Mais Predicados com Listas sublista(S, L):- % S é sublista de L se L pode ser decomposta em duas conc(_, L1, L), % listas, uma das quais é L1, e L1 pode ser decomposta conc(S, _, L1). % em outras duas listas, uma das quais é S. tamanho([], 0). % O tamanho de uma lista vazia é zero. O tamanho de tamanho([_|R], N):- % uma lista não-vazia é obtido acrescentando-se uma tamanho(R, N1), % unidade ao tamanho de seu corpo. N is N1 + 1. enesimo(1, X, [X | _]). % Este predicado devolve em X o enésimo elemento de enesimo(N, X, [_ | Y]):- % uma lista. Pode ser usado no sentido inverso para enesimo(M, X, Y), % informar a posição de um determinado elemento N is M + 1. % na lista. soma([], 0). % A soma dos elementos de uma lista de números é soma([X | Y], S):- % obtida somando o valor da cabeça á soma dos soma(Y, R), % elementos do corpo da lista. S is R + X. Introdução à Programação Prolog

Conjuntos como Listas Conjuntos e operações sobre conjuntos podem ser representados como listas em Prolog, considerando-se que: Listas possuem uma ordenação implícita que não existe em conjuntos, e Listas podem apresentar elementos repetidos, o que não acontece nos conjuntos. conjunto([], []):- !. conjunto([X|C1], [X|C2]):- not member(X, C1), !, conjunto(C1, C2). conjunto([_|C1], C2):- Introdução à Programação Prolog

Operações sobre Conjuntos conjunto([X|C1], [X|C2]):- not member(X, C1), !, conjunto(C1, C2). conjunto([_|C1], C2):- união([], C, C):- !. união([X|C1], C2, C3):- member(X, C2), !, união(C1, C2, C3). união([X|C1], C2, [X|C3]):- intersec([], _, []):- !. intersec([X|C1], C2, [X|C3]):- member(X, C2), !, intersec(C1, C2, C3). intersec([_|C1], C2, C3):- difer([], _, []):-!. difer([X|C1], C2, [X|C3]):- not member(X, C2), !, difer(C1, C2, C3). difer([_|C1], C2, C3):- Introdução à Programação Prolog

Quicksort em Prolog quick([X|Y], Z):- % Classifica uma lista [X|Y] resultando em Z se, part(Y, X, Peqs, Grds), % usando X como pivô, particiona Y em Peqs e Grds e quick(Peqs, P), % classifica Peqs resultando em P e quick(Grds, G), % classifica Grds resultando em G e append(P, [X|G], Z). % append/3 é o mesmo predicado conc/3 no SWI-Prolog. quick([ ], [ ]). % Classifica [ ] para si própria (caso básico). % part([X|XX], Y, [X|P], G):- % Por exemplo: X=<Y, part(XX, Y, P, G). % ?-quick([9,2,6,5,8,1],L). part([X|XX], Y, P, [X|G]):- % L = [1,2,5,6,8,9] X >Y, part(XX, Y, P, G). % yes part([], _, [], []). % ?- Introdução à Programação Prolog