conceitos de linguagem de programação
Post on 14-Feb-2016
33 Views
Preview:
DESCRIPTION
TRANSCRIPT
CONCEITOS DELINGUAGEM DE PROGRAMAÇÃO
Linguagens Lógicas
Alunos:Emico Ferreira Santana
Silas Silva Santos
ABORDAGEM:
● Expressa programas na forma de lógica simbólica;
● Um processo de inferência lógica é usado para produzir os resultados; – Não são declarados os procedimentos
para determinar os resultados; – Declarados as especificações dos
resultados desejados; ● Programas declarativos;
INTRODUÇÃO AO CALCULO DE PREDICADOS:
● Proposição: – Declaração lógica que pode ou não ser verdadeira; – Consiste em objetos e relações entre si;
● Lógica Formal: – Desenvolvida para fornecer um método para descrever proposições; – Buscando que essas proposições formalmente
declaradas fossem verificadas quanto a validade; – Relação entre lógica formal e a matemática;
● Axiomas fundamentais da teoria dos números e dos conjuntos são o conjunto inicial de proposições presumidas como verdadeiras;
INTRODUÇÃO AO CALCULO DE PREDICADOS:
● Lógica Simbólica: – Pode ser utilizada para as necessidades
básicas da lógica formal: ● Expressar proposições; ● Expressar relações entre proposições; ● Descrever como novas proposições podem ser
inferidas de outras que se presumem verdadeiras; – Calculo de predicados:
● Forma particular de lógica simbólica usada para a programação lógica;
PROPOSIÇÕES: ● Os objetivos de proposições de
programação lógica são apresentados por termos simples, constantes ou variáveis; – Constante:
● É um símbolo que representa um objeto; – Variável:
● É um símbolo que pode representar diferentes objetos em diferentes tempos;
– No sentido matemático;
PROPOSIÇÕES: ● Proposições atômicas:
– Proposições simples; – Constituído de termos compostos;
● Elemento de uma relação matemática; – Aparência de uma função matemática;
– Termo composto e formado por duas partes: ● Functor:
– Símbolo de função que nomeia a relação; ● Lista ordenada de parâmetros:
– 1-tupla: termo composto com um único parâmetro; – 2-tupla: termo composto com dois parâmetros;
PROPOSIÇÕES: ●Proposições:
● Exemplo: – homem( jack )
● 1-tupla na relação chamada homem; – gosta( bob, bife )
● 2-tupla na relação chamada gosta; – Se adicionar homem( fred ), a relação homem
terá dois elementos distintos; – Todos os termos simples dessas proposições são
constantes e sem nenhuma semântica intrínseca; ● homem, jack, gosta, bob, bife e fred;
PROPOSIÇÕES: ●Proposições:
● Declarado de duas maneiras: – Proposição definida como verdadeira; – A verdade da proposição precisa ser determinado;
● Ou seja: – Podem ser declarados como fatos ou consultas;
● Proposições compostas: – Tem duas ou mais proposições atômicas, ligadas
por conectores lógicos ou operadores; ● Da mesma maneira que expressões logicas compostas
são construídas em linguagens imperativas;
PROPOSIÇÕES: ●Proposições:
● Nomes, símbolos e significados dos conectores lógicos do calculo de predicado sao os seguintes:
– Negação ( ¬ ): ¬ a (não a); – Conjunção (∩): a∩b (a e b); – Disjunção(∪): a∪b (a ou b); – Equivalência (≡): a≡b (a e equivalente a b); – Implicação:
● (⊃): a⊃b (a implica b); ● (⊂): a ⊂ b (b implica a);
PROPOSIÇÕES: ●Proposições Compostas:
● ¬ : precedência mais elevada; ● ∩, e ∪ ≡ tem precedência maior que ⊃ e
⊂; ● Exemplo:
– a ∩ ¬ b ⊃ d ; ● ( a ∩ ( ¬ b ) ) ⊃ d ;
PROPOSIÇÕES: ●Proposições (Variáveis):
● Variáveis podem aparecer em proposições, mas somente quando introduzidas por símbolos especiais, os quantificadores;
● Dois quantificadores no calculo de predicado: – Sendo X uma variável e P uma proposição; – Universal: ∀ X P
● Para todo X, P e verdadeiro; – Existencial: ∃ X . P
● Existe um valor de X tal que P seja verdadeiro; ● Ponto (.), simplesmente separa a variável da proposição;
PROPOSIÇÕES: ●Proposições (Variáveis):
● Exemplo: – ∀ X . ( mulher( X ) ⊃ humano( X ))
● Significa que para qualquer valor de X, se X for uma mulher, X e humano;
– ∃ X . ( mãe( mary, X ) ⊃ homem( X )) ● Significa que existe um valor de X tal que mary e
mãe de X e X e um homem (mary tem um filho);
PROPOSIÇÕES: ●O escopo dos quantificadores
universais e existenciais são as proposições
atômicas as quais eles são anexados;
● Pode ser estendido utilizando parênteses; ● Os quantificadores universais e existenciais
tem precedência mais elevada do que qualquer um dos operadores;
FORMA CLAUSAL : ● Calculo de Predicados:
– É a base para as linguagens de programação logica; ● Minimizar redundâncias;
– Problema do calculo de Predicados: ● Existem muitas maneiras diferentes de declarar proposições
com o mesmo significado; – Muita redundância;
● Não constitui um problema para logica; – Mas o calculo de predicado será um serio problema para
sistemas automatizados; ● Forma Clausal:
– Forma padrão, relativamente simples, de proposições; ● Sem perda de generalidade;
FORMA CLAUSAL : ●Forma Clausal:
● Sintaxe de uma proposição na Forma Clausal: – B1 U B2 U … U Bn ⊂ A1 ∩ A2 ∩ … ∩ An
● Sendo os As e Bs termos; – Significado:
● Se todos os As forem verdadeiros, pelo menos um B será verdadeiro;
– Características: ● Quantificadores existenciais não são necessários; ● Quantificadores universais ficam implícitos no uso de variáveis nas
proposições atômicas; ● Nenhum outro operador além de conjunção e disjunção é
necessário; ● Ordem da clausal geral:
– Disjunção no lado esquerdo e a conjunção no lado direito;
FORMA CLAUSAL : ●Forma Clausal:
● Antecedente: – É o lado direito de uma proposição
● Consequente: – Consequência da verdade de seu antecedente;
● Exemplos: – gosta( bob, truta ) ⊂ gosta(bob, peixe ) ∩ peixe( truta )
● “Se bob gosta de peixe e truta e um peixe, então bob gosta de truta”;
– pai( louis, alan ) U pai ( louis, violet ) ⊂ pai( alan, bob ) ∩ mae( violet, bob ) ∩ avo( louis, bob )
● “Se alan e pai de bob e violet e mãe de bob e louis e avo de bob, então louis e pai de alan ou de violet”;
CALCULO DE PREDICADOS E DEMONSTRAÇÃO DE TEOREMAS :
●Calculo de Predicados e Demonstração de Teoremas:
● Calculo de Predicados oferece um método para expressar coleções de preposições;
– Um uso das coleções de preposições é determinar se quaisquer fatos interessantes ou uteis podem ser inferidos a partir das mesmas;
– Processo semelhante ao dos matemáticos, que buscam descobrir novos teoremas que possam ser inferidos a partir de axiomas e de teoremas conhecidos;
CALCULO DE PREDICADOS E DEMONSTRAÇÃO DE TEOREMAS :
● Resolução: – È uma regra de inferência;
● Permite a computação de preposições inferidas a partir de proposições dadas;
● Constitui assim, um método potencial na demonstração automática de teoremas;
– Idealizada para ser aplicada a proposições na forma clausal;
CONCEITO DE RESOLUÇÃO : ●Conceito de resolução:
● Supondo duas proposições com as formas: – P1 ⊂ P2
● P2 implica em P1; – Q1 ⊂ Q2
● Q2 implica em Q1; – Supondo ainda que P1 seja idêntico a Q2, de modo que seja
possível renomear P1 e Q2 como T; ● T ⊂ P2 ● Q1 ⊂ T
– Assim: ● Q1 ⊂ P2
– O Processo de inferir tal proposição a partir de duas proposições originais é uma resolução;
CONCEITO DE RESOLUÇÃO : ●Conceito de resolução:
● Exemplo: – Considerando duas proposições:
● mais_velho( joanne, jake ) ⊂ mae( joanne, jake ) ● mais_sabio( joanne, jake ) ⊂ mais_velho( joanne, jake )
– Proposição usando resolução: ● mais_sabio( joanne, jake ) ⊂ mae( joanne, jake )
– Construção da resolução: ● Os termos do lado esquerdo das duas proposições são unidos
por um E para formar o lado esquerdo da nova proposição; – Mesmo processo para o lado direito;
● O termo que aparece em ambos os lados da nova proposição e removido;
CONCEITO DE RESOLUÇÃO : ●Conceito de resolução:
● Exemplo: – Considerando duas proposições:
● pai( bob, jake ) U mae( bob, jake ) ⊂ pais( bob, jake ) – Se: bob é um dos pais de jake, isto implica que bob é ou o pai ou a mãe
de jake; ● avo( bob, fred ) ⊂ pai( bob, jake ) ∩ pai( jake, fred )
– E: bob é pai de jake e jake é pai de fred, isto implica que bob é avô de fred;
– Proposição usando resolução: ● pai( bob, jake), é a proposição atômica que permitiu a operação; ● mae( bob, jake ) U avo( bob, fred ) ⊂ pais( bob, jake ) ∩ pai( jake,
fred ) – Entao:
● Se: bob é um dos pais de jake e jake é o pai de fred, então ou bob é mãe de jake ou bob é avô de fred;
CONCEITO DE RESOLUÇÃO : ●Conceito de resolução:
● Os conceitos, em geral são mais complexos que os exemplos;
– Principalmente com variáveis em proposições; ● A resolução precisa determinar os valores para
essas variáveis para que o processo de comparação possa ocorrer;
● Unificação: – Processo de determinar valores uteis;
● Instanciação: – Atribuição temporária de valores a variáveis para
permitir a unificação;
CONCEITO DE RESOLUÇÃO : ●Conceito de resolução:
● Capacidade de detectar inconsistência em um conjunto de dado de proposição:
– Essa propriedade permite que a resolução seja usada para demonstrar teoremas:
● Prova pela contradição: – Método de prova indireta, não-construtiva; – Assumindo-se como verdade o contrario do que queremos
provar e então chegando-se a uma contradição. ● Hipóteses:
– Proposições originais; ● Meta:
– A negação do teorema;
CONCEITO DE RESOLUÇÃO : ●Conceito de resolução:
● Demonstração de teoremas e a base da programação logica;
– Lista de fatos dados; – Relações como hipóteses; – Meta a ser inferida a partir das hipóteses;
● Utilizado a resolução; ● Quando proposições são usadas para
resolução, somente um tipo restrito de forma clausal pode ser ativado;
– Simplifica o processo de resolução;
CLÁUSULAS DE HORN : ●Cláusulas de Horn:
● Tipos especiais de proposições; ● Podem estar em somente duas formas:
– Uma única proposição atômica no lado esquerdo; – Ou, lado esquerdo vazio;
● Cláusulas de Horn encabeçadas: – Uma única proposição atômica no lado esquerdo;
● Declaração de relações; – gosta( bob, truta ) ⊂ gosta( bob, peixe ) ∩ peixe( truta )
● Cláusulas de Horn sem-cabeça: – Lado esquerdo vazio;
● Declaração de fatos; – pai( bob, jake )
CLÁUSULAS DE HORN : ●Cláusulas de Horn:
● Se a condição expressa pelo corpo da clausula:
– progenitor (X, Y) - é verdadeira então, segue como consequência logica que a cabeça - filho(Y, X) - também o é;
– Por outro lado, se não for possível demonstrar que o corpo da cláusula é verdadeiro, o mesmo irá se aplicar à cabeça.
PROGRAMAÇÃO BASEADA EM LÓGICA ●“Logic Programming”;
● Programação Baseada em Lógica é uma forma de implementar computações que coincidem com provas de teoremas;
– Se P então Q; ● onde P e Q denotam declarações;
– Podem ser verdade ou falsa, mas não ambas; ● A declaração P é a hipótese do teorema; ● Enquanto que Q é a conclusão;
● Possibilita dupla interpretação dos passos de computação que ocorrem durante a execução de um programa;
– Permitem que as especificações lógico-formais de certos problemas sejam também os próprios programas executáveis que resolvem aqueles problemas;
LOGIC PROGRAMMING : ●Inspirada na observação que provar um teorema lógico “sem criatividade” é um processo intelectual bastante semelhante a acompanhar a execução de um programa imperativo passo a passo, obedecendo as regras de inferência determinadas para a logica em uso:
● E partindo de um conjunto de expressões fornecidas (conjunto de axiomas);
● Novas expressões são geradas até que uma expressão alvo seja obtida (um teorema);
● Ou alternativamente que a impossibilidade de gerar aquela expressão alvo seja estabelecida (teorema foi refutado);
LOGIC PROGRAMMING : ●Expressão:
● Tanto as expressões fornecidas originalmente, como as expressões geradas durante o processo de busca do teorema (ou impossibilidade), podem em geral ser particularizadas;
● Exemplo: – Dedução que “Sócrates é mortal”, com base nas
premissas: ● “Sócrates é um homem e todo homem é mortal”; ● “se Sócrates é homem, ele também é mortal”;
– “Sócrates é homem” fornece “Sócrates é mortal”;
LOGIC PROGRAMMING : ●Particularização:
● Forma de passar parâmetros entre sentenças;
● “todo homem é mortal”; – “se X é homem ele também é mortal”;
● Sendo X uma variável; ● “Sócrates é homem”; ● Forneceu o valor “Sócrates” a variável X;
HISTÓRIA : ●História:
● Artigo de 1965 de J. A. Robinson; – Apresenta resultados teóricos que
possibilitaram a construção de linguagens de programação baseadas em particularização de sentenças e prova de teoremas;
● Primeira metade dos anos de 1970: – Primeiras implementações Prolog;
HISTORIA : ●Historia:
● Anos 1980 – Projeto de Quinta Geração: – Objetivo principal:
● Era o desenvolvimento de hardware e software de alto desempenho, caracterizando uma nova geração de computadores;
– Maquinas PSI (“Personal Sequential Inference machines”);
– Paradigma básico; ● Atingiram maturidade teórico e pratico;
– Desenvolvido no Japão;
CARACTERÍSTICAS : ●Características:
● Linguagem Declarativa: – Descrição do problema que se pretende
computar; – Base de Dados:
● Coleção de fatos; – Relações Logicas (regras):
● Domínio relacional do problema;
A RELAÇÃO : ●A Relação:
● Basicamente, nada existe na mente humana sem relação;
– Não podemos conceber a existência de um objeto no mundo que não tenha uma relação no tempo e no espaço;
● Tudo é relação; ● A relação entre os objetos é que os define no mundo
– Exemplo: ● Dois irmãos existem por ter pais em comum; ● Sem a relação de paternidade a definição irmãos
não existiria;
A RELAÇÃO : ●A Relação:
● A Classificação e A Seriação: – Elementos fundamentais para a evolução cognitiva do
homem, a classificação e a seriação permitem o agrupamento para discernimento e a organização hierárquica dos elementos do mundo;
● Exemplo: – Analisar o comportamento desde o nascimento:
● Inicialmente os bebes possuem movimentos de reflexos, que são repetidos durante meses ate o momento em que são combinados entre si e outros elementos sensoriais;
● Isto dá ínicio ao sistema cíclico de aprendizado; ● Uma vez portadora deste sistema, a criança pode distinguir os
objetos ao seu redor classificando-os e atribuindo a eles relações de hierarquia;
– A classificação e a seriação funcionam paralelamente;
A RELAÇÃO : ●A Relação:
●É necessário que tenhamos estes conceitos de relações na Linguagem Prolog;
– Sendo que, através desta linguagem de programação, iremos representar o mundo através de relações;
– A Linguagem de programação Prolog, que significa programação em lógica, não é baseada no sequenciamento de procedimentos, mas na definição de relações, na forma com a qual se representa o mundo que se quer implementar no computador;
LINGUAGEM PROLOG : ● Implementação mais popular dos conceitos de programação em lógica; ● Alguns recursos:
– Representação e manipulação de negação explicita nas clausulas; – Funções e predicados predefinidos para a aritmética de números inteiros e de ponto flutuante; – Operadores meta-lógicos para controlar regras de escolha utilizada; – Recursos, semelhantes, de Entrada/Saída de dados;
LINGUAGEM PROLOG : ● Conversão usual entre logica de notação
e linguagem de programação:
– Conectivo ← pelos caracteres :- – Conectivo ^ pela virgula (,) – Terminar cada clausula com um ponto (.) – Todas as variáveis iniciam com letra
maiúscula;
LINGUAGEM PROLOG : ● Especificações são Programas:
– A linguagem de especificação é entendida pela máquina e é, por si só, uma linguagem de programação;
● Naturalmente, o refinamento de especificações é mais efetivo do que o refinamento de programas;
● Um número ilimitado de cláusulas diferentes pode ser usado e predicados (procedimentos) com qualquer numero de argumentos são possíveis;
● Não ha distinção entre o programa e os dados; ● As cláusulas podem ser usadas com grande vantagem sobre as
construções convencionais para a representação de tipos abstratos de dados;
● A adequação da lógica para a representação simultânea de programas e suas especificações a torna um instrumento especialmente útil para o desenvolvimento de ambientes e protótipos;
LINGUAGEM PROLOG : ● Capacidade Dedutiva:
– O conceito de computação confunde-se com o de (passo de) inferência;
– A execução de um programa é a prova do teorema
representado pela consulta formulada, com base nos
axiomas representados pelas cláusulas (fatos e regras) do programa;
LINGUAGEM PROLOG : ● Não-determinismo:
– Os procedimentos podem apresentar múltiplas respostas, da mesma forma que podem solucionar múltiplas e aleatoriamente variáveis condições de entrada; – Através de um mecanismo especial, denominado "backtracking", uma sequencia de resultados
alternativos pode ser obtida;
LINGUAGEM PROLOG : ● Reversibilidade das Relações:
– Ou "computação bidirecional"; – Os argumentos de um procedimento podem
alternativamente, em diferentes chamadas representar ora parâmetros de entrada, ora de saída;
● Os procedimentos podem assim ser projetados para atender a múltiplos propósitos;
– A execução pode ocorrer em qualquer sentido, dependendo do contexto;
● Por exemplo, o mesmo procedimento para inserir um elemento no topo de uma pilha qualquer pode ser usado, em sentido contrario, para remover o elemento que se encontrar no topo desta pilha;
LINGUAGEM PROLOG : ● Tríplice Interpretação dos Programas em Logica:
– Um programa em logica pode ser semanticamente interpretado de três modos distintos:
● (1) por meio da semântica declarativa, inerente à lógica; ● (2) por meio da semântica procedimental, onde as cláusulas
dos programas são vistas como entrada para um método de prova;
● (3) por meio da semântica operacional, onde as cláusulas são vistas como comandos para um procedimento particular de prova por refutação;
– Essas três interpretações são intercambiáveis segundo a particular abordagem que se mostrar mais vantajosa ao problema que se tenta solucionar;
LINGUAGEM PROLOG : ● Recursão:
– Forma natural de ver e representar dados e programas; ● Entretanto, na sintaxe da linguagem não ha laços do tipo "for"
ou "while":
– Podem ser programados; – São desnecessários; – Não usam comandos de atribuição;
● Uma estrutura de dados contendo variáveis livres pode ser retornada
como a saída de um procedimento: – Essas variáveis livres podem ser posteriormente instanciadas por outros procedimentos produzindo o efeito de atribuições implícitas a estruturas de dados;
● Variáveis livres são automaticamente agrupadas por meio de referências transparentes ao programador;
LINGUAGEM PROLOG : ● Vantagens:
– É de aprendizado muito mais fácil e natural do que as linguagens procedimentais convencionais, podendo inclusive ser ministrada a estudantes entre o final do primeiro e o inicio do segundo grau com grande aproveitamento; – Implementa com precisão todos os novos modelos surgidos nos últimos anos, inclusive redes neurais, algoritmos genéticos, sociedades de agentes inteligentes, sistemas concorrentes e paralelos; – Permite a implementação de extensões, inclusive em nível meta, e a definição precisa de sistemas reflexivos (essenciais, por exemplo, a robótica); – Libera o programador dos problemas associados ao controle de suas rotinas, permitindo-lhe concentrar-se nos aspectos lógicos da situação a representar.
top related