1 of 22

Prof. Dr. Roberta Andrade

raafupe@gmail.com

Lógica de Programação e Algoritmo II

Sistema de Informação

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

1

*

AULA 7 – LPA II

2 of 22

a :- b1, b2... bi; bj... bn.

Cabeça

Condição

se

“e”

ou

A Cláusula Prolog

LPA2-Prolog

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

2

*

AULA 7 – LPA II

3 of 22

Programação em Lógica

Sócrates é homem.

Todo homem é mortal.

Quem é mortal?

Sócrates é mortal.

homem(sócrates).

mortal(X) :- homem(X).

?- mortal(Z).

Z = sócrates.

🡺

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

3

*

AULA 7 – LPA II

4 of 22

Exercício Classe

Seja a árvore genealógica mostrada abaixo...

José

João

Julio

Jorge

  • Fatos: �São verdades incondicionais:

pai(josé, joão).

pai(joão, júlio).

pai(júlio, jorge).

  • Regras

Descreva que é filho ?

Descreva que é avô?

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

4

*

AULA 7 – LPA II

5 of 22

  • Fatos: �São verdades incondicionais:

pai(josé, joão).

pai(joão, júlio).

pai(júlio, jorge).

  • Regras: �Podem ser verdadeiras ou não:

filho(X, Y):- pai(Y, X).

avô(X, Y):- pai(X, Z), pai(Z, Y).

Fatos, Regras e Consultas

José

João

Julio

Jorge

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

5

*

AULA 7 – LPA II

6 of 22

  • Fatos: �São verdades incondicionais:

pai(josé, joão).

pai(joão, júlio).

pai(júlio, jorge).

  • Regras: �Podem ser verdadeiras ou não:

filho(X, Y):- pai(Y, X).

avô(X, Y) :- pai(X, Z), pai(Z, Y).

  • Consultas: �Provocam a execução do programa:

?- filho(júlio, X). X=joão

?- avô(X, jorge). X=joão

Fatos, Regras e Consultas

José

João

Julio

Jorge

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

6

*

AULA 7 – LPA II

7 of 22

Exercício Classe

  • Implementar as regras de Irmão e Avô.

  • Fatos
    • pai(arthur,carlos).
    • pai(arthur,silvio).
    • pai(carlos,xico).
    • pai(silvio,ricardo).

Arthur

Julia

Silvio

Carlos

Ricardo

Xico

Implementar a regras: Filho ???

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

7

*

AULA 7 – LPA II

8 of 22

Exercício Classe

  • Fatos
    • masculino(arthur).
    • masculino(silvio).
    • masculino(carlos).
      • masculino(ricardo).
      • masculino(xico).
  • Regras
    • filho(X,Y):-pai(Y,X), masculino(X),write(X), write(”filho de: ”),write(Y).

Arthur

Julia

Silvio

Carlos

Ricardo

Xico

Implementar as regras: avô e irmão???

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

8

*

AULA 7 – LPA II

9 of 22

Exercício Classe

  • Fatos
    • pai(arthur,carlos).
    • pai(arthur,silvio).
    • pai(carlos,xico).
    • pai(silvio,ricardo).
  • Regra
    • avoM(X,Z) :- pai(X,Y), pai(Y,Z), write(X), write(" é avô de "), write(Z).
    • irmao(Y,Z) :- pai(X,Y),pai(X,Z), write(Y), write(" é irmão de "), write(Z).
  • Consulta
    • avo(arthur,ricardo).
    • irmao(carlos,silvio).

Arthur

Julia

Silvio

Carlos

Ricardo

Xico

Implementar as regras:

avó e neto ???

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

9

*

AULA 7 – LPA II

10 of 22

Exercício Classe

  • Fatos
    • mae(julia,carlos).
    • mae(julia,silvio).
    • feminino(julia).

  • Regra
    • avoF(X,Z) :- mae(X,Y), pai(Y,Z),feminino(Y), write(X), write(" é avó de "), write(Z).
    • filho(X,Y):-pai(Y,X),masculino(X),write(X), write("filho de: "),write(Y).
    • neto(U,V) :- filho(U,Z),filho(Z,V).
  • Consulta
    • avoF(julia,X).
    • neto(xico, X).

Arthur

Julia

Silvio

Carlos

Ricardo

Xico

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

10

*

AULA 7 – LPA II

11 of 22

Fatos

Seja a árvore genealógica mostrada abaixo...

Maria

João

José

Ana

Júlia

Íris

Jorge

ser representada pelo seguinte programa Prolog:

progenitor(maria, josé).

progenitor(joão, josé).

progenitor(joão, ana).

progenitor(josé, júlia).

progenitor(josé, íris).

progenitor(íris, jorge).

Este programa representa a relação progenitor, na forma de um predicado, que contém 6 cláusulas, que são todas fatos.

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

11

*

AULA 7 – LPA II

12 of 22

Consultas

O programa pode ser pensado como uma tabela em uma BD.

progenitor(maria, josé).

progenitor(joão, josé).

progenitor(joão, ana).

progenitor(josé, júlia).

progenitor(josé, íris).

progenitor(íris, jorge).

No caso de um programa constituído unicamente de fatos, a semântica é exatamente a mesma de uma BD relacional...

pode ser consultada de várias maneiras:

?- progenitor(joão, ana).�true

?- progenitor(joão, jorge).�false

