Introdução à linguagem Prolog

Tamanho: px
Começar a partir da página:

Download "Introdução à linguagem Prolog"

Transcrição

1 Introdução à linguagem Prolog Lógica Computacional 2 o ano LCC 2011/ Preâmbulo Ao longo do semestre iremos na disciplina de Lógica Computacional fazer uso da linguagem Prolog. O interpretador adoptado será o SWI-Prolog que está disponível para para a generalidade das plataformas (MS-Windows, Linux, macosx). Alguns apontadores úteis: Página web do SWI-Prolog: Manual do SWI-Prolog: Ao longo desta ficha são apresentados os conceitos elementares da linguagem Prolog. São também apresentados alguns exercícios que se recomenda que realizem e testem com o auxílio do interpretador (na aula prática teremos oportunidade de voltar a alguns deles). 2 Apresentação da linguagem Prolog 2.1 Conceitos Preliminares Termos. O Prolog é uma linguagem simbólica que manipula termos que podem ser: Variáveis denotadas por identificadores começados por letras maiúsculas (e.g. X, Y, Xs,...); Constantes átomos (identificadores começados por letras minúsculas) ou valores de tipos pré-definidos como inteiros, reais, strings, etc. (e.g. abc, xyz, 32, ); Termos Compostos termos da forma f(t1,...,tn) onde f é designado por functor (nome da função) e t1...tn são termos (e.g. xyz(x,abc), abc(abc(abc,abc)), +(4,2)) Obs.: como iremos ver adiante, o Prolog permite a declaração de operadores infixos. Assim irá permitir escrever como alternativa ao termo +(4,2) (o mesmo se aplica a outros operadores infixos que serão apresentados adiante). 1

2 Substituições e Unificação. O que caracteriza as variáveis é o facto de elas poderem vir a ser substituidas por outros termos. Considere-se o termo t(x,y): se substituirmos X por abc(a,3) e Y por Z obtemos o termos t(abc(a,3),z). Uma operação fundamental no modelo de execução do Prolog é o que se designa por Unificação de dois termos. A ideia consiste em encontrar uma substituição que iguale (se possível) os termos dados. Vejamos alguns exemplos: 1. X=4, Y=3 é um unificador dos termos abc(3,x) e abc(y,4); 2. X=4, Y=4 é um unificador dos termos abc(x,x) e abc(y,4); 3. os termos abc(3,4) e abc(x,x) não dispõe de unificador. 4. X=g(Z), Y=y é um unificador dos termos f(x,y) e f(g(z), Y). 5. X=g(a), Y=y, Z=a é um unificador dos termos f(x,y) e f(g(z), Y). Uma característica partilhada pelos unificadores apresentados nos números (1), (2) e (4) é que se tratam dos unificadores mais gerais (qualquer outra substituição que unifique os termos pode ser expressa como um refinamento da substituição dada). Já no caso do unificador apresentado em (5) essa propriedade não se verifica: facilmente se verifica que a substituição pode ser obtida quando aplicamos a substituição [Z=a] ao unificador apresentado em (4). Adiante iremos ter oportunidade de aprofundar estes aspectos mais teóricos... Para já interessa reter que oprolog, quando unificar dois termos, determina sempre o unificador mais geral (i.e. a substituição mais simples que iguala os termos). Exercício 1 Determine o unificador mais geral para os seguintes pares de termos (se existir... naturalmente): 1. f(x, g(y )) e g(x, f(y )) 2. f(x, g(y )) e Z 3. f(x, g(y)) e f(g(y), X) 4. f(x) e X 5. f(x) e f(3 + 2) 6. f(3) e f(2 + 1) 7. f(3) e A(X) 2.2 Programas em Prolog Executar um programa em Prolog consiste em interrogar o interpretador sobre a validade de um dado predicado lógico. A resposta mais simples será então true ou fail (se o predicado for válido ou não, respectivamente). 2

3 Objectivo (Goal). Quando se invoca o SWI-Prolog, surge o prompt?- que assinala que o interpretador aguarda a introdução de um objectivo (também designado por query, ou goal). Calvin:~ jba$ /opt/local/bin/swipl Welcome to SWI-Prolog (Multi-threaded, 32 bits, Version ) Copyright (c) University of Amsterdam. SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Please visit for details. For help, use?- help(topic). or?- apropos(word).?- Como referimos, o objectivo será um predicado lógico. Iremos ter oportunidade de definir novos predicados mas, para já, concentremo-nos na utilização do predicado prédefinido =/2 (o /2 significa que o predicado espera dois argumentos). Este predicado será válido precisamente quando os termos que forem passados como argumentos unificarem. Assim podemos introduzir:?- =(3,3). true.?- 3=3. true.?- 3=2.?- 3=X. X = 3.?- 3+2=X. X = 3+2.?- 3 + X = Y * 2.?- Os exemplos apresentados revelam-nos duas coisas: (1) podemos utilizar a notação infixa e, (2) quando no objectivo estão envolvidas variáveis o Prolog retorna uma substituição dessas variáveis que verifiquem o predicado (ou falha, se não existir nenhuma substituição nessas condições) podemos então dizer que, intuitivamente, as variáveis dos objectivos estão quantificadas existencialmente. Exercício 2 Interrogue o interpretador de Prolog por forma a ele retornar os unificadores mais gerais atrás solicitados. 3

