Linguagens de Programação Programação Lógica (Prolog)
|
|
- Jessica Teves Borba
- 6 Há anos
- Visualizações:
Transcrição
1 Linguagens de Programação Programação Lógica (Prolog) Andrei Rimsa Álvares
2 Sumário Introdução Prolog Unificação Mais sobre Prolog Resumo
3 INTRODUÇÃO Linguagens de Programação
4 Programação Impera?va vs. Lógica Lógica Programas: mapeamento de entradas em saídas Modelo computacional: von Neumann (variáveis, atribuição, comandos,...) procedural: "como fazer" Programação: instruções que executam comandos Computação: ações que alteram estado Programas: conhecimentos sobre um problema e não uma sequência de passos Modelo computacional: lógica matemá?ca Es@lo declara@vo: "o que fazer" Programação: simbólica (não numérica) Computação: se uma consulta pode ser deduzida de relações do programa
5 Programação Funcional vs. Lógica Programas: com mapeamentos Dado a, determine o valor de m(a) (sempre resultará em uma única resposta) Funcional Programas: com relações Lógica Dados a e b, verificar se R(a,b) é verdadeiro Dado a, encontrar todos os valores para y tal que R(a,y) é verdadeiro Dado b, encontrar todos os valores para x tal que R(x,b) é verdadeiro Encontre todos os valores para x e y, tal que R(x,y) é verdadeiro
6 Programação Lógica Nenhuma linguagem de programação em lógica pode explorar totalmente o potencial da lógica matemá?ca Pois o formalismo matemá?co não é implementável Exemplo: O Úl$mo Teorema de Fermat afirma que não existe nenhum conjunto de inteiros posi?vos x, y, z e n com n maior que 2 que sa?sfaça a seguinte equação: x n + y n = z n
7 Exemplo Hierarquia de uma família avo(x, Y) :- pai(x, Z), pai(z, Y). avo(x, Y) :- pai(x, Z), mae(z, Y). pai(carlos, joao). pai(joao, jose). mae(maria, joao).?- avo(carlos, jose). true.?- avo(carlos, joao). false.?- avo(manoel, carlos). false.?- avo(x, jose). X = carlos.
8 PROLOG Linguagens de Programação
9 Prolog Prolog é uma linguagem de programação lógica de propósito geral associada com inteligência ar?ficial e linguís?ca que possui suas raízes na lógica de primeira-ordem, uma lógica formal Prolog é declara?va, a lógica do programa é expressa em termos de relações, representada como fatos e regras; uma computação é iniciada executando uma pesquisa sobre essas relações A linguagem foi inicialmente concebida por um grupo coordenado por Alain Colmerauer em Marseille (França) no começo de 1970 Foi uma das primeiras linguagens de programação lógica e se mantém como a mais popular até hoje A linguagem é usada para prova de teoremas, sistemas especialistas, processamento de linguagens naturais,...
10 Elementos Valores Constantes: letras (começa com minúscula), números, texto Ex.: maria, 'maria', 123, "Texto" Estruturas (tuplas rotuladas) Ex.: ponto(5, 6), data(01, 01, 2000) Listas Ex.: [1,2,3], [maria, jose] Variáveis (começam com letra maiúscula) Ex.: X, Y, Estudante
11 Cláusulas de Horn Cláusulas de Horn são um subconjunto das cláusulas da lógica de predicados Forma geral B :- A 1, A 2,..., A n., onde cada A i é uma relação da forma R i (...) Interpretação se as condições A 1, A 2,... e A n forem verdadeiras, então a conclusão B é verdadeira (na forma procedural: se condições então conclusão) Se algum A i for falso, não se pode deduzir que B é falso, apenas que não se pode inferir
12 Cláusulas de Horn Nomenclatura Se n = 0 a cláusula é chamada de fato Se n >= 1 a cláusula é chamada de regra Toda cláusula termina com. (ponto).
13 Exemplo Exemplo somente com fatos Quem gosta de peixe??- gosta(x, peixe). X = maria. gosta(maria, peixe). gosta(pedro, vinho). gosta(maria, vinho). gosta(pedro, maria). Pedro e Maria se gostam??- gosta(maria, pedro), gosta(pedro, maria). false. Existe algo que Pedro e Maria (ambos) gostem??- gosta(pedro, X), gosta(maria, X). X = vinho.
14 Outro Exemplo Exemplo com fatos e regras estrela(sol). estrela(sirius). orbita(venus, sol). orbita(terra, sol). orbita(marte, sol). orbita(lua, terra). orbita(phobos, marte). orbita(deimos, marte). planeta(b) :- orbita(b, sol). satelite(b) :- orbita(b, P), planeta(p).?- orbita(venus, sol). true.?- orbita(b, marte). B = phobos ; B = deimos.?- orbita(b, venus). false.?- planeta(mercurio). false.?- planeta(x). X = venus ; X = terra ; X = marte.?- satelite(x). X = lua ; X = phobos ; X = deimos.
15 UNIFICAÇÃO Linguagens de Programação
16 Unificação Unificação é o nome do algoritmo usado por Prolog para determinar se existe uma maneira de instanciar as variáveis de dois predicados de modo a torná-los iguais. Predicado 1 Predicado 2 Unificação p(x, Y) q(x, Y) false p(x, Y) p(joao, jose) X = joao, Y = jose p(x, Y) p(joao, Z) X = joao, Y = Z p(x, X) p(1, 1) X = 1 p(x, X) p(1, W) X = 1, W = 1 p(x, X) p(1, 2) false p(x, X, 2) p(1, W, W) false p(g, jose) p(x, Y) G = X, Y = jose
17 Algoritmo O algoritmo de execução Faz uma busca em profundidade em uma árvore de pesquisa, com resolução de um obje?vo, onde a lista de cláusulas é pesquisada de cima para baixo Se a unificação com o lado esquerdo de uma cláusula for bem sucedida, então tenta-se resolver os sub-obje?vos do lado direito dessa cláusula (da esquerda para a direita) Pode haver retrocessos (backtracking) no caso de uma unificação não for bem sucedida, tentando explorar outras unificações alterna?vas Se todas as alterna?vas forem exploradas sem sucesso, então a resolução falha A resolução é sujeita à ordem em que as cláusulas foram escritas.
18 Exemplo Verificar se João e Mario são irmãos homem(mario). mae(joao, roberta). mae(mario, roberta). pai(joao, paulo). pai(mario, paulo). pais(x, M, P) :- mae(x, M), pai(x, P). irmao(x, Y) :- homem(y), pais(x, M, P), pais(y, M, P).?- irmao(joao, mario). Qual a resposta dessa consulta?
19 Exemplo Execução do algoritmo irmao(joao, mario) Com qual regra essa consulta pode ser unificada?
20 Exemplo Execução do algoritmo irmao(joao, mario) X = joao, Y = mario irmao(x, Y) Expandir a regra irmao(x, Y) com suas cláusulas a direita.
21 Exemplo Execução do algoritmo irmao(joao, mario) homem(mario) pais(joao, M, P) pais(mario, M, P) A cláusula homem(mario) é um fato.
22 Exemplo Execução do algoritmo irmao(joao, mario) homem(mario) pais(joao, M, P) pais(mario, M, P) Qual regra pode ser unificada nesse momento?
23 Exemplo Execução do algoritmo irmao(joao, mario) homem(mario) pais(joao, M, P) pais(mario, M, P) X 1 = joao, M 1 = M, P 1 = P pais(x 1, M 1, P 1 ) Expandir a regra pais(x 1, M 1, P 1 ) com suas cláusulas à direita.
24 Exemplo Execução do algoritmo irmao(joao, mario) homem(mario) pais(joao, M, P) pais(mario, M, P) M = M 1, P = P 1 mae(joao, M 1 ) pai(joao, P 1 ) Qual regra pode ser unificada nesse momento?
25 Exemplo Execução do algoritmo irmao(joao, mario) homem(mario) pais(joao, M, P) pais(mario, M, P) M = M 1, P = P 1 mae(joao, M 1 ) pai(joao, P 1 ) M 1 = roberta mae(joao, roberta) A cláusula mae(joao, roberta) é um fato.
26 Exemplo Execução do algoritmo irmao(joao, mario) homem(mario) pais(joao, M, P) pais(mario, M, P) M = M 1, P = P 1 mae(joao, M 1 ) pai(joao, P 1 ) M 1 = roberta Qual regra pode ser unificada nesse momento? mae(joao, roberta)
27 Exemplo Execução do algoritmo irmao(joao, mario) homem(mario) pais(joao, M, P) pais(mario, M, P) M = M 1, P = P 1 mae(joao, M 1 ) pai(joao, P 1 ) M 1 = roberta P 1 = paulo A cláusula pai(joao, paulo) é um fato. mae(joao, roberta) pai(joao, paulo)
28 Exemplo Execução do algoritmo irmao(joao, mario) homem(mario) pais(joao, M, P) pais(mario, M, P) M = M 1, P = P 1 mae(joao, M 1 ) pai(joao, P 1 ) M 1 = roberta P 1 = paulo Qual regra pode ser unificada nesse momento? mae(joao, roberta) pai(joao, paulo)
29 Exemplo Execução do algoritmo irmao(joao, mario) Nesse momento, sabe-se que M = roberta e P = paulo. homem(mario) pais(joao, M, P) pais(mario, M, P) M = M 1, P = P 1 X 2 = mario, M 2 = roberta, P 2 = paulo mae(joao, M 1 ) pai(joao, P 1 ) pais(x 2, M 2, P 2 ) M 1 = roberta P 1 = paulo mae(joao, roberta) pai(joao, paulo) Expandir a regra pais(x 2, M 2, P 2 ) com suas cláusulas à direita.
30 Exemplo Execução do algoritmo irmao(joao, mario) homem(mario) pais(joao, M, P) pais(mario, M, P) M = M 1, P = P 1 mae(joao, M 1 ) pai(joao, P 1 ) mae(mario, roberta) pai(mario, paulo) M 1 = roberta P 1 = paulo mae(joao, roberta) pai(joao, paulo) A cláusula mae(mario, roberta) é um fato.
31 Exemplo Execução do algoritmo irmao(joao, mario) homem(mario) pais(joao, M, P) pais(mario, M, P) M = M 1, P = P 1 mae(joao, M 1 ) pai(joao, P 1 ) mae(mario, roberta) pai(mario, paulo) M 1 = roberta P 1 = paulo mae(joao, roberta) pai(joao, paulo) A cláusula pai(mario, paulo) é um fato.
32 Exemplo Execução do algoritmo Todas as cláusulas foram unificadas, portanto a resposta é true. irmao(joao, mario) homem(mario) pais(joao, M, P) pais(mario, M, P) M = M 1, P = P 1 mae(joao, M 1 ) pai(joao, P 1 ) mae(mario, roberta) pai(mario, paulo) M 1 = roberta P 1 = paulo mae(joao, roberta) pai(joao, paulo)
33 Outro Exemplo Consultar quem é muito inteligente muito_inteligente(x) :- inteligente(x), simpatico(x). inteligente(x) :- vivo(x), humano(x). inteligente(x) :- golfinho(x). humano(x) :- homem(x). humano(x) :- mulher(x).?- muito_inteligente(x). vivo(chico). golfinho(flipper). mulher(maria). Qual a resposta dessa consulta? homem(chico). simpatico(flipper).
34 Outro Exemplo Execução do algoritmo muito_inteligente(x) Com qual regra essa consulta pode ser unificada?
35 Outro Exemplo Execução do algoritmo muito_inteligente(x) X = X 1 inteligente(x 1 ) simpatico(x 1 ) Quais regras podem ser unificadas agora?
36 Outro Exemplo Execução do algoritmo muito_inteligente(x) X = X 1 inteligente(x 1 ) simpatico(x 1 ) Quais regras podem ser unificadas agora?
37 Outro Exemplo Execução do algoritmo muito_inteligente(x) X = X 1 inteligente(x 1 ) simpatico(x 1 ) X 1 = X 2 vivo(x 2 ) humano(x 2 ) Expandida a primeira regra (na ordem do programa) que pôde ser unificada
38 Outro Exemplo Execução do algoritmo muito_inteligente(x) X = X 1 inteligente(x 1 ) simpatico(x 1 ) X 1 = X 2 vivo(x 2 ) humano(x 2 ) Qual regra pode ser unificada agora?
39 Outro Exemplo Execução do algoritmo muito_inteligente(x) X = X 1 inteligente(x 1 ) simpatico(x 1 ) X 1 = X 2 vivo(x 2 ) humano(x 2 ) X 2 = chico vivo(chico) vivo(chico) é um fato
40 Outro Exemplo Execução do algoritmo muito_inteligente(x) X = X 1 inteligente(x 1 ) simpatico(x 1 ) X 1 = X 2 vivo(x 2 ) humano(x 2 ) vivo(chico) X 2 = chico Agora sabe-se que X 2 = chico
41 Outro Exemplo Execução do algoritmo muito_inteligente(x) X = X 1 inteligente(x 1 ) simpatico(x 1 ) X 1 = X 2 vivo(x 2 ) humano(x 2 ) X 2 = chico homem(chico) é um fato vivo(chico) homem(chico)
42 Outro Exemplo Execução do algoritmo muito_inteligente(x) X = X 1 Sabe-se que X 1 = chico inteligente(x 1 ) simpatico(x 1 ) X 1 = X 2 vivo(x 2 ) humano(x 2 ) X 2 = chico Existe o fato simpatico(chico)? vivo(chico) homem(chico)
43 Outro Exemplo Execução do algoritmo muito_inteligente(x) X = X 1 inteligente(x 1 ) simpatico(x 1 ) X 1 = X 2 golfinho(x 2 ) Backtracking até o ponto onde havia outra alterna?va
44 Outro Exemplo Execução do algoritmo muito_inteligente(x) X = X 1 inteligente(x 1 ) simpatico(x 1 ) X 1 = X 2 golfinho(x 2 ) X 2 = flipper golfinho(flipper) é um fato golfinho(flipper)
45 Outro Exemplo Execução do algoritmo muito_inteligente(x) X = X 1 inteligente(x 1 ) simpatico(x 1 ) X 1 = X 2 golfinho(x 2 ) X 2 = flipper Agora sabe-se que X 1 = flipper golfinho(flipper)
46 Outro Exemplo Execução do algoritmo muito_inteligente(x) X = X 1 inteligente(x 1 ) simpatico(x 1 ) X 1 = X 2 X 1 = flipper golfinho(x 2 ) simpatico(flipper) X 2 = flipper golfinho(flipper)
47 Outro Exemplo Execução do algoritmo muito_inteligente(x) X = X 1 inteligente(x 1 ) simpatico(x 1 ) X 1 = X 2 X 1 = flipper golfinho(x 2 ) simpatico(flipper) X 2 = flipper golfinho(flipper) Todas as cláusulas foram unificadas, portanto X = flipper
48 MAIS SOBRE PROLOG Linguagens de Programação
49 Cláusulas Recursivas Pode-se definir cláusulas com recursão para executar laços Exemplo: consultar os descendentes?- descendente(manoel, madalena). true.?- descendente(manoel, carlos). true. pai(carlos,madalena). pai(manoel,felipe). mae(madalena,manoel). pais(x,y) :- pai(x,y). pais(x,y) :- mae(x,y). descendente(x,y) :- pais(y,x). descendente(x,y) :- pais(z,x), descendente(z,y).
50 Variáveis Anônimas Uma variável anônima é uma variável cujo valor instanciado não é relevante Exemplo: consultar se Felipe tem pai?- pai(_, felipe). true.
51 Listas Listas são um?po especial de estrutura Exemplos [1, 2, 3, 4]: lista com elementos de 1 a 4 [1 [2, 3, 4]]: lista com cabeça igual a 1 e o rabo igual a [2,3,4] [1, [2, 3], 4]: lista cujos elementos podem ser outras listas []: lista vazia
52 Unificação de Listas Exemplos de unificações de listas Predicado 1 Predicado 2 Unificação [X Y] [a, b, c] X = a, Y = [b, c] [X [Y Z]] [a, b, c, d] X = a, Y = b, Z = [c, d] [X Y] [a] X = a, Y = [] [X,Y Z] [a, b, c, d] X = a, Y = b, Z = [c, d]
53 Exemplos com Listas Verificar se existe um elemento na lista elemento(x, [ X _ ]). elemento(x, [ _ L ]) :- elemento(x, L).?- elemento(2, [2, 3, 5]). true.?- elemento(v, [2, 3, 5]). V = 2 ; V = 3 ; V = 5.
54 Exemplos com Listas Verificar se duas listas são iguais igual([],[]). igual([x L1], [X L2]) :- igual(l1, L2).?- igual([1, 2], [1, 2]). true.?- igual([],[]). true.?- igual([1, 2], X). X = [1, 2].?- igual([1, 2], [3, 4]). false.
55 Exemplos com Listas Concatenar duas listas concatenar([], L, L). concatenar([x L1], L2, [X L3]) :- concatenar(l1, L2, L3).?- concatenar([2, 3],[5, 7], L). L = [2, 3, 5, 7].?- concatenar([2, 3], L, [2, 3, 5, 7]). L = [5, 7].?- concatenar(l1, L2, [5, 7]). L1 = [], L2 = [5, 7] ; L1 = [5], L2 = [7] ; L1 = [5, 7], L2 = [].
56 Exemplos com Listas Remover um elemento da lista remover(x, [X T], T). remover(x, [Y T], [Y NT]) :- X \== Y, remover(x, T, NT).?- remover(2, [1,2,3,4], [1,3,4]). true.?- remover(2, [1,2,3,4], L). L = [1, 3, 4].?- remover(5, [1,2,3,4], L). false. Como remover todas as ocorrências do elemento?
57 Expressões Aritmé?cas O operador is é usado para realizar operações aritmé?cas Exemplo 1: densidade densidade(x,y) :- populacao(x,p), area(x,a), Y is P/A. Exemplo 2: MDC (Algoritmo de Euclides) mdc(x,x,x). mdc(x,y,z) :- X > Y, W is X-Y, mdc(w,y,z). mdc(x,y,z) :- Y > X, W is Y-X, mdc(x,w,z).
58 Expressões Aritmé?cas O operador is é usado para realizar operações aritmé?cas Exemplo 3: Fatorial fatorial(0, 1). fatorial(x, Y) :- X1 is X-1, fatorial(x1, Y1), Y is X*Y1. Exemplo 4: Somar os elementos de uma lista soma([], 0). soma([x L], S) :- soma(l, S1), S is X+S1.
59 RESUMO Linguagens de Programação
60 Paradigma Lógico vs Impera?vo Custo de tempo e espaço de armazenamento alto Backtracking Impera?va: erro de execução (se não puder prosseguir) Lógica: computação desfeita e um caminho alterna?vo é testado Ausência de?pos e declarações Variáveis se referem a indivíduos, ao invés de posições da memória (não há atribuição destru?va)
61 Paradigma Lógico vs Impera?vo Programas em lógica não possuem estruturas de controle no sen?do usual Manipulação de dados é feita inteiramente via unificação Atribuição simples Passagem de parâmetros Alocação de estruturas e escrita/leitura de campos de estruturas Um programa em lógica pode ficar mais Conciso (de 5 a 10 vezes menor) Limpo Legível
62 ISSO É TUDO PESSOAL! Linguagens de Programação
Paradigmas de Linguagens de Programação. Linguagens de Programação Lógicas
Linguagens de Programação Lógicas Cristiano Lehrer Introdução Uma metodologia de programação diferente. Expressar programas na forma de lógica simbólica e a utilização de inferência lógica para produzir
Programação Orientada a Objetos. Programação Lógica
Programação Orientada a Objetos Programação Lógica Cristiano Lehrer, M.Sc. Introdução Uma metodologia de programação diferente. Expressar programas na forma de lógica simbólica e a utilização de inferência
Prolog. MATA56 - Paradigmas de Linguagens de Programação, UFBA, Prof. Rodrigo Rocha Prolog. Iniciando.
Prolog MATA56 - Paradigmas de Linguagens de Programação, UFBA, 2016.1. Prof. Rodrigo Rocha (rodrigo@dcc.ufba.br) Baseada na lógica de primeira ordem (lógica de predicados) Concebida na década de 1970
Linguagens Lógicas. Aluno: Victor Rocha
Linguagens Lógicas Aluno: Victor Rocha Roteiro Introdução Cálculo de Predicados Proposições Conectores Lógicos Variáveis Tipos de Cláusulas fatos regras Banco de Dados Prolog Fatos em Prolog Questões Unificação
Fundamentos. Paradigma de Programação Lógico. Marco A L Barbosa
Fundamentos Paradigma de Programação Lógico Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. Conteúdo Visão mais detalhada
Linguagens de Programação Apresentação da Disciplina
Linguagens de Programação Apresentação da Disciplina Andrei Rimsa Álvares Introdução O que é uma linguagem de programação (LP)? Para você, o que é uma LP? Diferentes pessoas têm diferente definições de
2 Paradigmas de linguagens de programação João B. Rocha- Junior. As linguagens evoluem com o passar do tempo
Agenda Paradigmas de Linguagens de ção joao@ecomp.uefs.br Principais paradigmas de linguagem de programação imperajvo funcional declaração Departamento de Ciências Exatas Universidade Estadual de Feira
Prof. Marcos A. Schreiner. 15 de junho de Prof. Marcos A. Schreiner (UFPR) 15 de junho de / 18
Prolog - Programação Lógica Prof. Marcos A. Schreiner Disciplina de Introdução à Lógica 15 de junho de 2015 Prof. Marcos A. Schreiner (UFPR) 15 de junho de 2015 1 / 18 1 Introdução 2 Prolog Definições
Fundamentos e prática de Prolog
Disciplina: Lógica Aplicada à Computação Nome: Matrícula: 1. Considere a seguinte base de conhecimentos Prolog: pai(josé,ana). % "José é pai de Ana" pai(josé,carlos). pai(felipe,fernanda). pai(jo~ao,pedro).
Prof. A. G. Silva. 24 de agosto de Prof. A. G. Silva Programação em Lógica 24 de agosto de / 1
Programação em Lógica Prof. A. G. Silva 24 de agosto de 2017 Prof. A. G. Silva Programação em Lógica 24 de agosto de 2017 1 / 1 Termos Referem-se a todas as construções sintáticas da linguagem Um termo
Introdução. Esse programa recebeu o nome PROLOG (do francês PROgramation et LOGique ).
Introdução Os programas construídos utilizando a lógica diretamente como linguagem de programação receberam o nome de programas lógicos. Um programa lógico é constituído por um conjunto de axiomas/hipóteses
Linguagens de Programação Programação Funcional (Haskell)
Linguagens de Programação Programação Funcional (Haskell) Andrei Rimsa Álvares Sumário Introdução Programação funcional Linguagens funcionais Haskell Casamento de padrões Funções de ordem superior Avaliação
Programação Lógica. Controle (Bactracking, Cut, Fail) Paulo Henrique Ribeiro Gabriel
Programação Lógica Controle (Bactracking, Cut, Fail) Paulo Henrique Ribeiro Gabriel phrg@ufu.br Faculdade de Computação Universidade Federal de Uberlândia 7 de outubro de 2015 Paulo H. R. Gabriel (FACOM/UFU)
Inteligência Artificial. Prolog. Aula 2 Introdução (cont.)
Universidade Estadual do Oeste do Paraná Curso de Bacharelado em Ciência da Computação http://www.inf.unioeste.br/~claudia/ia2017.html Inteligência Artificial Prolog Aula 2 Introdução (cont.) Características
SCC Capítulo 5 Representação de Conhecimento através do Prolog
SCC-630 - Capítulo 5 Representação de Conhecimento através do Prolog João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São
CENTRO UNIVERSITÁRIO LUTERANO DE PALMAS PROLOG. Elias Melgaço Chaves Júnior Jonatas Luiz da Costa Rafael Gonçalves Barreira
CENTRO UNIVERSITÁRIO LUTERANO DE PALMAS PROLOG Elias Melgaço Chaves Júnior Jonatas Luiz da Costa Rafael Gonçalves Barreira Roteiro Linguagens de Programação em Lógica: histórico THIS IS PROLOG!!!! SWI-Prolog
A linguagem Prolog. Sintaxe, terminologia e semântica informal: Os objectos de dados em Prolog são chamados termos.
A linguagem Prolog Sintaxe, terminologia e semântica informal: Os objectos de dados em Prolog são chamados termos. Um termo ou é uma constante, ou uma variável ou um termo composto. As constantes incluem
Recursão PROGRAMAÇÃO EM LÓGICA. Recursão. Sonho Recursivo. Recursão. Recursão. Linguagem Prolog Parte IV
PROGRAMAÇÃO EM LÓGICA Recursão CIÊNCIA DA COMPUTAÇÃO FACAPE Faculdade de Ciências Aplicadas e Sociais de Petrolina Linguagem Prolog Parte IV Usado desde a arte (em figuras, telas, etc) como também em Matemática
03/04/2016 LÓGICA MATEMÁTICA. Prof. Esp. Fabiano Taguchi. Introdução ao Prolog
LÓGICA MATEMÁTICA Prof. Esp. Fabiano Taguchi fabianotaguchi@gmail.com http://fabianotaguchi.wordpress.com Introdução ao Prolog 1 PROLOG PROgramming in LOGic Linguagem utilizada para resolver problemas
PMR-3510 Inteligência Artificial Aula 2 - Resolução de problemas em IA
Escola Politécnica da USP- Depto. de Enga. Mecatrônica Inteligência Artificial Aula 2 - Resolução de problemas em IA Prof. José Reinaldo Silva reinaldo@usp.br Sobre a avaliação do curso Avaliação: Lista
Introdução à Programação em Prolog
Introdução à Programação em Prolog Thiago A. S. Pardo Solange Rezende Exercício em duplas Introdução (1 de 4) Escrever um programa completo em C que armazene quem gosta de quem e que responda sim ou não
Listas em Prolog. Listas
Listas em Prolog Esta aula trata da estrutura de dados lista e programas Prolog para processamento de listas Inteligência Artificial 1 Listas Lista é uma das estruturas mais simples em Prolog, muito comum
FACULDADE LEÃO SAMPAIO
FACULDADE LEÃO SAMPAIO Paradigmas de Programação Curso de Análise e Desenvolvimento de Sistemas Turma: 309-5 Semestre - 2014.2 Paradigmas de Programação Prof. MSc. Isaac Bezerra de Oliveira. 1 PARADIGMAS
Algoritmos Estrutura Condicional
Algoritmos Estrutura Condicional Aula 06 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa diogopedrosa@ufersa.edu.br Universidade Federal Rural do Semiárido Bacharelado
INF 1771 Inteligência Artificial
Edirlei Soares de Lima INF 1771 Inteligência Artificial Aula 08 Introdução ao Prolog Introdução O Prolog é uma linguagem de programação baseada em lógica de primeira ordem. Não é
Lógica de primeira ordem (Capítulo 8 - Russell) Inteligência Artificial
Lógica de primeira ordem (Capítulo 8 - Russell) Inteligência Artificial Estrutura 1- Contextualização 2- Definições 3- Lista de exercício 4- Prolog 5- Regras em Prolog - Mundo Wumpus 6- Aplicação do Mundo
Inteligência Artificial Apontamentos para as aulas Luís Miguel Botelho
Inteligência Artificial Apontamentos para as aulas Luís Miguel Botelho Departamento de Ciências e Tecnologias da Informação ISCTE-IUL - Instituto Universitário de Lisboa Dezembro de 2016 1 Notas sobre
Linguagens de Programação Aula 15
Linguagens de Programação Aula 15 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Linguagem Haskell 2 Na aula de hoje Paradigma Lógico Linguagem Prolog (PROgrammation en LOGique) 3 Introdução
Lógica de Programação, Algoritmos e Estruturas de Dados
Lógica de Programação, Algoritmos e Estruturas de Dados Professor: Vilson Heck Junior vilson.junior@ifsc.edu.br Agenda Funções Básicas do Software; Relações entre áreas; Introdução à Algoritmos; Introdução
Programação Lógica. Programação Lógica PROLOG
Programação Lógica PROLOG A programação em lógica se desenvolveu no início dos anos 70 a partir de alguns trabalhos sobre prova de teoremas. Desde então ela tem demonstrado ser um formalismo simples, mas
Tipos Algébricos. Programação Funcional. Capítulo 11. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto
Programação Funcional Capítulo 11 Tipos Algébricos José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/33 1 Tipos Algébricos 2/33 Tópicos 1 Tipos Algébricos 3/33
BUSCA DE SOLUÇÕES EM PROLOG
PR UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ BUSCA DE SOLUÇÕES EM PROLOG Resolução em PROLOG: Unificação e substituição 1 UNIFICAÇÃO EM PROLOG HISTÓRICO 2 HISTÓRIA A PARTIR DE 1950 1958 forma clausal:
UNIDADE ACADÊMICA: Faculdade de
UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE COMPUTAÇÃO BACHARELADO EM SISTEMAS DE INFORMAÇÃO PLANO DE DISCIPLINA DISCIPLINA: Programação Lógica ( X ) SEMESTRAL - ( ) ANUAL CÓDIGO: GSI010 PERÍODO: 2
Linguagem Haskell. Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação. Tiago Carneiro 19 Agosto 2013
Linguagem Haskell Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação Tiago Carneiro 19 Agosto 2013 1 1 Linguagem Haskell Linguagem de programação funcional É um paradigma de programação
Programação Lógica. (Capítulo 11) LÓGICA APLICADA A COMPUTAÇÃO. Professor: Rosalvo Ferreira de Oliveira Neto
Programação Lógica (Capítulo 11) LÓGICA APLICADA A COMPUTAÇÃO Professor: Rosalvo Ferreira de Oliveira Neto Estrutura 1. Programação Lógica 2. Prolog 3. Exemplos Sintaxe da Programação Lógica Definição
Programação em Lógica. UCPEL/CPOLI/BCC Lógica para Ciência da Computação Luiz A M Palazzo Maio de 2010
Programação em Lógica UCPEL/CPOLI/BCC Lógica para Ciência da Computação Luiz A M Palazzo Maio de 2010 Roteiro Introdução Conceitos Básicos Linguagens Lógicas Semântica de Modelos Semântica de Prova Programação
Técnicas de Programação
Técnicas de Programação Algoritmos Anderson Gomes Eleutério Lógica A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir
Introdução à Lógica de Programação. Adaptação de Luis Otavio Alvares
1 Introdução à Lógica de Programação Adaptação de Luis Otavio Alvares 2 Elaboração de um programa Problema Análise Programa Algoritmo 3 Processo de geração de um programa Análise do problema: Ler atentamente
Descrição do Mundo de Wumpus. Inteligência Artificial
Descrição do Mundo de Wumpus Mundo de Wumpus Mundo de Wumpus -1 Mundo de Wumpus - 2 Mundo de Wumpus - 3 Mundo de Wumpus - 4 Wumpus Outros Pontos Críticos Descrição Lógica do Mundo de Wumpus Identidades
2. Linguagem de Programação Prolog
Inteligência Artificial - IBM1024 2. Linguagem de Programação Prolog Prof. Renato Tinós Local: Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 2. Linguagem de Programação Prolog 2.1.
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ PROLOG PROF. CESAR A. TACLA UTFPR/CURITIBA
PR UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ PROLOG 1 PROLOG: UTILIZAÇÃO A principal utilização da linguagem Prolog reside no domínio da programação simbólica, não-numérica, sendo especialmente adequada
Programação Lógica. A Linguagem Prolog. Paulo Henrique Ribeiro Gabriel Faculdade de Computação Universidade Federal de Uberlândia
Programação Lógica A Linguagem Prolog Paulo Henrique Ribeiro Gabriel phrg@ufu.br Faculdade de Computação Universidade Federal de Uberlândia 21 de agosto de 2015 Paulo H. R. Gabriel (FACOM/UFU) Programação
Variáveis o nome de uma variável pode ser qualquer sequência de caracteres alfanuméricos que começa com uma letra maiúscula ou com um underscore (_).
Figura: Capa do Livro Hamburger, H., Richards, D. Logic and Language Models for Computer Science, Prentice Hall. Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado
LÓGICA DE PROGRAMAÇÃO. Algoritmos Computacionais. Sérgio Carlos Portari Júnior
LÓGICA DE PROGRAMAÇÃO Algoritmos Computacionais Sérgio Carlos Portari Júnior portari.uemgfrutal@gmail.com Tópicos abordados Algoritmos Computacionais Estrutura de Dados Tipos Primitivos Constantes Variáveis
Árvores: conceitos gerais e representações
1 1. Conceitos fundamentais Até agora estudamos estruturas de dados lineares, isto é, estruturas apropriadas ao armazenamento de dados que têm uma relação seqüencial: 1. Estruturas lineares contíguas em
Protótipo de Software de Apoio ao Aprendizado da Linguagem de Programação Lógica Prolog
Protótipo de Software de Apoio ao Aprendizado da Linguagem de Programação Lógica Prolog ORIENTANDO : WAGNER M. STAHNKE ORIENTADOR : ROBERTO HEINZLE FURB - Universidade Regional de Blumenau Bacharelado
LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTE
LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTE Adriana Nery Programação lógica Paradigma Predicados Dedutiva) baseado no Cálculo de (Lógica Matemática Exemplo: Zé Carioca é um papagaio. Todo papagaio é uma
Tipos de dados, constantes e variáveis. Prof.: Jesus
Tipos de dados, constantes e variáveis Prof.: Jesus Tipos de dados Algoritmo é uma sequência de passos que visa a atingir um objetivo. Geralmente consiste em entrada, processamento e saída. Mas de quê?
A única diferença entre o difícil e o impossível é que o último demora um pouco mais de tempo para ser alcançado..
Técnicas de Programação em Engenharia Elétrica I - Engenharia de Sistemas Embarcados - Introdução aos Algoritmos A única diferença entre o difícil e o impossível é que o último demora um pouco mais de
Inteligência Artificial. Conceitos Gerais
Inteligência Artificial Conceitos Gerais Inteligência Artificial - IA IA é um campo de estudo multidisciplinar e interdisciplinar, que se apóia no conhecimento e evolução de outras áreas do conhecimento.
Capítulo 3 Lógica de Primeira Ordem
Capítulo 3 Lógica de Primeira Ordem Lógica para Programação LEIC - Tagus Park 1 o Semestre, Ano Lectivo 2007/08 c Inês Lynce and Luísa Coheur Bibliografia Baseados nos slides de Andrew Rice, Universidade
Aula 2 Programação Lógica Sintaxe Prolog. Profa. Elaine Faria UFU -2014
Aula 2 Programação Lógica Sintaxe Prolog Profa. Elaine Faria UFU -2014 Créditos O material a seguir consiste de adaptações e extensões dos originais gentilmente cedidos pelo Prof. Alexsandro Santos Soares
Fundamentos de Lógica Matemática
Webconferência 6-29/03/2012 Introdução à Lógica de Predicados Prof. L. M. Levada http://www.dc.ufscar.br/ alexandre Departamento de Computação (DC) Universidade Federal de São Carlos (UFSCar) 2012/1 Introdução
Inteligência Computacional
Rafael D. Ribeiro, M.Sc. rafaeldiasribeiro@gmail.com http://www.rafaeldiasribeiro.com.br Agente: É um elemento qualquer capaz de perceber seu ambiente por meio de sensorese de agir sobre este ambiente
Algoritmos - 5. Alexandre Diehl. Departamento de Física - UFPel
Algoritmos - 5 Alexandre Diehl Departamento de Física - UFPel Estruturas usadas num algoritmo Estrutura sequencial Estrutura condicional Estrutura de repetição PCF2017 2 Estruturas usadas num algoritmo
LINGUAGEM ALGORÍTMICA
LINGUAGEM ALGORÍTMICA Adriano Mauro Cansian André Proto UNESP - São José do Rio Preto Linguagem Computacional Introdução! Para uma melhor padronização de nosso estudos, vamos agora definir uma linguagem
Informática I. Aula 12. Aula 12-29/05/2006 1
Informática I Aula 12 http://www.ic.uff.br/~bianca/informatica1/ Aula 12-29/05/2006 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação
Prof. A. G. Silva. 31 de agosto de Prof. A. G. Silva Programação em Lógica 31 de agosto de / 1
Programação em Lógica Prof. A. G. Silva 31 de agosto de 2017 Prof. A. G. Silva Programação em Lógica 31 de agosto de 2017 1 / 1 Listas (revisão) Elementos separados por vírgulas entre colchetes: [a, b,
Fundamentos 1. Lógica de Predicados
Fundamentos 1 Lógica de Predicados Predicados e Quantificadores Estudamos até agora a lógica proposicional Predicados e Quantificadores Estudamos até agora a lógica proposicional A lógica proposicional
Conferência Árvores de resolução SLD
Inteligência Artificial Conferência Árvores de resolução SLD O Docente: MSc. Angel Alberto Vazquez Sánchez Objetivo Construir uma árvore de resolução SLD a partir de um objetivo do PROLOG, aplicando o
Resolução de Problemas. Universidade Católica de Pelotas Engenharia da Computação Disciplina: Inteligência Artificial
Resolução de Problemas Universidade Católica de Pelotas Engenharia da Computação Disciplina: Inteligência Artificial 2 Resolução de Problemas Introdução Componentes Solução Busca de soluções 3 Resolução
Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Pedro Barahona 2016 / 17
Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Pedro Barahona 2016 / 17 Introdução Esta unidade curricular, é uma variante de outras similares leccionadas a outros cursos da FCT/NOVA,
Raciocínio Automatizado
Raciocínio Automatizado Prof. Dr. Silvio do Lago Pereira slago@ime.usp.br 1 Introdução Raciocínio automatizado é uma sub-área da IA que estuda formas de simular racicínio lógico por meio de métodos computacionais.
Linguagens Lógicas. Alunos: Josiane Novais Cláudio Moisés
Linguagens Lógicas Alunos: Josiane Novais Cláudio Moisés Declarativos em vez de baseados em procedimentos Sintaxe diferente das linguagens imperativas e funcionais. Semântica é pouco semelhante a linguagem
# Estrutura de Dados # Aula 08 Recursão (conceito, utilização, exemplos) Prof. Leinylson Fontinele Pereira
# Estrutura de Dados # Aula 08 Recursão (conceito, utilização, exemplos) Prof. Leinylson Fontinele Pereira Na aula anterior... Alocação Dinâmica de Memória Introdução 3 O que vamos aprender? Recursividade
Linguagem Haskell. Riocemar S. de Santana
Linguagem Haskell Riocemar S. de Santana Haskell, o que é? É uma linguagem de programação puramente funcional, de propósito geral. Nomeada em homenagem ao matemático americano Haskell B. Curry (1900 1982).
Resolução de problemas por meio de busca. Capítulo 3 Inteligência Artificial Sistemas de Informação
Resolução de problemas por meio de busca Capítulo 3 Inteligência Artificial Sistemas de Informação Conteúdo Um exemplo Resolução de problemas por meio de busca Exemplos de problemas Em busca de soluções
Técnicas Alternativas de Programação
Universidade Federal do Paraná Departamento de Informática Disciplina: Técnicas Alternativas de Programação Alexandre I. Direne E-mail: alexd@inf.ufpr.br Web: http://www.inf.ufpr.br/~alexd Lógica Bloco
Pseudocódigo e Visualg
Pseudocódigo e Visualg Professor: Alex Sandro Forghieri alex.forghieri@ifsc.edu.br Agenda Revisão Algoritmos Estrutura de dados Estrutura básica de um algoritmo em pseudocódigo Teste de mesa Operadores
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos
Algoritmos Lógica e Programação Prof. Me. Adelson Felipe Dias Nogueira
Algoritmos Lógica e Programação 2016-2 Prof. Me. Adelson Felipe Dias Nogueira E-mail: adelson.nogueira@pitagoras.com.br PORTUGUES ESTRUTURADO o o o o Para que o algoritmo possa ser executado por uma máquina
Introdução. Introdução. Motivação. Motivação. Solução INTELIGÊNCIA ARTIFICIAL CÁLCULO RELACIONAL (PARTE I)
Introdução 2 INTELIGÊNCIA ARTIFICIAL CÁLCULO RELACIONAL (PARTE I) O Cálculo Relacional (CR) é uma extensão do Cálculo Proposicional que possui maior capacidade de representação de conhecimento O CR é também
ESTRUTURA DE DADOS (TCC )
ESTRUTURA DE DADOS (TCC-00.319) Ponteiros e funções Cristina Boeres 2 Ponteiros Variável do tipo ponteiro:! Linguagens como C permite o armazenamento e a manipulação de valores de endereços de memória!
INF 1771 Inteligência Artificial
INF 1771 Inteligência Artificial Aula 09 Prolog Edirlei Soares de Lima Variáveis Variáveis são representadas através de cadeias de letras, números ou _ sempre começando com letra
BCC Introdu c ao ` a Programa c ao Portugol Guillermo C amara-ch avez UFOP 1/35
BCC 201 - Introdução à Programação Portugol Guillermo Cámara-Chávez UFOP 1/35 Introdução I Lógica A lógica é usada no dia a dia das pessoas que trabalham com computação para solucionar problemas de forma
Algoritmos I Aula 13 Linguagem de Programação Java
Algoritmos I Aula 13 Linguagem de Programação Java Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação IDE Eclipse IDE (Integrated development environment) Criar um projeto
INTRODUÇÃO À COMPUTAÇÃO - EPET006 -
INTRODUÇÃO À COMPUTAÇÃO - EPET006 - Heleno Pontes Bezerra Neto - helenopontes@lccv.ufal.br Introdução ao MATLAB Tipos Primitivos 3. TÓPICOS PRELIMINARES Tipos Primitivos - ATÉ AGORA TRABALHAMOS NO MATLAB
Linguagens Formais e Autômatos Apresentação da Disciplina
Linguagens Formais e Autômatos Apresentação da Disciplina Andrei Rimsa Álvares Computação Histórico da Computação O que pode ser computado? Ábaco China Aprox. 3500 a.c. Máquina de Babbage Inglaterra 1823
Estruturas de Dados com Jogos. Capítulo 8 Árvores
Estruturas de Dados com Jogos Capítulo 8 Árvores 1 Seus Objetivos neste Capítulo 2 Entender o conceito, a nomenclatura e a representação usual da estrutura de armazenamento denominada Árvore, e de um tipo
Listas em Haskell. Listas. Linguagem Haskell. Maria Adriana Vidigal de Lima. Faculdade de Computação - UFU. Setembro
em Haskell Linguagem Haskell Faculdade de Computação - UFU Setembro - 2009 em Haskell 1 em Haskell Noções sobre Construção de por Compreensão Funções Sobre Processamento de Fundamentos em Haskell Noções
Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação
Ederson Luiz da Silva Ciência da Computação Algoritmos e Programação Linguagem de programação Linguagem de Programação Linguagem de máquina http://www.assemblyprogressivo.net/p/curso.html Linguagem de
Recursividade Exaustiva e Backtracking
Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação Recursividade Exaustiva e Tópicos Especiais em Programação Site: http://jeiks.net E-mail: jacsonrcsilva@gmail.com
Semântica Operacional
Semântica Conceitos Semântica é o estudo do significado. Incide sobre a relação entre significantes, tais como palavras, frases, sinais e símbolos, e o que eles representam, a sua denotação. Semântica
Pedro Vasconcelos DCC/FCUP. Programação Funcional 13 a Aula Definição de tipos
Programação Funcional 13 a Aula Definição de tipos Pedro Vasconcelos DCC/FCUP 2014 Declarações de sinónimos Podemos dar um nome novo a um tipo existente usando uma declaração de sinónimo. Exemplo (do prelúdio-padrão):
Algoritmo e Programação Matemática
Algoritmo e Programação Matemática Fundamentos de Algoritmos Parte 1 Renato Dourado Maia Instituto de Ciências Agrárias Universidade Federal de Minas Gerais Dados A funcionalidade principal de um computador
Estruturas de Repetição
Estruturas de Repetição Lista de Exercícios - 04 Programação de Computadores I Professor: Edwar Saliba Júnior Estruturas de Repetição O que são e para que servem? São comandos que são utilizados na programação
Introdução a Programação. Curso: Sistemas de Informação Programação I José R. Merlin
Introdução a Programação Curso: Sistemas de Informação Programação I José R. Merlin Programas Programas são instruções para o computador executar uma tarefa Estas instruções seguem uma lógica Lógica: modo
Introdução à Matemática Discreta
Introdução à Matemática Discreta Matemática Discreta Prof. Vilson Heck Junior vilson.junior@ifsc.edu.br Condução da disciplina Aulas: Quartas: 10:10 12:00 Sextas: 08:00 09:50 Haverá troca de professores:
Python Listas e Strings. Listas 23/11/2016. Por que usar listas? Listas. Listas - Solução. Listas - Problema
Python Listas e Strings Prof. Paulo Henrique Ribeiro Gabriel (Com base no material do Prof. André Backes) Listas Por que usar listas? Listas As variáveis declaradas até agora são capazes de armazenar um
Disciplina: Introdução à Engenharia da Computação
Colegiado de Engenharia de Computação Disciplina: Introdução à Engenharia da Computação Aula 07 (semestre 2011.2) Prof. Rosalvo Ferreira de Oliveira Neto, M.Sc. rosalvo.oliveira@univasf.edu.br 2 Representação
Aprendizado de Máquina para a Automação da Aquisicão de Conhecimento
Aprendizado de Máquina para a Automação da Aquisicão de Conhecimento Maria Carolina Monard mcmonard@icmc.usp.br Laboratório de Inteligência Artificial (LABIC) Instituto de Ciências Matemática e Computação
Linguagens de Programação
Visão Geral Faculdade de Computação - UFU Agosto - 2009 1 Princípios 2 O que é uma linguagem de programação? Linguagens naturais facilitam a expressão e o intercâmbio de idéias entre as pessoas. Assim
Inteligência Artificial. Sistemas Baseados em Conhecimento. Representação de Conhecimento (continuação)
Universidade Estadual do Oeste do Paraná Curso de Bacharelado em Ciência da Computação http://www.inf.unioeste.br/~claudia/ia2018.html Inteligência Artificial Sistemas Baseados em Conhecimento Representação
Autômatos e Linguagens
Autômatos e Linguagens Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Agosto, 2016 1 / 41 Sumário 1 Compiladores 2 Linguagens de programação 3 Ciência dos compiladores
Prolog: Programação em Lógica
Prolog: Programação em Lógica Gustavo C. M. Sousa 1, Braully R. da Silva 1 Djean Araújo 1 Leonardo Priori 1 Ramon V. Silva 1 Bruno M. de Oliveira 1 1 Instituto de Informática Universidade Federal de Goiás
Visão Geral... e conceitos básicos
Visão Geral.. e conceitos básicos 1 Curso de... Programação O que se estuda aqui? Algoritmos 2 E o que são algoritmos? Sequência finita e não ambígua de passos para a solução de um problema. Lembre- se