?- progenitor(joão, X).�X=josé;�X=ana;�false

?- progenitor(X,Y).�X=maria, Y=josé;�X=joão, Y=josé;�...�X=íris, Y=jorge;�false

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

12

*

AULA 7 – LPA II

13 of 22

Ampliando a Base de Fatos

O programa pode ser ampliado acrescentando-se novos fatos que inclusive podem estabelecer novas relações.

No exemplo ao lado acrescentou-se ao programa original as relações masculino/1 e feminino/1.

Estas relações, que possuem aridade 1 (um só argumento), podem ser pensadas como sendo atributos dos objetos a que se aplicam.

progenitor(maria, josé).

progenitor(joão, josé).

progenitor(joão, ana).

progenitor(josé, júlia).

progenitor(josé, íris).

progenitor(íris, jorge).�

masculino(joão).�masculino(josé).�masculino(jorge).�

feminino(maria).�feminino(ana).�feminino(júlia).�feminino(íris).

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

13

*

AULA 7 – LPA II

14 of 22

Regras

relações pai/2 e mãe/2 podem agora ser definidas da seguinte maneira:

X é pai de Y se � X é progenitor de Y e � X é masculino.

X é mãe de Y se � X é progenitor de Y e � X é feminino.

Em Prolog:

pai(X,Y) :-

progenitor(X,Y),

masculino(X).

mãe(X,Y) :-

progenitor(X,Y),

feminino(X).

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

14

*

AULA 7 – LPA II

15 of 22

Mais Regras

As relações irmão/2 e irmã/2 podem agora ser definidas da seguinte maneira:

X é irmão de Y se � Z é progenitor de X e � Z é progenitor de Y e � X é masculino.

X é irmã de Y se ...

Em Prolog:

irmão(X,Y) :-

progenitor(Z,X),

progenitor(Z,Y),

masculino(X).

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

15

*

AULA 7 – LPA II

16 of 22

Exercício de Classe

  • A
 Árvore
 Genealógica
 da Família
 Pinheiro. Pouco se sabe da história passada da Família Pinheiro. Existem alguns registros antigos que indicam que o casal José e Maria criou dois filhos, o João e a Ana, que a Ana teve duas filhas, a Helena e a Joana, também parece ser verdade, segundo os mesmos registros. Além disso, o Mário é filho do João, pois muito se orgulha ele disso. Estranho também, foi constatar que o Carlos nasceu da relação entre a Helena, muito formosa, e o Mário.

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

16

*

AULA 7 – LPA II

17 of 22

Resposta

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

17

*

AULA 7 – LPA II

18 of 22

Resposta

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

18

*

AULA 7 – LPA II

19 of 22

Exercício de Casa

Gerar mãe, pai, avô, avó, irmão, irmã, filho, filha, tio, tia, primo e prima.

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

19

*

AULA 7 – LPA II

20 of 22

Exercício Aula Passada

  1. Verifique se um número é par ou impar.
  2. Construa uma calculadora com as operações básicas (soma,subtração,divisão,multiplicação).
  3. Escreva um programa para ler o raio de um círculo, calcular e escrever a sua área.
  4. Um professor necessita calcular as notas de seus alunos. Ele ficou sabendo que você é bom programador e contratou você para implementar um programa que solicite três notas e informe a média aritmética delas.
  5. Uma loja XXXX o preço de um produto teve um desconto, ambos serão fornecidos pelo funcionário da loja XXXX. Calcular e exibir o valor do desconto e o valor do final do produto com desconto.
  6. Escreva um programa para ler uma temperatura em graus Fahrenheit, calcular e escrever o valor correspondente em graus Celsius.

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

20

*

AULA 7 – LPA II

21 of 22

RESPOSTA

  • %%%qquestão 01
    • par(X):- X mod 2 =:= 0.
    • impar(X):- X mod 2 =:= 1.
  • %%%qquestão 02
    • soma(N1,N2,R):- R is N1+N2.
    • sub(N1,N2,R):- R is N1-N2.
    • mult(N1,N2,R):- R is N1*N2.
    • div(N1,N2,R):- R is N1//N2.
  • %%%%%qquestão 03
    • num3 :- write("Digita o raio da circunferência?"),read(R), Area is 3.14*R, write("Area = "),write(Area).
  • %%%%%qquestão 04
    • num4 :- write(" Digite Nota1: "),read(N1),write(" Digite Nota2: "),read(N2),write(" Digite Nota3: "),read(N3),Media is (N1+N2+N3)/3,write("Media: "),write(Media).

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

21

*

AULA 7 – LPA II

22 of 22

RESPOSTA

  • %%%%%qquestão 04
    • num4 :- write(" Digite Nota1: "),read(N1),write(" Digite Nota2: "),read(N2),write(" Digite Nota3: "),read(N3),Media is (N1+N2+N3)/3,write("Media: "),write(Media).
  • %%%%%qquestão 05
    • num5 :- write(" Digite Preço do Produto: "),read(P), write(" Digite Desconto em percentual: "),read(D), DESC is P*D/100, VF is P - DESC, write("Desconto: "), write(DESC), write_ln("Valor Final do Produto: "), write(VF).
  • %%%%%qquestão 06
    • num6 :- write(" Digite a Temperatura em Fahrenheit: "),read(F), C is (5*(F-32))/9, write_ln("Temperatura em Celsius: "),write(C).

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

22

*

AULA 7 – LPA II