4 2.3 Base de Conhecimento Referimos que executar um programa em Prolog consiste em interrogar o interpretador relativamente a um objectivo. Mas, em que é que consiste um programa Prolog?. Um programa em Prolog será a base de conhecimento que o interpretador utiliza para determinar a validade do objectivo pedido. Essa base de conhecimento será consituída por: Factos: que estabelecem a validade imediata (de instâncias) de predicados; Regras: que condicionam a validade de predicados à validade de sub-objectivos. Factos. Comecemos pelos primeiros. Como exemplos de factos podemos ter: pai(joao,manuel). pai(cristina, jose). pai(joaquim,manuel). pai(francisco,joao). pai(helena,joao) Com base nestes factos, diriamos que pai(joaquim,manuel) é válido mas pai(joaquim,jose) já não o é (porque nada estabelece a sua validade). Para verificar isso com o Prolog, necessitamos de carregar a base de conhecimento no interpretador. Para tal devemos: 1. gravar um ficheiro com os factos apresentados (normalmente dá-se a extensão.pl aos ficheiros Prolog, e.g. pai.pl ); 2. carregar o ficheiro no interpretador por intermédio do predicado pré-definido consult (e.g. consult(pai.pl) ). Exercício 3 Verifique a validade de alguns objectivos com a base de conhecimento apresentada. O que acontece quando se inclui variáveis? Por vezes, o interpretador retorna uma substituição de resultado sem voltar ao prompt inicial. Isso assinala que a solução apresentada é uma de várias possíveis, podendo o utilizador: digitar. (ponto) e retornar ao prompt inicial; digitar ; (ponto e vírgula) para solicitar outra solução. Exercício 4 Introduza um predicado na base de conhecimento que permita determinar todos os filhos de manuel. O que aconteceria se incluisse na base de conhecimento o facto pai(x,carlos)? Experimente... (verifique o impacto de o incluir no início e no fim da base de conhecimento). 4

5 O exercício anterior permite concluir que, nos factos, devemos entender as variáveis que ocorrem nos factos como quantificadas universalmente. Se as questões colocadas ao interpretador de Prolog são predicados lógicos, é natural perguntarmo-nos como construir predicados à custa de conectivas lógicas (como e, ou, etc.). O Prolog tem definido os operadores: conjunção: denotado por uma vírgula (,) disjunção: denotado por um ponto e vírgula (;) (As restantes conectivas lógicas proposicionais serão introduzidas mais tarde.) A título de exemplo, poderíamos interrogar o Prolog com o seguinte goal composto:?- pai(x,manuel), pai(x,manuel). X = joao ; X = joana.?- Regras. A expressividade do Prolog resulta do facto de permitir incluir, na base de conhecimento, regras que condicionam a validade de um predicado (colocado no lado esquerdo do operador :-, e designado por cabeça da regra) à validade de um conjunto de outros predicados (designados por corpo da regra). A título de exemplo, temos que a regra: avo(x,y) :- pai(x,z), pai(z,y). Esta regra diz-nos que o predicado avo(x,y) será válido quando for válido pai(x,z) e simultaneamente for também válido pai(z,y) (para quaisquer instâncias de X, Y, Z). Quando acrescentada à base de conhecimento apresentada acima, permite que o Prolog responda afirmativamente ao predicado avo(francisco,manuel) o interpretador de Prolog será capaz de encontrar instâncias que verificam o corpo da regra (no caso, pai(francisco,joao) e pai(joao,manuel)). Note que nas regras, as variáveis que ocorrem na cabeça da regra devem ser entendidas como quantificadas universalmente (como nos factos). Já as que só ocorrem no corpo da regra devem ser entendidas como quantificadas existencialmente (como nos objectivos). Exercício 5 Estenda a base de conhecimento para exprimir outros graus de parentesco, como irmão, tio, etc. 3 Manipulação de listas Um exemplo de um tipo estruturado muito utilizado em Prolog são as listas. A sintaxe pré-definida das listas é [] para denotar a lista vazia e [H T] que denotar a lista com cabeça H e cauda T. Como um exemplo de um predicado envolvendo listas, considere-se o predicado que verifique se um dado elemento é a cabeça de uma lista: 5

6 head(x,[x _]). Claro está que, tratando-se as listas de um tipo recursivo, a definição de predicados interessantes sobre listas passa por se definirem predicados recursivos. A título de exemplo, vamos considerar a definição do predicado member/2 que verifique se um dado elemento pertence a uma lista. member(x,[x _]). member(x,[_ T]) :- member(x,t). Este predicado foi definido de forma análoga à função recursiva elem do Haskell: um elemento pertence a uma lista se for a cabeça dessa lista, ou se pertencer à cauda. Um exemplo da utilização deste predicado seria:?- member(2,[1,2,3]). true.?- member(4,[1,2,3]). Mas em Prolog podemos também utiliza-lo com variáveis não instanciadas com o objectivo de determinar quais os elementos de uma lista:?- member(x,[1,2,3]). X = 1 ; X = 2 ; X = 3 ; Ou até para determinar soluções a questões mais complicadas, como quais os elementos pares de uma lista:?- member(x,[3,5,4,6,5,7]), X mod 2 =:= 0. X = 4 ; X = 6 ; Exercício 6 1. Defina o predicado concat/3 que verifique quando uma lista é a concatenação de outras duas. Verifique o resultado quando o invoca com diferentes listas instanciadas. 4 Operações aritméticas Já vimos que o Prolog aceita termos que representem expressões matemáticas, como 3+4*2. Mas quando manipulamos esses termos estamos normalmente interessados em avaliar essas expressões (i.e. calcular o seu resultado). O Prolog disponibiliza para o efeito o predicado is que avalia o segundo argumento e unifica o resultado com o primeiro. Alguns exemplos (onde se utiliza a notação infixa para o predicado): 6

