Programação Lógica. Controle (Bactracking, Cut, Fail) Paulo Henrique Ribeiro Gabriel
|
|
- Raul Cavalheiro Philippi
- 6 Há anos
- Visualizações:
Transcrição
1 Programação Lógica Controle (Bactracking, Cut, Fail) Paulo Henrique Ribeiro Gabriel Faculdade de Computação Universidade Federal de Uberlândia 7 de outubro de 2015 Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
2 Créditos O material a seguir consiste em adaptações dos originais gentilmente cedidos pela Profa. Dra. Elaine Ribeiro de Faria Paiva Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
3 Retrocesso (Backtracking) Já vimos que a evolução de busca por soluções no Prolog assume a forma de uma árvore de busca Essa árvore é percorrida de cima para baixo da esquerda para a direita Busca em profundidade Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
4 Retrocesso (Backtracking) Os objetivos em um programa Prolog podem ser bem-sucedidos ou não Um objetivo é bem-sucedido é unificado com a cabeça de uma cláusula do programa e todos os objetivos no corpo desta cláusula também são bem-sucedidos Se tais condições não ocorrerem, então o objetivo falha Quando ocorre uma falha em um nó terminal da árvore de pesquisa, o Prolog aciona o mecanismo de backtracking (ou retrocesso) Nesse caso, a busca retorna pelo mesmo caminho percorrido a fim de encontrar soluções alternativas Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
5 Retrocesso (Backtracking) O retrocesso automático é uma ferramenta muito poderosa e a sua exploração é de grande utilidade para o programador Entretanto, ele pode se transformar em fonte de ineficiência Solução: mecanismo de poda da árvore de busca Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
6 O Operador cut O predicado de corte!/0 oferece um modo de controlar o retrocesso Razões para seu uso: 1 O programa irá executar mais rapidamente, porque não irá desperdiçar tempo tentando satisfazer objetivos que não irão contribuir para a solução desejada 2 A memória será economizada, uma vez que determinados pontos de backtracking não necessitam ser armazenados para exame posterior Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
7 O Operador cut Algumas aplicações de corte: 1 Unificação de padrões, de forma que quando um padrão é encontrado os outros padrões possíveis são descartados 2 Implementação da negação como regra de falha 3 Eliminação de soluções alternativas quando uma só é suficiente 4 Encerramento da pesquisa quando a continuação iria conduzir a uma pesquisa infinita Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
8 Um Exemplo: Considere o seguinte problema: dados dois números, verificar qual o maior Possível solução: % maior /3 maior (X,Y,X) :- X > Y. maior (X,Y,Y) :- X =< Y. Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
9 Um Exemplo: Consulta:?- maior (5,2,M). M = 5; false. O programa apresentou um resultado correto, porém ainda executou a cláusula maior(x,y,y):- X =< Y., que resultou em uma falha (por isso exibiu false) Nesse exemplo, um corte evitaria a segunda execução (que é desnecessária, quando X > Y ) Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
10 Um Exemplo: Com corte: % Se for verdade, interrompe ( corta ) maior (X,Y,X) :- X > Y,!. % Só executa se a anterior falhou maior (X,Y,Y) :- X =< Y. Consulta:?- maior (5,2,M). M = 5. Não temos mais a opção de fazer o retrocesso e encontrar outra solução Nesse caso, a adoção do corte afetou somente a interpretação operacional Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
11 O Operador cut O corte somente nos restringe às escolhas já feitas desde que o objetivo pai foi unificado com o lado esquerdo da cláusula contendo o corte Por exemplo, em uma regra da forma: q :- p_1, p_2,... p_n,!, r_1, r_2,... r_n. Quando alcançarmos o corte, ele nos restringe: 1 À cláusula q 2 Às escolhas feitas por p 1, p 2,..., p n 3 E não às escolhas feitas por r 1, r 2,..., r n Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
12 Corte Verde Recapitulando o exemplo: maior (X,Y,X) :- X > Y,!. maior (X,Y,Y) :- X =< Y. Nesse caso, se removermos o corte, o programa exibirá as mesmas respostas Apenas de maneira menos eficiente Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
13 Corte Verde Corte Verde São cortes que não alteram o significado do programa original. Podem ser removidos sem problemas. Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
14 Corte Vermelho Note, no entanto, que a segunda cláusula é redundante maior (X,Y,X) :- X > Y,!. maior (X,Y,Y) :- X =< Y. Afinal, se a primeira cláusula falhar, o Prolog executara a segunda, por meio do backtracking Ou seja, se X não for maior que Y, obviamente Y é maior Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
15 Corte Vermelho Podemos reescrever nosso programa: maior (X,Y,X) :- X > Y,!. maior (X,Y,Y). Assim, caso a primeira cláusula falhe (ou seja, se X não for maior maior que Y ), apenas retornamos Y. Essa versão é ainda mais eficiente (eliminamos algumas operações relacionais) Porém, se retirarmos o corte, não obteremos a mesma resposta Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
16 Corte Vermelho Corte Vermelho São cortes alteram o significado de um predicado. Não podemo ser removidos sem modificarmos o programa. Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
17 Corte Vermelho Obervações: Programas contendo cortes vermelhos Não são completamente declarativos (simulam um if then else) Podem ser difíceis de ler Podem levar a erros sutis de programação: use-os com cuidado Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
18 O Operador fail Existe em Prolog um predicado pré-definido sem argumentos chamado que sempre falha O predicado fail/0 É sempre utilizado em combinação com o corte Implementa uma negação Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
19 Um Exemplo Vamos criar um predicado que verifique se dois valores são diferentes Note que, caso uma variável unifique com a outra, teríamos que ambas são iguais Ou seja, dadas duas variáveis X e Y 1 Se X = Y ( se X unifica com Y ) então elas são iguais 2 Caso contrário, são diferentes Logo, basta verificar se elas unificam e, caso unifiquem, retornar falso Ou seja, se unificarem, então falhou Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
20 Um Exemplo % Se X for igual a Y, então falha diferente (X,Y) :- X = Y,!, fail. % Senão, eles são diferentes diferente (X,Y). Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
21 O Operador fail No exemplo anterior, ao processar o predicado diferente(x,y), o Prolog tentará a primeira cláusula Se essa cláusula for processada corretamente (ou seja, se X = Y ), o corte (!) será processado, interrompendo a execução Logo em seguida, vem a falha Como o corte não vai permitir a execução da segunda cláusula, o programa vai falhar Retornará false Caso a primeira cláusula não falhe, Prolog tentará a segunda cláusula (devido ao retrocesso) e será satisfeita, retornando true. Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
22 Um Exemplo Outra versão, mais direta e sem variáveis não instanciadas: % Se X for igual a Y, então falha diferente (X,X) :-!, fail. % Senão, eles são diferentes, independente de seus valores diferente (_,_). Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
23 O Operador fail Este mesmo método pode ser usado para implementar a negação de qualquer predicado. O uso deste artifício é tão comum que existe uma notação em Prolog para indicar esta forma de negação: + Esse operador, utilizando antes de uma meta, representa a negação dessa meta Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
24 O Operador fail No exemplo anterior, poderíamos escrever: diferente (X,Y) :- \+ X = Y. Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
25 O Operador fail Observação: Na grande maioria dos casos, essas negações só funcionam para metas onde os argumentos vêm todos instanciados.?- diferente (c,aa). % Instanciado true.?- diferente (aa,aa). % Instanciado false.?- diferente (X,X). % Não instanciado false. Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
26 Leitura Recomendada Luis A. M. Palazzo, Introdução à Programação Prolog, Capítulo 6, Educat, João Meidanis, MC336 - Paradigmas de programação Prolog, Capítulo 5, Unicamp, Paulo H. R. Gabriel (FACOM/UFU) Programação Lógica 7 de outubro de / 26
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 maisConferência Predicados de corte e falha
Inteligência Artificial Conferência Predicados de corte e falha O Docente: MSc. Angel Alberto Vazquez Sánchez Objetivo Descreva como funcionam os predicados "!" E "fail". Use os predicados de corte e falha
Leia maisRetrocesso e corte. Paradigma de Programação Lógico. Marco A L Barbosa
Retrocesso e corte 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 Retrocesso
Leia maisA 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
Leia maisCompiladores - Especificando Sintaxe
Compiladores - Especificando Sintaxe Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura
Leia maisMecanismos de Controle
Mecanismos de Controle Prof. Dr. Silvio do Lago Pereira Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo Introdução Embora o Prolog seja uma linguagem de programação declarativa,
Leia maisProf. 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,
Leia maisBUSCA 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 maisPredicados extra lógicos. Prof. Elaine Faria e Hiran Nonato Programação Lógica UFU 2012
Predicados extra lógicos Prof. Elaine Faria e Hiran Nonato Programação Lógica UFU 2012 Créditos O material a seguir consiste de adaptações e extensões dos originais gentilmente cedidos pelo Prof. Alexsandro
Leia maisInteligê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
Leia maisFundamentos e prática de Prolog
Disciplina: Lógica Aplicada à Computação Nome: Matrícula: 1. Considere a seguinte base de conhecimentos Prolog: filho(paulo,pedro). % "Paulo é filho de Pedro" filho(paulo,marcela). filho(pedro,josé). filho(pedro,isabel).
Leia maisFundamentos. 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
Leia maisRecursã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 maisAula 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
Leia mais7 Comandos e Estruturas de Controle
Lógica para a Programação - 1º semestre AULA 03 Prof. André Moraes 7 Comandos e Estruturas de Controle Na criação de algoritmos é comum utilizar conceitos de bloco lógico, entrada e saída de dados, constantes,
Leia maisUnificação PROGRAMAÇÃO EM LÓGICA. Unificação. Unificação. Unificação. Unificação. Linguagem Prolog Parte III
PROGRAMAÇÃO EM LÓGICA CIÊNCIA DA COMPUTAÇÃO FACAPE Faculdade de Ciências Aplicadas e Sociais de Petrolina Linguagem Prolog Parte III Prof. Sergio Ribeiro Adaptado do material da Profª Elaine Ribeiro Universidade
Leia maisParadigma de Programação Lógico. Marco A L Barbosa
Introdução 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 Introdução Imperativo
Leia maisMC-102 Aula 04 Expressões Relacionais, Lógicas e Comandos Condicionais
MC-102 Aula 04 Expressões Relacionais, Lógicas e Comandos Condicionais Instituto de Computação Unicamp 26 de Agosto de 2016 Roteiro 1 Expressões relacionais 2 Expressões lógicas 3 4 Exercícios (Instituto
Leia maisControle de Retrocesso. Programação Lógica. Controle de Retrocesso. Controle de Retrocesso
Programação Lógica Prolog: controle de retrocesso, predicado especial corte (!), verificação de tipos, exemplos O retrocesso (backtracking) é um processo pelo qual todas as alternativas de solução para
Leia maisUNIDADE 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 maisEntrada e Saída. Prof. Elaine Faria e Hiran Nonato Programação Lógica UFU 2012
Entrada e Saída Prof. Elaine Faria e Hiran Nonato Programação Lógica UFU 2012 Créditos O material a seguir consiste de adaptações e extensões dos originais gentilmente cedidos pelo Prof. Alexsandro Santos
Leia maisUTILIZANDO MORFOL PARA ANÁLISE DE CENAS ESPECIFICAÇÃO E IMPLEMENTAÇÃO
UTILIZANDO MORFOL PARA ANÁLISE DE CENAS ESPECIFICAÇÃO E IMPLEMENTAÇÃO Aluno: Caio Pimentel Seguin Orientador: Edward Hermann Haeusler Introdução No projeto MORFOL[1] foi desenvolvida a ferramenta MORFOL
Leia maisFundamentos 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).
Leia maisUma gramática é ambígua se existe alguma cadeia para qual ela tem mais de uma árvore sintática
Ambiguidade Uma gramática é ambígua se existe alguma cadeia para qual ela tem mais de uma árvore sintática De maneira equivalente, se existe mais de uma derivação mais à esquerda para uma cadeia Ou se
Leia maisINTRODUÇÃO AO AMBIENTE DE PROGRAMAÇÃO MATLAB
TURMA 1 AULA 5 INTRODUÇÃO AO AMBIENTE DE PROGRAMAÇÃO MATLAB MINICURSO PET-POTÊNCIA 2016.1 RÔMULLO RANDELL MINICURSO PET-POTÊNCIA 2016.1 INTRODUÇÃO AO AMBIENTE DE PROGRAMAÇÃO MATLAB RÔMULLO RANDELL Turma
Leia maisIntrodução a Programação
Introdução a Programação Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida Aula 02 Primeiro Programa Roteiro Primeiros Passos Variáveis Expressões Comandos
Leia maisExemplo:- CONTROLE DE RETROCESSO. Construir um programa Prolog para implementar a função:
CONTROLE DE RETROCESSO O retrocesso (backtracking) é um processo pelo qual todas as alternativas de solução para uma dada consulta são tentadas exaustivamente. No Prolog, o retrocesso é automático. É possível
Leia maisMecanismos de Controle
Mecanismos de Controle Prof. Dr. Silvio do Lago Pereira Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo Introdução Embora o Prolog seja uma linguagem de programação declarativa,
Leia maisRecursividade 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
Leia maisLinguagens 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 maisCompiladores - Análise Recursiva
Compiladores - Análise Recursiva Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp Analisador Recursivo Maneira mais simples de implementar um analisador sintático a partir de uma gramática,
Leia maisLinguagens de Domínio Específico
Linguagens de Domínio Específico Fabio Mascarenhas 2016.1 http://www.dcc.ufrj.br/~fabiom/dsl Processamento de uma DSL PEGs As gramáticas de expressões de parsing, ou PEGs (parsing expression grammars)
Leia maisProgramação de Redes de Computadores
1: Introdução 1 MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CAMPUS SÃO JOSÉ SANTA CATARINA Programação de Redes de Computadores
Leia maisLinguagens Não-Regulares
Linguagens Não-Regulares Mário S. Alvim (msalvim@dcc.ufmg.br) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Não-Regulares DCC-UFMG (2018/02)
Leia maisResolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema
ALGORITMIA Resolução De Problemas Em Informática Docente: Ana Paula Afonso 2000-2001 Resolução de Problemas 1. Analisar o problema Conhecer o bem o problema Descrever o problema: subdividir, detalhar 2.
Leia maisFundamentos de programação
Fundamentos de programação Expressões lógicas Operadores lógicos e relacionais Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Controle de execução Até o momento, nossos algoritmos
Leia maisCONDICIONAL / de SELEÇÃO / de DECISÃO
ESTRUTURA de CONTROLE CONDICIONAL / de SELEÇÃO / de DECISÃO LPI 1. Expressões Expressões Aritméticas As expressões aritméticas são formadas por operadores aritméticos (+, -, *, /) e por operandos (as constantes
Leia maisSemântica Denotacional
Semântica Denotacional Uma introdução ISBN 0-321-19362-8 Semântica denotacional é um método formal para definir a semântica de linguagens de programação. Interessa a: projetista de linguagens, quem escreve
Leia maisInteligê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
Leia maisCompiladores II. Fabio Mascarenhas
Compiladores II Fabio Mascarenhas - 2014.2 http://www.dcc.ufrj.br/~fabiom/comp2 Erros Uma falha em um parser de combinadores ou PEGs tem dois significados: A alternativa que estamos tentando não está correta,
Leia maisUNIVERSIDADE 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
Leia maisLógica de Hoare. Abordagem que usaremos: aplicar o método de Hoare sobre uma linguagem de programação imperativa simplificada.
Lógica de Hoare Método axiomático para provar que determinados programas são corretos. Introduzido em 1969 por Charles Antony Richard Hoare. Também utilizado para especificar a semântica de linguagens
Leia maisUnidade 9: Introdução às Estruturas de Decisão
Lógica de Programação 1 Unidade 9: Introdução às Estruturas de Decisão Prof. Daniel Caetano Objetivo: Tomando decisões no código de programação. Bibliografia: ASCENCIO, 2007; MEDINA, 2006; SILVA, 2010;
Leia mais03/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 maisCompiladores - Análise Recursiva
Compiladores - Análise Recursiva Fabio Mascarenhas 2015.2 http://www.dcc.ufrj.br/~fabiom/comp Geradores x Reconhecedores A definição formal de gramática dá um gerador para uma linguagem Para análise sintática,
Leia maisEXERCÍCIOS DE PROGRAMAÇÃO EM LÓGICA
FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO EXERCÍCIOS DE PROGRAMAÇÃO EM LÓGICA LUÍS PAULO REIS DANIEL CASTRO SILVA MESTRADO INTEGRADO EM ENGENHARIA INFORMÁTICA E COMPUTAÇÃO PROGRAMAÇÃO EM LÓGICA
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação. Linguagem C: estruturas de repetição While / Do While / For
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: estruturas de repetição While / Do While / For Prof. Renato Pimentel 1 Estruturas de repetição O real poder dos computadores está
Leia maisLinguagem de Programação III
Linguagem de Programação III Aula-7 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando
Leia maisTipos 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 maisSumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)
Algoritmos e Programação Informática II Ciência da Computação Prof. Dr. Leandro Alves Neves Aula 10 1 Sumário Estruturas de Controle de Fluxo q Repetição Enquanto (Teste no início) Repeat (Teste no final)
Leia maisCiência da Computação
Algoritmos e Programação Informática II Ciência da Computação Prof. Dr. Leandro Alves Neves Prof. Dr. Adriano M. Cansian 1 Sumário Estruturas de Controle de Fluxo. Ou: Estruturas de Decisão. Decide qual
Leia maisCompiladores - Análise Preditiva
Compiladores - Análise Preditiva Fabio Mascarenhas 205.2 http://www.dcc.ufrj.br/~fabiom/comp Analisador Preditivo Uma simplificação do parser recursivo com retrocesso que é possível para muitas gramáticas
Leia maisAlteração da Base de Dados. Programação Lógica. Alteração da Base de Dados. Alteração da Base de Dados
Programação Lógica Prolog: alteração da base de dados, predicados que fornecem, exemplos Profa Heloisa de Arruda Camargo Alguns predicados do Prolog modificam a base de dados em tempo de execução abolish(pred)
Leia maisIntrodução à Programação Aula 5 Ciclos e condicionais
Introdução à Programação Aula 5 Ciclos e condicionais Pedro Vasconcelos DCC/FCUP 2017 Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 5 Ciclos e condicionais 2017 1 / 28 Nesta aula Na aula passada:
Leia maisMaterial Didático Proposto
Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Comissão para Coordenação das Atividades Pedagógicas da Disciplina BCC701 CAP-BCC701 www.decom.ufop.br/bcc701 2014-1 Material
Leia maisProgramação Estruturada Comandos Condicionais (Decisão) Operadores Relacionais
Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Comissão para Coordenação das Atividades Pedagógicas da Disciplina BCC701 CAP-BCC701 www.decom.ufop.br/bcc701 2014-1 Material
Leia maisQuestão 1 Analise o trecho do código abaixo, escrito na linguagem C#:
Programação para Games I Questão 1 Analise o trecho do código abaixo, escrito na linguagem C#: String[] vetor= { E, A, Z, D, W }; for(int i=4; i
Leia maisLinguagem e Técnicas em Programação. Gilson de Souza Carvalho
Gilson de Souza Carvalho gaucho.gilson@hotmail.com 3.1.3 Condições compostas Linguagem e Técnicas em Programação As condições que vimos até agora sempre foram únicas. Entretanto, conforme aumenta a complexidade
Leia maisAula Teórica 03. Comandos Condicionais (Decisão)
Aula Teórica 03 Comandos Condicionais (Decisão) Semana 03 Material Didático Proposto 1 Conteúdos da Aula Programação Estruturada Comandos Condicionais (Decisão) Operadores Relacionais 2 Programação Estruturada
Leia maisCapí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 maisCENTRO 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 maisComandos de desvio de fluxo. Expressões lógicas.
Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência da Computação Semana 03 Comandos de desvio de fluxo. Expressões lógicas. Material Didático Unificado. 1 Agenda Introdução;
Leia maisOtimização. Utilizando o OpenOffice-Calc para Solução de Problemas de Otimização. Paulo Henrique Ribeiro Gabriel
Otimização Utilizando o OpenOffice-Calc para Solução de Problemas de Otimização Paulo Henrique Ribeiro Gabriel phrg@ufu.br Faculdade de Computação Universidade Federal de Uberlândia 2016/1 Paulo H. R.
Leia maisCompiladores - Gramáticas
Compiladores - Gramáticas Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura do programa
Leia maisLinguagem C: if-else e operadores lógicos
switch-case-default Exercícios Linguagem C: if-else e operadores lógicos Introdução à linguagem C(++) Profs. Anilton, Lasaro e Paulo Coelho Faculdade de Computação Universidade Federal de Uberlândia Profs.
Leia maisCompiladores - Gramáticas
Compiladores - Gramáticas Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura do programa
Leia maisINF 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
Leia maisLinguagem de Programação
Linguagem de Programação Operadores de Condição if() / else if() / else{} / switch() Gil Eduardo de Andrade Introdução Operadores de condição permitem, ao programador, efetuar testes que determinam quais
Leia maisPORTAS E OPERAÇÕES LÓGICAS
1.Portas Lógicas 1.1 - PORTAS E OPERAÇÕES LÓGICAS Uma porta logica ( gate ) é um circuito eletrônico, portanto uma peça de hardware, que se constitui no elemento básico e mais elementar de um sistema de
Leia maisDesenvolvimento de Aplicações Desktop
Desenvolvimento de Aplicações Desktop Operadores Lógicos; Estruturas de Controle (Decisão) Professor: Charles Leite Fluxo de Controle A ordem com que as instruções são executadas em um programa é chamada
Leia maisEugénio Oliveira Outros docentes da cadeira:
eco@fe.up.pt www.fe.up.pt/~eco.html Outros docentes da cadeira: Daniel Moura- T e P dcm@fe.up.pt Rui Gomes- P rjgomes@fe.up.pt 1 Objectivos Adquirir familiaridade com os paradigmas da, Programação com
Leia maisProf. A. G. Silva. 06 de outubro de Prof. A. G. Silva Programação em Lógica 06 de outubro de / 1
Programação em Lógica Prof. A. G. Silva 06 de outubro de 2016 Prof. A. G. Silva Programação em Lógica 06 de outubro de 2016 1 / 1 Gramáticas Processamento de linguagens naturais é um dos principais usos
Leia maisInteligência Artificial. Resolução de problemas por meio de algoritmos de busca. Aula II Algoritmos básicos de busca cega
Universidade Estadual do Oeste do Paraná Curso de Bacharelado em Ciência da Computação Inteligência Artificial Resolução de problemas por meio de algoritmos de busca Aula II Algoritmos básicos de busca
Leia maisSCC 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
Leia maisProgramação II RECURSÃO
Programação II RECURSÃO Bruno Feijó Dept. de Informática, PUC-Rio Motivação Escher: Metamorphosis (1937) - Drawing Hands (1948) Relativity (1953) http://www.worldofescher.com/gallery/ Alguém diz: Esta
Leia maisIntroduçã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 maisInteligê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
Leia maisIntrodução à Programação Aula 09. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Introdução à Programação Aula 09 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação A linguagem C, como qualquer outra linguagem de programação, permite
Leia maisLinguagem 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
Leia maisProf. 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
Leia maisComandos de desvio de fluxo. Expressões lógicas.
BCC701 Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência da Computação www.decom.ufop.br/bcc701 2012/01 Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
Leia maisCompiladores - Gramáticas
Compiladores - Gramáticas Fabio Mascarenhas 2015.2 http://www.dcc.ufrj.br/~fabiom/comp Ambiguidade Uma gramática é ambígua se existe alguma cadeia para qual ela tem mais de uma árvore sintática De maneira
Leia maisALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE)
Algoritmos e Estruturas de Dados 1 Prof. Eduardo 1 ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE) Até o momento da disciplina vimos comandos de entrada, processamento e saída
Leia maisFundamentos de Lógica Matemática
Webconferência 5-22/03/2012 Prova por resolução 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 É possível
Leia maisFundamentos 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
Leia maisIntrodução à Linguagem C
Engenharia de CONTROLE e AUTOMAÇÃO Introdução à Linguagem C Aula 02 DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria beltrame@mail.ufsm.br
Leia maisConceitos Básicos de Programação
BCC 201 - Introdução à Programação Conceitos Básicos de Programação Guillermo Cámara-Chávez UFOP 1/53 Conceitos básicos I Variável 2/53 Conceitos básicos II Posição de memoria, identificada através de
Leia mais1 Definição de funções 1. 2 Valores boleanos e condicionais 5. Podemos depois usar as novas funções tal qual as pré-definidas
Nesta aula... Conteúdo 1 Definição de funções 1 2 Valores boleanos e condicionais 5 1 Definição de funções Definição de novas funções Na aula passada: vimos como usar os operadores e funções pré-definidas
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação
Leia maisIntuição da sintaxe de L2 (35)
2.2 A Linguagem L2 2.2 A Linguagem L2 A linguagem L2 é uma extensão de L1 com funções recursivas, memória (acesso e atualização de variáveis), sequência de comandos ( ; ) e laço de repetição while. Primeiro,
Leia maisConceitos básicos de programação
Para aprender uma linguagem de programação podemos começar por conhecer os vocábulos ou símbolos que formam o seu léxico e depois aprender como esses vocábulos integram as instruções (frases) que compõe
Leia maisParadigmas de Programação
Paradigmas de Programação Sintaxe e semântica Aula 4 Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Sintaxe A sintaxe de uma linguagem de programação é a forma
Leia maisProlog. Comandos de leitura e escrita
Prolog Esta aula trata de funcionalidades e comandos diversos em Prolog, úteis em variadas situações Inteligência Artificial 1 Comandos de leitura e escrita eh_membro(x,lista) :- write('entre com seu nome:
Leia maisVariá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
Leia maisGSI010 - Programação Lógica Predicados extra-lógicos
GSI00 - Programação Lógica Predicados extra-lógicos Aula de hoje Predicados extra-lógicos Operações com listas Operações com as bases de fatos Predicados extra-lógicos Definição Predicado para trabalhar
Leia maisLinguagens 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 maisIteração e Pontos Fixos
Iteração e Pontos Fixos Iteração é um dos pontos chave da programação numérica. Iterar consiste em repetir uma mesma operação diversas vezes levando a uma aproximação cada vez melhor da solução exata.
Leia maisParadigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I
Paradigmas Paradigmas Tradicional Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I Paradigmas Tradicional Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I OO Simula-67, Smalltalk, C++, Eiffel, Object Pascal,
Leia maisOtimização. Otimização em Redes. Paulo Henrique Ribeiro Gabriel Faculdade de Computação Universidade Federal de Uberlândia 2016/2
Otimização Otimização em Redes Paulo Henrique Ribeiro Gabriel phrg@ufu.br Faculdade de Computação Universidade Federal de Uberlândia 2016/2 Paulo H. R. Gabriel (FACOM/UFU) GSI027 2016/2 1 / 51 Conteúdo
Leia maisPython 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
Leia mais