Acrescentando regras à Base de Conhecimento



Documentos relacionados
Licenciatura em Engenharia Electrotécnica e de Computadores 1998/99. Erros

Capítulo 5. ARQUIVOS E FUNÇÕES MATEMÁTICAS INTRÍNSECAS

Erros. Número Aproximado. Erros Absolutos erelativos. Erro Absoluto

Eletrônica Digital 1 Módulo1 Capítulo 1 Sistemas Numéricos. Prof. Nilton Costa Junior

Processamento Numérico

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

Programação de Computadores III

Programação de Computadores III

MATEMÁTICA BÁSICA E CALCULADORA

Linguagem e Técnicas de Programação I Operadores, expressões e funções. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

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

Conversão de Bases e Aritmética Binária

PC Fundamentos Revisão 4

Sumário. INF01040 Introdução à Programação. Elaboração de um Programa. Regras para construção de um algoritmo

Por que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,...

Introdução aos cálculos de datas

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

Truques e Dicas. = 7 30 Para multiplicar fracções basta multiplicar os numeradores e os denominadores: 2 30 = 12 5

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Programação de Computadores:

Trabalho compilado da Internet Prof. Claudio Passos. Sistemas Numéricos

EQUAÇÃO DO 1º GRAU. 2 melancias + 2Kg = 14Kg 2 x + 2 = 14

Qualquer fórmula deve começar sempre com o sinal de igual; caso contrário, a fórmula não funciona.

Lógica de Programação

Raiz Quadrada de um Número Racional Objectivos de aprendizagem:

Revisão para a Bimestral 8º ano

Universidade do Minho Departamento de Electrónica Industrial. Sistemas Digitais. Exercícios de Apoio - I. Sistemas de Numeração

Representação de Dados

CAP. I ERROS EM CÁLCULO NUMÉRICO

Teoria dos Números. A Teoria dos Números é a área da matemática que lida com os números inteiros, isto é, com o conjunto

Sumário. Arquitetura do Universo

Prova de Aferição de Matemática

Sistemas de Numerações.

CAPÍTULO 6 ARITMÉTICA DIGITAL

SISTEMAS DE NUMERAÇÃO

Medidas e Incertezas

Introdução à Computação

Paradigmas de Linguagens de Programação

Aritmética Binária e. Bernardo Nunes Gonçalves

Algoritmos em Javascript

Aritmética de Ponto Fixo

O que é o JavaScript?

Tarefa Orientada 10 Obter informação a partir de uma tabela

Aula 6 Aritmética Computacional

6. OPERADORES E ARITMÉTICA

3 Sistemas de Numeração:

Jaime Evaristo Sérgio Crespo. Aprendendo a Programar Programando numa Linguagem Algorítmica Executável (ILA)

GEO764 - Programação avançada em Geofísica. Controle da seqüência. Estrutura IF... THEN... ELSE. Comando IF

Unidade 3: Sistemas de Numeração Conversões Entre Quaisquer Bases e Aritmética em Bases Alternativas Prof. Daniel Caetano

ARQUITETURA DE COMPUTADORES. Sistemas de Numeração. 1 Arquitetura de Computadores

Tópico 2. Conversão de Unidades e Notação Científica

Microsoft Excel 2007

Murilo F. Tomé ICMC-USP

Representação de Dados e Sistemas de Numeração

Organização e Arquitetura de Computadores I

Aplicações de Escritório Electrónico

Sistemas de Numeração

FUNÇÕES MATEMÁTICAS. Professora: Lucélia Alves de Oliveira

Exemplo de Subtração Binária

UTILIZANDO PROGRAMAS EDUCACIONAIS

Lição 1 - Criação de campos calculados em consultas

2. ENTRADA DE DADOS 2.1. TEXTOS

AULA 6 LÓGICA DOS CONJUNTOS

Séries de Potências de x

Estabilidade. Carlos Alexandre Mello. Carlos Alexandre Mello 1

COMPUTADOR SIMPLIFICADO E COMPUTADOR DIGITAL. Algoritmos e Programação APG0001

Algoritmos e Programação de Computadores

Algoritmos Computacionais ( Programas )

Algarismos Significativos

Notas sobre o MySQL: Resumo dos comandos no MySQL linha de comandos:

Gabarito de Matemática do 7º ano do E.F.

REVISÃO E AVALIAÇÃO DA MATEMÁTICA

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

Algoritmos com VisuAlg

SCILAB. Software livre para cálculo numérico e simulação de sistemas físicos Utilizado nas áreas de:

Teorema (Algoritmo da Divisão)

Podemos concluir: Todas as funções desse tipo passam pelos pontos: (0,0),(-1,-1) e (1,1). Todas as funções desse tipo são exemplos de funções ímpares.

Organização de Computadores. Cálculos Binários e Conversão entre Bases Aritmética Binária

Python: Comandos Básicos. Claudio Esperança