7 ?- X is 3+2. X = 5.?- 3+2 is 2+3.?- 5 is 3+2. true.?- 5 is X+2. ERROR: is/2: Arguments are not sufficiently instantiated Um aspecto importante na utilização do predicado is é a assimetria induzida: o segundo argumento deve ser sempre uma expressão completamente instanciada. Assim, se definirmos o predicado: soma(x,y,z) :- X is Y + Z. devemos considerar o segundo e o terceiro argumentos como argumentos de entrada, que necessitam estar devidamente instanciados. Uma forma compacta de se exprimir esse facto (normalmente utilizada na documentação) é através da assinatura soma(-x,+y,+z) assim identifica-se o argumento Y e Z como de entrada e X como de saída. Esta mesma convenção é utilizada no manual do SWI-Prolog, como se pode confirmar invocando o predicato apropos(is) (ou, alternativamente, help(is)). Exercício 7 1. Defina o predicado fact(-r,+x) que suceda quando R for o factorial de X. 2. Uma forma alternativa de lidar com números naturais consiste em considerar termos zero, suc(zero), suc(suc(zero)), etc. (i.e. utilizar notação unária para os naturais). Defina o predicado nat2int/2 que sucede quando o primeiro argumento é a representação unária do segundo. 3. No predicado definido na alínea anterior, verifique: que argumentos tem de ser utilizados como entrada e como saída?; o que acontece quando solicita ao interpretador várias respostas? 4. Verifique, com o auxílio do mecanismo de help do SWI-Prolog (ou da documentação on-line, se preferir) qual a funcionalidade oferecida pelos operadores: =:=, =\=, <, =<, 5 Inferência do Prolog Um objectivo em Prolog consiste numa lista de predicados. O resultado da execução desse objectivo no interpretador consiste numa substituição que verifique esses predicados. O processo construção da substituição é normalmente designado por inferência, e pode ser justificado construindo uma árvore como se descreve: 7

8 Na raiz da árvore, coloca-se a lista de predicados. O Prolog irá processar cada predicado dessa lista por ordem. Para cada predicado, o Prolog irá procurar encontrar na base de conhecimento uma instância dum facto ou duma regra cuja cabeça unifique com esse predicado. Esta procura processa-se também pela ordem pela qual as definições ocorrem na base de conhecimento. Quando é encontrada uma regra nas condições referidas, cria-se um descendente na árvore contendo a lista já afectada pela substituição resultante da unificação (relembre que o resultada na unificação é uma substituição das variáveis) e onde o predicado em análise é substituído pelo lado direito da regra (ou simplesmente desaparece, no caso dos factos). É habitual anotarmos os arcos da árvore com as substituições resultantes das unificações. Quando existe mais do que uma possibilidade para a referida unificação (e.g. várias regras são aplicáveis), traduz-se por uma ramificação da árvore de inferência. Operacionalmente, o Prolog trata esta ramificação pelo mecanismo de backtracking (travessia depth-first da árvore). Quando a lista de predicados fica vazia, cria-se uma folha na árvore denotada como true representa um resultado apresentado ao utilizador (a substituição calculada ao longo do caminho). Quando não existe qualquer regra na base de conhecimento que unifique com o primeiro predicado da lista, cria-se uma folha denotada por A árvore de derivação para o objectivo member(x,[1,2]), X mod 2 =:= 0 será: member(x,[1,2]), X mod 2 =:= 0 X = 1 1 mod 2 =:= 0 member(x,[2]), X mod 2 =:= 0 fail X = 2 2 mod 2==0 member(x,[]), X mod 2 =:= 0 yes (X = 2) fail Exercício 8 Considere o predicato fact/2 definido no exercício Apresente a árvore de inferência para o objectivo fact(r,2). Exercício 9 Considere a seguinte definição para o predicado nat2int/2 (c.f. exercício 7). nat2int(zero,0). nat2int(suc(x),n) :- nat2int(x,n2), N is N Apresente a árvore de inferência para o objectivo nat2int(suc(suc(zero)),x). 2. Apresente a árvore de inferência para o objectivo nat2int(x,2). 3. Comente os resultados obtidos. Consegue propor alguma forma de ultrapassar os problemas detectados? 8

PROLOG OPERADORES PRÉ-DEFINIDOS

PROLOG OPERADORES PRÉ-DEFINIDOS 118 11 PROLOG OPERADORES PRÉ-DEFINIDOS Exercício 11.6 Suponha que tem uma base de dados que indica as notas que os alunos tiveram nas várias disciplinas (nota(nome,disciplina,nota)) e quais os alunos inscritos

Leia mais

Aula Prática 2. Paradigmas da Programação I / Programação Funcional

Aula Prática 2. Paradigmas da Programação I / Programação Funcional Aula Prática 2 Paradigmas da Programação I / Programação Funcional ESI/MCC 1 o ano (2005/2006) Nesta aula pretende-se introduzir os conceitos seguintes: valores e expressões; tipos básicos e tipos compostos;

Leia mais

Tópicos de Matemática. Teoria elementar de conjuntos

Tópicos de Matemática. Teoria elementar de conjuntos Tópicos de Matemática Lic. em Ciências da Computação Teoria elementar de conjuntos Carla Mendes Dep. Matemática e Aplicações Universidade do Minho 2010/2011 Tóp. de Matemática - LCC - 2010/2011 Dep. Matemática

Leia mais

Lógica Proposicional

Lógica Proposicional Lógica Proposicional Lógica Computacional Carlos Bacelar Almeida Departmento de Informática Universidade do Minho 2007/2008 Carlos Bacelar Almeida, DIUM LÓGICA PROPOSICIONAL- LÓGICA COMPUTACIONAL 1/28

Leia mais

Recursão PROGRAMAÇÃO EM LÓGICA. Recursão. Sonho Recursivo. Recursão. Recursão. Linguagem Prolog Parte IV

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

Leia mais

Prolog. MATA56 - Paradigmas de Linguagens de Programação, UFBA, Prof. Rodrigo Rocha Prolog. Iniciando.

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

Leia mais

Programação Lógica. Controle (Bactracking, Cut, Fail) Paulo Henrique Ribeiro Gabriel

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)

Leia mais

Tipos Algébricos. Programação Funcional. Capítulo 11. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto

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