Notas para um curso de Cálculo 1 Duilio T. da Conceição

Plano Curricular de Matemática 3.º Ano - Ano Letivo 2015/2016

Universidade Estadual de Santa Cruz. Departamento de Ciências Exatas e Tecnológicas. Especialização em Matemática. Disciplina: Estruturas Algébricas

36ª Olimpíada Brasileira de Matemática GABARITO Segunda Fase

Sistemas Numéricos e a Representação Interna dos Dados no Computador

Tutorial MATLAB 6.5. Thaís Rodrigues Tonon RA: Turma B

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

Arquitetura de Computadores

Algoritmo. Linguagem natural: o Ambígua o Imprecisa o Incompleta. Pseudocódigo: o Portugol (livro texto) o Visualg (linguagem) Fluxograma

APROG - Civil. Excel. Técnicas de pesquisa de informação em tabelas. Instituto Superior de Engenharia do Porto

Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados)

indicadas por letras e linhas, indicadas por números. Para selecionar uma planilha para uso, devemos utilizar a guia de planilhas:

Programa Microcal ORIGIN Comandos Básicos

Transcrição:

Acrescentando regras à Base de Conhecimento fica(porto,portugal). fica(lisboa,portugal). passa(douro,porto). passa(douro,zamora). passa(tejo,lisboa). rio_português(r):-passa(r,c),fica(c,portugal). 16 Questões sobre a Base de Conhecimento fica(porto,portugal). sucesso (2) fica(lisboa,portugal). passa(douro,porto). sucesso (1) passa(douro,zamora). passa(tejo,lisboa). rio_português(r):-passa(r,c),fica(c,portugal).?-rio_português(rio). Rio=douro Note-se que: na chamada à regra, do lado esquerdo, Rio e R passam a ser a mesma variável; passa(r,c) tem sucesso com R=douro e C=porto; a chamada seguinte já é feita com C já instanciada com porto, na prática essa chamada é feita como sendo fica(porto,portugal) Quando se atinge o ponto a regra tem sucesso 17 1

Questões sobre a Base de Conhecimento fica(porto,portugal). falha?-rio_português(tejo). fica(lisboa,portugal). sucesso (2) Note-se que: na chamada à regra, do lado esquerdo, R fica instanciada com o valor tejo; dentro da regra (lado direito) a 1ª chamada já é feita como sendo passa(douro,porto). falha passa(tejo,c) e tem sucesso com passa(douro,zamora). falha R=tejo e C=lisboa; passa(tejo,lisboa). sucesso (1) a chamada seguinte já é feita com C já instanciada com lisboa, na prática essa chamada é feita como sendo fica(lisboa,portugal) rio_português(r):-passa(r,c),fica(c,portugal). Quando se atinge o ponto a regra tem sucesso 18 Questões sobre a Base de Conhecimento fica(porto,portugal). falha falha E se trocarmos os factos do rio tejo? fica(lisboa,portugal). falha sucesso (3)?-rio_português(tejo). falha falha na chamada à regra, do lado esquerdo, R fica falha instanciada com o valor tejo; falha dentro da regra (lado direito) a 1ª chamada falha já é feita como sendo passa(tejo,c) e tem falha sucesso com R=tejo e C=toledo; falha a chamada seguinte já é feita com C já instanciada com toledo, na prática essa passa(douro,porto). falha chamada é feita como sendo passa(douro,zamora). falha fica(toledo,portugal) e falha sucesso (1) Volta-se atrás (backtracking) e é tentada uma va solução para passa(tejo,c), ficando passa(tejo,lisboa). sucesso (2) C=lisboa a chamada seguinte já é feita com C já instanciada com lisboa, na prática essa chamada é feita como sendo rio_português(r):-passa(r,c),fica(c,portugal). fica(lisboa,portugal) Quando se atinge o ponto a regra tem sucesso 19 2

fica(porto,portugal). fica(lisboa,portugal). Questões sobre a Base de Conhecimento passa(douro,porto). suc.(1) suc.(2) passa(douro,zamora). suc.(3) passa(tejo,lisboa). rio_português(r):-passa(r,c),fica(c,portugal). sucesso?-banhadas_mesmo_rio(c1,c2). C1=porto C2=zamora Note-se que: na chamada à regra, do lado esquerdo, C1 e C2 continuam como sendo não instanciadas; dentro da regra (lado direito) a 1ª chamada já é feita como sendo passa(r,c1) e tem sucesso com R=douro e C1=porto; a chamada seguinte já é feita com R já instanciada com douro, na prática essa chamada é feita como sendo passa(douro,c2) e tem sucesso com C2=porto O teste seguinte falha (porto não é diferente de porto) e faz-se o backtracking Agora passa(douro,c2) tem sucesso com C2=zamora O teste seguinte tem sucesso (porto é diferente de zamora) Quando se atinge o ponto a regra tem 20 Questões sobre a Base de Conhecimento fica(porto,portugal). fica(lisboa,portugal). passa(douro,porto). passa(douro,zamora). passa(tejo,lisboa). Experimente fazer as seguintes questões e efectue as traçagens?-banhadas_mesmo_rio(orense,c).?-banhadas_mesmo_rio(c,lisboa).?-banhadas_mesmo_rio(zamora,porto).?-banhadas_mesmo_rio(lisboa,porto).?-banhadas_mesmo_rio(coimbra,c). rio_português(r):-passa(r,c),fica(c,portugal). 21 3

Variáveis em PROLOG As variáveis em PROLOG têm um desempenho diferente das variáveis de outras linguagens Em PROLOG uma variável pode estar apenas em dois estados: não instanciada ou instanciada Uma vez instanciada uma variável só pode mudar de valor pelo processo de backtracking, ou seja, voltando a ficar como não instanciada para tomar outro valor Exemplos: No acetato 19, C tomou o valor toledo e depois por backtracking passou a tomar o valor lisboa acetato 20, C2 tomou o valor porto e depois por backtracking passou a tomar o valor zamora 22 Variáveis em PROLOG Em PROLOG o incremento duma variável nunca pode ser feito como N is N+1 (is é a atribuição numérica) Se N não estiver instanciado ocorre uma falha quando se tenta avaliar N+1 Se N estiver instanciado não poderemos obrigar a mudar o seu valor Deve ser usado N1 is N+1 Se for pedida a impressão de uma variável não instanciada aparecerá um nº antecedido de _ (por exemplo _22456) que tem a ver com a referência da variável e não com o seu valor Quando num facto ou regra não interesse o valor de uma variável, esta pode ser substituída por _ Se quisermos saber se uma variável está ou não instanciada devemos usar: var(x) tem sucesso se X não estiver instanciada; nvar(x) tem sucesso se X estiver instanciada 23 4

Variáveis em PROLOG Vejamos através da interacção com a consola o modo de funcionamento de uma variável?- write('x='),write(x),nl,x=a,write('x='),write(x),nl. X=_22650 X=a X = a?- write('x='),write(x),nl,x=a,write('x='),write(x),nl,x=b. X=_39436 X=a 24 Operadores Lógicos em PROLOG Já foi visto que os operadores lógicos em PROLOG eram:, para a conjunção ; para a disjunção t para a negação Podemos usar os () para tirar ambiguidades ou forçar as expressões pretendidas Vamos considerar a seguinte base de factos (com factos sem argumentos): a. b. c:-fail. /*o fail origina uma falha*/ d. 25 5

Operadores Lógicos em PROLOG Base de Factos a. b. c:-fail. d. Questões:?- a.?- c.?- t a.?- t c.?- a,b.?- a,c.?- a;c.?- (a,c);(t a;b). 26 Operadores Aritméticos em PROLOG Os operadores aritméticos do PROLOG são: + adição X+Y - Subtração X-Y * Multiplicação X*Y / divisão X/Y // divisão inteira X//Y mod resto da divisão inteira X mod Y ^ Potência X^Y - Simétrico -X 27 6

Funções Aritméticas em PROLOG Embora a linguagem PROLOG não seja a mais adequada para cálculo numérico, como em qualquer outra linguagem temos funções aritméticas, alguns exemplos do LPA-PROLOG: abs(x) valor absoluto de X acos(x) aln(x) alog(x) asin(x) atan(x) cos(x) arco-cosse de X (graus) e x 10 x arco-se de X (graus) arco-tangente de X (graus) cosse de X (graus) fp(x) parte não inteira de X (mesmo sinal que X) int(x) inteiro igual ou imediatamente anterior a X 28 Funções Aritméticas em PROLOG ip(x) ln(x) log(x) max(x,y) min(x,y) rand(x) sign(x) sin(x) sqrt(x) parte inteira de X logaritmo natural de X logaritmo decimal de X máximo entre X e Y mínimo entre X e Y gera um número aleatório entre 0 e X (vírgula flutuante) sinal de X (-1 se negativo, 0 se zero ou 1 se positivo) se de X (graus) raiz quadrada de X tan(x) tangente de X (graus) 29 7

Operadores Relacionais em Prolog Os operadores relacionais do PROLOG são: == igualdade X==Y \== diferença X\==Y > maior X>Y < mer X<Y =< mer ou igual X=<Y >= maior ou igual X >= Y Convém atender ao facto das variáveis poderem estar instanciadas ou não 30 Operadores Relacionais em PROLOG?- X=a,Y=a,X==Y. X = Y = a?- X=a,Y=b,X==Y.?- X=a,X==Y.?- X=a,Y=b,X\==Y. X = a, Y = b?- X==Y.?- X\==Y. X = _, Y = _?- X=Y,X==Y. X = Y = _?- X=Y,X\==Y.?- X=a,X\==Y. X = a, Y = _ 31 8