Leia mais

Linguagens Lógicas. Aluno: Victor Rocha

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

Leia mais

Capítulo 3 Lógica de Primeira Ordem

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

Leia mais

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 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

Leia mais

Descrição do Mundo de Wumpus. Inteligência Artificial

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

Leia mais

BUSCA DE SOLUÇÕES EM PROLOG

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:

Leia mais

Lógica Computacional Aula 4

Lógica Computacional Aula 4 Lógica Computacional Aula 4 DCC/FCUP 2017/18 Conteúdo 1 Lógica proposicional 1 1.1 Fórmulas de Horn.......................................... 1 1.2 Satisfazibilidade............................................

Leia mais

Listas em Prolog. Listas

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

Leia mais

Linguagens Lógicas. Alunos: Josiane Novais Cláudio Moisés

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

Leia mais

Teoria Elementar dos Conjuntos

Teoria Elementar dos Conjuntos Teoria Elementar dos Conjuntos Este capítulo visa oferecer uma breve revisão sobre teoria elementar dos conjuntos. Além de conceitos básicos importantes em matemática, a sua imprtância reside no fato da

Leia mais

Layout. Módulos. Normalmente, cada módulo está armazenado num ficheiro com o mesmo nome do módulo. Exemplo.hs

Layout. Módulos. Normalmente, cada módulo está armazenado num ficheiro com o mesmo nome do módulo. Exemplo.hs Layout Ao contrário de quase todas as linguagens de programação, o Haskell não necessita de marcas para delimitar as diversas declarações que constituem um programa. Em Haskell a identação do texto (isto

Leia mais

03/04/2016 LÓGICA MATEMÁTICA. Prof. Esp. Fabiano Taguchi. Introdução ao Prolog

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

Leia mais

Aula 2: Linguagem Proposicional

Aula 2: Linguagem Proposicional Lógica para Computação Primeiro Semestre, 2015 Aula 2: Linguagem Proposicional DAINF-UTFPR Prof. Ricardo Dutra da Silva Linguagens naturais, como o nosso Português, podem expressar ideias ambíguas ou imprecisas.

Leia mais

MD Lógica de Proposições Quantificadas Cálculo de Predicados 1

MD Lógica de Proposições Quantificadas Cálculo de Predicados 1 Lógica de Proposições Quantificadas Cálculo de Predicados Antonio Alfredo Ferreira Loureiro loureiro@dcc.ufmg.br http://www.dcc.ufmg.br/~loureiro MD Lógica de Proposições Quantificadas Cálculo de Predicados

Leia mais

Capítulo 3 Lógica de Primeira Ordem

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 Martins J.P., Lógica para Programação, Capítulo

Leia mais

Lógica Computacional

Lógica Computacional Aula Teórica 13: Dedução Natural em Lógica Proposicional António Ravara Simão Melo de Sousa Departamento de Informática, Faculdade de Ciências e Tecnologia, Universidade Nova de Lisboa Departamento de

Leia mais

USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS. Bruno Maffeo Departamento de Informática PUC-Rio

USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS. Bruno Maffeo Departamento de Informática PUC-Rio USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS Bruno Maffeo Departamento de Informática PUC-Rio MÉTODO INDUTIVO O método indutivo para resolver problemas aqui empregado inspira-se na formulação mais

Leia mais

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA PARA A COMPUTAÇÃO PROF. DANIEL S. FREITAS UFSC - CTC - INE Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.1/59 1 - LÓGICA E MÉTODOS DE PROVA 1.1) Lógica Proposicional

Leia mais

Lógica Computacional DCC/FCUP 2017/18

Lógica Computacional DCC/FCUP 2017/18 2017/18 1 Lógica de primeira ordem Linguagens da lógica de primeira ordem Termos Fórmulas Semântica de Lógica de primeira ordem Lógica de primeira ordem Na lógica proposicional não é possível representar

Leia mais

Aula Prática 3. Paradigmas da Programação I / Programação Funcional. ESI/MCC 1 o ano (2005/2006)

Aula Prática 3. Paradigmas da Programação I / Programação Funcional. ESI/MCC 1 o ano (2005/2006) Aula Prática 3 Paradigmas da Programação I / Programação Funcional ESI/MCC 1 o ano (2005/2006) Nesta aula pretende-se que os alunos: consolidem os conceitos de expressão, tipo e redução; compreendam a

Leia mais

Fundamentos 1. Lógica de Predicados

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

Leia mais

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 3ª Parte Prof. Sandra Pais Soares

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 3ª Parte Prof. Sandra Pais Soares Curso Profissional de Gestão e Programação de Sistemas Informáticos Programação e Sistemas de Informação Módulo 1 3ª Parte Prof. Sandra Pais Soares Fundamentos de Programação 1. Palavras Reservadas 2.

Leia mais

Programação Funcional Aulas 5 & 6

Programação Funcional Aulas 5 & 6 Programação Funcional Aulas 5 & 6 Sandra Alves DCC/FCUP 2016/17 Definições usando outras funções Podemos definir funções usando outras previamente definidas (por exemplo: do prelúdio-padrão). Exemplo:

Leia mais

1 Lógica de primeira ordem

1 Lógica de primeira ordem 1 Lógica de primeira ordem 1.1 Sintaxe Para definir uma linguagem de primeira ordem é necessário dispor de um alfabeto. Este alfabeto introduz os símbolos à custa dos quais são construídos os termos e

Leia mais

Vamos agora abordar um conjunto de aspectos complementares, incluindo:

Vamos agora abordar um conjunto de aspectos complementares, incluindo: Alguns aspectos complementares da linguagem PROLOG Vamos agora abordar um conjunto de aspectos complementares, incluindo: A conversão de strings em listas de códigos A carga de programas e Bases de Conhecimento

Leia mais

Alguns Exercícios de Inteligência Artificial

Alguns Exercícios de Inteligência Artificial Alguns Exercícios de Inteligência Artificial Ana Paula Tomás Nelma Moreira Departamento de Ciência de Computadores Faculdade de Ciências, Universidade do Porto email: {apt,nam}@ncc.up.pt 1997 1. Números

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Program João Manuel R. S. Tavares Sumário 1. Ciclo de desenvolvimento de um programa; 2. Descrição de algoritmos; 3. Desenvolvimento modular de programas; 4. Estruturas de controlo de um programa.

Leia mais

Programação Lógica. Programação Lógica PROLOG

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

Leia mais

Lógica Computacional

Lógica Computacional Aula Teórica 22: Departamento de Informática 16 de Maio de 2011 Introdução Revisão do procedimento Exemplo em Primeira Ordem Considere-se o seguinte conjunto de cláusulas, assumindo as variáveis universalmente

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 13 a Aula Definição de tipos

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):

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 5 a Aula Definições recursivas

Pedro Vasconcelos DCC/FCUP. Programação Funcional 5 a Aula Definições recursivas Programação Funcional 5 a Aula Definições recursivas Pedro Vasconcelos DCC/FCUP 2014 Definições usando outras funções Podemos definir funções usando outras previamente definidas (e.g. do prelúdio-padrão).

Leia mais

Introdução à Programação em Prolog

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

Leia mais

Elisabete Raposo Freire Departamento de Matemática Universidade dos Açores 21 Abril 2012

Elisabete Raposo Freire Departamento de Matemática Universidade dos Açores 21 Abril 2012 Elisabete Raposo Freire Departamento de Matemática Universidade dos Açores 21 Abril 2012 Problema de Einstein (adaptado) Existem 5 casas de 5 cores diferentes. Em cada casa vive uma pessoa de nacionalidade

Leia mais

Cálculo proposicional

Cálculo proposicional O estudo da lógica é a análise de métodos de raciocínio. No estudo desses métodos, a lógica esta interessada principalmente na forma e não no conteúdo dos argumentos. Lógica: conhecimento das formas gerais

Leia mais

Programação. Folha Prática 5. Lab. 5. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved.

Programação. Folha Prática 5. Lab. 5. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved. Programação Folha Prática 5 Lab. 5 Departamento de Informática Universidade da Beira Interior Portugal Copyright 2010 All rights reserved. 1. Revisão. 2. Objectivos. 3. Exercícios LAB. 5 5ª semana ESTRUTURAS

Leia mais

Conceitos Básicos Linguagem C

Conceitos Básicos Linguagem C Conceitos Básicos Linguagem C PROF. MAURÍCIO A DIAS MACDIASPAE@GMAIL.COM 2 Método Método básico para construção de algoritmos 1. Compreender completamente o problema a ser resolvido, se possível dividindo

Leia mais

Basicamente, um programa PROLOG é constituído por fatos acerca do domínio e regras que são sentenças ou fórmulas.

Basicamente, um programa PROLOG é constituído por fatos acerca do domínio e regras que são sentenças ou fórmulas. 1 EXERCÍCIOS PROLOG Lógica Prof. Tacla (UTFPR/Curitiba) arquivo: ExProlog01.docx 1. Introdução Basicamente, um programa PROLOG é constituído por fatos acerca do domínio e regras que são sentenças ou fórmulas.

Leia mais

3 AULA. Valorações e Tabelas de Verdade LIVRO. META: Apresentar tabelas de verdade para classificar proposições lógicas.

3 AULA. Valorações e Tabelas de Verdade LIVRO. META: Apresentar tabelas de verdade para classificar proposições lógicas. 1 LIVRO Valorações e Tabelas de Verdade META: Apresentar tabelas de verdade para classificar proposições lógicas. OBJETIVOS: Ao fim da aula os alunos deverão ser capazes de: Aplicar valorações de um conjunto

Leia mais

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO Dados em Algoritmos Quando escrevemos nossos programas, trabalhamos com: Dados que nós fornecemos ao programa Dados

Leia mais

Composição de Funções

Composição de Funções Composição de Funções Existem muitas situações em que uma função depende de uma variável que, por sua vez, depende de outra, e assim por diante. Podemos dizer, por exemplo, que a concentração de monóxido

Leia mais

Introdução à Computação. Programas Básicos. ISEP DEI, Angelo Martins 2006 Programas Básicos - 1

Introdução à Computação. Programas Básicos. ISEP DEI, Angelo Martins 2006 Programas Básicos - 1 Introdução à Computação Programas Básicos ISEP DEI, Angelo Martins 2006 Programas Básicos - 1 Conteúdo Exemplo de um programa Apresentação sumária da construção de um programa em VB. Objectos e o mecanismo

Leia mais

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 8. Árvores Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 Árvores - estruturas não lineares (1) Uma lista é um exemplo de uma estrutura de dados

Leia mais

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 8. Árvores Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 Árvores - estruturas não lineares (1) Uma lista é um exemplo de uma estrutura de dados

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 4 a Aula Listas

Pedro Vasconcelos DCC/FCUP. Programação Funcional 4 a Aula Listas Programação Funcional 4 a Aula Listas Pedro Vasconcelos DCC/FCUP 2014 Listas Listas são coleções de elementos: em que a ordem é significativa; possivelmente com elementos repetidos. Listas em Haskell Uma

Leia mais

Casamento de Padrão. Programação Funcional. Capítulo 5. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto

Casamento de Padrão. Programação Funcional. Capítulo 5. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto Programação Funcional Capítulo 5 Casamento de Padrão José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/63 1 Casamento de padrão 2 Expressão case 3 Definição

Leia mais

LÓGICA DIGITAL - CONCEITOS. * Constantes. * Expressões: Aritméticas; Lógicas; Tabela Verdade; Relacionais; Booleanas. * Portas Lógicas.

LÓGICA DIGITAL - CONCEITOS. * Constantes. * Expressões: Aritméticas; Lógicas; Tabela Verdade; Relacionais; Booleanas. * Portas Lógicas. * Tipos de Dados. * Constantes. * Expressões: Aritméticas; Lógicas; Tabela Verdade; Relacionais; Booleanas. * Portas Lógicas. 1 TIPOS DE DADOS Dados inteiros Representação das informações pertencentes

Leia mais

Lógica. Fernando Fontes. Universidade do Minho. Fernando Fontes (Universidade do Minho) Lógica 1 / 65

Lógica. Fernando Fontes. Universidade do Minho. Fernando Fontes (Universidade do Minho) Lógica 1 / 65 Lógica Fernando Fontes Universidade do Minho Fernando Fontes (Universidade do Minho) Lógica 1 / 65 Outline 1 Introdução 2 Implicações e Equivalências Lógicas 3 Mapas de Karnaugh 4 Lógica de Predicados

Leia mais

Casamento de Padrão. Programação Funcional. Capítulo 6. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto

Casamento de Padrão. Programação Funcional. Capítulo 6. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto Programação Funcional Capítulo 6 Casamento de Padrão José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.2 1/66 1 Casamento de padrão 2 Expressão case 3 Definição

Leia mais

Lógica Computacional

Lógica Computacional Lógica Computacional Consequência Tautológica e Lógica em Frases Quantificadas Leis de de Morgan Separação de Quantificadores Consequências Analíticas e Método Axiomático 3 Novembro 2016 Lógica Computacional

Leia mais

Expressões Regulares. Tiago Alves de Oliveira

Expressões Regulares. Tiago Alves de Oliveira Expressões Regulares Tiago Alves de Oliveira Introdução As expressões regulares consistem em uma maneira de representar um padrão de caracteres. Expressão Regular descreve um conjunto de cadeias de caracteres,

Leia mais

Aulas 10 e 11 / 18 e 20 de abril

Aulas 10 e 11 / 18 e 20 de abril 1 Conjuntos Aulas 10 e 11 / 18 e 20 de abril Um conjunto é uma coleção de objetos. Estes objetos são chamados de elementos do conjunto. A única restrição é que em geral um mesmo elemento não pode contar

Leia mais

Material Teórico - Módulo Equações do Segundo Grau. Equações de Segundo Grau: outros resultados importantes. Nono Ano do Ensino Funcamental

Material Teórico - Módulo Equações do Segundo Grau. Equações de Segundo Grau: outros resultados importantes. Nono Ano do Ensino Funcamental Material Teórico - Módulo Equações do Segundo Grau Equações de Segundo Grau: outros resultados importantes Nono Ano do Ensino Funcamental Autor: Prof. Fabrício Siqueira Benevides Revisor: Prof. Antonio

Leia mais

Lógica Proposicional Parte 2

Lógica Proposicional Parte 2 Lógica Proposicional Parte 2 Como vimos na aula passada, podemos usar os operadores lógicos para combinar afirmações criando, assim, novas afirmações. Com o que vimos, já podemos combinar afirmações conhecidas

Leia mais

UNIDADE ACADÊMICA: Faculdade de

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

Leia mais

Exercícios para Fundamentos da Programação

Exercícios para Fundamentos da Programação Exercícios para Fundamentos da Programação Fausto Almeida, Cláudia Antunes, Ana Cardoso-Cachopo, Pedro Amaro de Matos, Francisco Saraiva de Melo Departamento de Engenharia Informática Instituto Superior

Leia mais

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2006/2007

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2006/2007 ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA INTRODUÇÃO À PROGRAMAÇÃO (ENG. INFORMÁTICA) COMPUTADORES E PROGRAMAÇÃO I (ENG. ELECTROTÉCNICA) 2006/2007 TRABALHO PRÁTICO Nº

Leia mais

ANEXO B Manual básico de SQL

ANEXO B Manual básico de SQL ANEXO B Manual básico de SQL Este apêndice descreve como utilizar a Linguagem de Pesquisa Estruturada (SQL, Structured Query Language) para criar conjuntos de registros destinados às páginas dinâmicas.

Leia mais

MATEMÁTICA DISCRETA E LÓGICA MATEMÁTICA PROF. APARECIDO EDILSON MORCELLI

MATEMÁTICA DISCRETA E LÓGICA MATEMÁTICA PROF. APARECIDO EDILSON MORCELLI MATEMÁTICA DISCRETA E LÓGICA MATEMÁTICA PROF. APARECIDO EDILSON MORCELLI CONSTRUÇÃO DA TABELA- VERDADE Dada a fórmula: {A [C (A C)]} Observamos três ocorrências de conectivos:,,. O último é a primeira

Leia mais

Prof. Esp. Andrew Rodrigues 1

Prof. Esp. Andrew Rodrigues   1 Prof. Esp. Andrew Rodrigues www.andrewrodrigues.com.br www.andrewrodrigues.com.br 1 PHP em Ação PHP é uma linguagem de programação que pode fazer todo o tipo de coisas: avaliar dados de formulários enviados

Leia mais

Conceitos básicos de programação

Conceitos básicos de programação Constantes class Exemplo { static void Main() { float fahr, celsius; int lower, upper, step; lower = 0; /* limite inferior da tabela de temperaturas */ upper = 300; /* limite superior */ step = 20; /*

Leia mais

Instituto de Matemática e Estatística, UFF Março de 2011

Instituto de Matemática e Estatística, UFF Março de 2011 ,,,,, Instituto de Matemática e Estatística, UFF Março de 2011 ,, Sumário,,. finitos,. conjunto: por lista, por propriedade.. Igualdade,. Propriedades básicas.. ,, Christos Papadimitriou, Autor dos livros

Leia mais

Programação Funcional

Programação Funcional Programação Funcional Capítulo 2 Primeiros Passos José Romildo Malaquias 2012.1 Departamento de Computação Universidade Federal de Ouro Preto 1 / 39 1 Glasgow Haskell Compiler 2 O módulo Prelude 3 Aplicação

Leia mais

Matemática Discreta - 07

Matemática Discreta - 07 Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Matemática Discreta - 07 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav

Leia mais

Fundamentos de Lógica Matemática

Fundamentos de Lógica Matemática Webconferência 3-01/03/2012 Inferência Lógica Prof. L. M. Levada http://www.dc.ufscar.br/ alexandre Departamento de Computação (DC) Universidade Federal de São Carlos (UFSCar) 2012/1 Objetivos Análise

Leia mais

Compilador de LP3 para C3E e P3

Compilador de LP3 para C3E e P3 Compilador de LP3 para C3E e P3 Luís Gil 1 13 de Junho de 2005 1 estudante de Ciências Informáticas no Instituto Superior Técnico 1 Introdução Este relatório descreve a sintaxe e a semântica da Linguagem

Leia mais

f(h) δ h p f(x + h) f(x) (x) = lim

f(h) δ h p f(x + h) f(x) (x) = lim Capítulo 6 Derivação numérica Nesta seção vamos desenvolver métodos para estimar a derivada de uma função f calculada em um ponto x, f (x, a partir de valores conecidos de f em pontos próximos ao ponto

Leia mais

Árvores (ordenadas) Departamento de Ciência de Computadores da FCUP MC Aula 11 1

Árvores (ordenadas) Departamento de Ciência de Computadores da FCUP MC Aula 11 1 Árvores (ordenadas) Recordemos que, uma árvore é grafo (não dirigido) em que o número de vértices excede em 1 o número de arcos. Um vértice é acessível a todos os outros: a raiz. Os vértices que são acessíveis

Leia mais

w 1 = v 1 + v 2 + v 3 w 2 = 2v 2 + v 3 (1) w 3 = v 1 + 3v 2 + 3v 3 também são linearmente independentes. T =

w 1 = v 1 + v 2 + v 3 w 2 = 2v 2 + v 3 (1) w 3 = v 1 + 3v 2 + 3v 3 também são linearmente independentes. T = Independência e dependência linear ) a) Sejam v, v e v vectores linearmente independentes de um espaço linear S. Prove que os vectores também são linearmente independentes. Resolução Seja V a expansão

Leia mais

UNIVERSIDADE FEDERAL DE PERNAMBUCO. Resumo. Nesta aula, apresentaremos a noção de integral indefinidada. Também discutiremos

UNIVERSIDADE FEDERAL DE PERNAMBUCO. Resumo. Nesta aula, apresentaremos a noção de integral indefinidada. Também discutiremos CÁLCULO L NOTAS DA DÉCIMA OITAVA AULA UNIVERSIDADE FEDERAL DE PERNAMBUCO Resumo. Nesta aula, apresentaremos a noção de integral indefinidada. Também discutiremos a primeira técnica de integração: mudança

Leia mais

EXPRESSÕES ARITMÉTICAS PARTE 1

EXPRESSÕES ARITMÉTICAS PARTE 1 AULA 5 EXPRESSÕES ARITMÉTICAS PARTE 1 5.1 Operadores aritméticos Os operadores aritméticos definem as operações aritméticas que podem ser realizadas sobre os números inteiros e reais. Para os inteiros,

Leia mais

Laboratório 4 Correcção de erros sintácticos e tipos de dados primitivos

Laboratório 4 Correcção de erros sintácticos e tipos de dados primitivos Instituto Politécnico de Setúbal Escola Superior de Tecnologia Departamento de Sistemas e Informática Laboratório 4 Correcção de erros sintácticos e tipos de dados primitivos Disciplina de Introdução à

Leia mais

4 AULA. Regras de Inferência e Regras de Equivalência LIVRO. META: Introduzir algumas regras de inferência e algumas regras de equivalência.

4 AULA. Regras de Inferência e Regras de Equivalência LIVRO. META: Introduzir algumas regras de inferência e algumas regras de equivalência. 1 LIVRO Regras de Inferência e Regras de Equivalência 4 AULA META: Introduzir algumas regras de inferência e algumas regras de equivalência. OBJETIVOS: Ao fim da aula os alunos deverão ser capazes de:

Leia mais

parent parent corpo, corpo 1 2 Prolog - João C. P. da Silva

parent parent corpo, corpo 1 2 Prolog - João C. P. da Silva Prolog é uma linguagem de programação utilizada para resolução de problemas que envolvem objetos e relações entre objetos. s José possui um livro. O carro é vermelho. Duas pessoas são irmãs se ambas são

Leia mais

Exame de 1ª Época Introdução à Programação IGE e ETI 2003/02/25-1º semestre de 2002/2003 ISCTE

Exame de 1ª Época Introdução à Programação IGE e ETI 2003/02/25-1º semestre de 2002/2003 ISCTE Recibo do Exame de 1ª Época de Introdução à Programação (IGE e ETI), 2003/02/25 1º semestre de 2002/2003, ISCTE Nome do aluno:... Número do aluno:... Assinatura do docente:... Notas: Exame de 1ª Época

Leia mais

Introdução a linguagem C. Introdução à Programação 06/07

Introdução a linguagem C. Introdução à Programação 06/07 Introdução a linguagem C Introdução à Programação 06/07 A LINGUAGEM DE PROGRAMAÇÃO C A linguagem C foi criada, na década de setenta, por Dennis M. Ritchie; Apesar de se considerar uma linguagem de alto

Leia mais

Lógica Computacional

Lógica Computacional Lógica Computacional Aplicações da Lógica Verificação de Programas, Bases de Dados, Sistemas inteligentes Programação em Lógica Exemplos 27 Novembro 2013 Lógica Computacional 1 - Base de Conhecimentos:

Leia mais

Inteligência Artificial IA II. LÓGICA DE PREDICADOS PARA REPRESENTAÇÃO DO CONHECIMENTO

Inteligência Artificial IA II. LÓGICA DE PREDICADOS PARA REPRESENTAÇÃO DO CONHECIMENTO Inteligência Artificial IA Prof. João Luís Garcia Rosa II. LÓGICA DE PREDICADOS PARA REPRESENTAÇÃO DO CONHECIMENTO 2004 Representação do conhecimento Para representar o conhecimento do mundo que um sistema

Leia mais

Estrutura de um Algoritmo, Variáveis, Comandos de Entrada e Saída e Expressões Aritméticas

Estrutura de um Algoritmo, Variáveis, Comandos de Entrada e Saída e Expressões Aritméticas Estrutura de um Algoritmo, Variáveis, Comandos de Entrada e Saída e Expressões Aritméticas Estrutura de um Programa em Linguagem Algorítmica Nesse curso nós vamos utilizar a linguagem algorítmica para

Leia mais

IME, UFF 10 de dezembro de 2013

IME, UFF 10 de dezembro de 2013 Lógica IME, UFF 10 de dezembro de 2013 Sumário.... Considere o seguinte argumento Um problema de validade (1) p q q r r s s t p t (1) é válido ou não? A resposta é sim... Uma demonstração Uma demonstração

Leia mais

Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.

Variáveis e Entrada de Dados Marco André Lopes Mendes  marcoandre.googlepages. Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre@ifc-araquari.edu.br marcoandre@gmail.com marcoandre.googlepages.com Algoritmos é a base Primeiro programa Este programa possui apenas uma

Leia mais

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 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

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Fabio Mascarenhas - 2015.2 http://www.dcc.ufrj.br/~fabiom/lp Introdução Quais das expressões abaixo têm o mesmo significado? (vector-ref a 42) Introdução Quais das expressões

Leia mais

Apêndice A. Pseudo-Linguagem

Apêndice A. Pseudo-Linguagem Apêndice A. Pseudo-Linguagem Apostila de Programação I A.1 Considerações Preliminares Os computadores convencionais se baseiam no conceito de uma memória principal que consiste de células elementares,

Leia mais

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ. Linguagens O conceito de linguagem engloba uma variedade de categorias distintas de linguagens: linguagens naturais, linguagens de programação, linguagens matemáticas, etc. Uma definição geral de linguagem

Leia mais

Teoria das Linguagens. Linguagens Formais e Autómatos (Linguagens)

Teoria das Linguagens. Linguagens Formais e Autómatos (Linguagens) Teoria das Lic. em Ciências da Computação Formais e Autómatos () Carla Mendes Dep. Matemática e Aplicações Universidade do Minho 2010/2011 Teoria das - LCC - 2010/2011 Dep. Matemática e Aplicações - Univ.

Leia mais

Tutoria Matemática para Informática Teoria geral dos conjuntos Pertinência Inclusão Operações com conjuntos

Tutoria Matemática para Informática Teoria geral dos conjuntos Pertinência Inclusão Operações com conjuntos Tutoria Matemática para Informática Teoria geral dos conjuntos Pertinência Є (pertence) ou Є (não pertence) Sempre verificando de elemento para conjunto { } ou Ø = vazio {Ø} = conjunto com elemento vazio

Leia mais

CAPÍTULO 4 - OPERADORES E EXPRESSÕES

CAPÍTULO 4 - OPERADORES E EXPRESSÕES CAPÍTULO 4 - OPERADORES E EXPRESSÕES 4.1 - OPERADORES ARITMÉTICOS Os operadores aritméticos nos permitem fazer as operações matemáticas básicas, usadas no cálculo de expressões aritméticas. A notação usada

Leia mais

Desenho de algoritmos

Desenho de algoritmos Folha Prática Desenho de Algoritmos 1 Desenho de algoritmos Resolver as questões que se seguem usando fluxogramas ou uma outra linguagem para algoritmos. A. Instruções/acções de atribuição e leitura/escrita

Leia mais

UNIVERSIDADE FEDERAL DE PERNAMBUCO

UNIVERSIDADE FEDERAL DE PERNAMBUCO CÁLCULO L1 NOTAS DA TERCEIRA AULA UNIVERSIDADE FEDERAL DE PERNAMBUCO Resumo. Nesta aula introduziremos o conceito de derivada e a definição de uma reta tangente ao gráfico de uma função. Também apresentaremos

Leia mais

Informática no Ensino de Matemática Prof. José Carlos de Souza Junior

Informática no Ensino de Matemática Prof. José Carlos de Souza Junior Informática no Ensino de Matemática Prof. José Carlos de Souza Junior http://www.unifal-mg.edu.br/matematica/?q=disc jc Aula 04 ATIVIDADE 01 Outro grande recurso do GeoGebra é o de resolver simbolicamente

Leia mais

Soluções dos exercícios propostos

Soluções dos exercícios propostos Indução e Recursão Soluções dos exercícios propostos 1 Iremos demonstrar que a expressão proposta a seguir é correta: i = 0 + + + + + (n 1) = n(n 1), para n > 0 0 i

Leia mais

Lógica para Programação

Lógica para Programação Licenciatura Engenharia Informática e de Computadores Lógica para rogramação epescagem do rimeiro Teste 13 de Julho de 2010 09:00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 9 páginas

Leia mais

Lógica Computacional

Lógica Computacional Aula Teórica 20: Forma Normal de Skolem e António Ravara Simão Melo de Sousa Departamento de Informática, Faculdade de Ciências e Tecnologia, Universidade Nova de Lisboa Departamento de Informática, Faculdade

Leia mais