Buscar

17 - Programação em Lógica

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Programação	
  em	
  Lógica	
  
Renata	
  Carvalho	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Programação	
  em	
  Lógica	
  
•  No	
  paradigma	
  lógico	
  (também	
  conhecido	
  como	
  
paradigma	
  descriHvo	
  ou	
  declaraHvo)	
  o	
  
programador	
  implementa	
  uma	
  descrição	
  do	
  
problema	
  e	
  não	
  as	
  instruções	
  para	
  sua	
  resolução	
  
•  Prolog	
  é	
  uma	
  linguagem	
  para	
  programação	
  em	
  
lógica,	
  ou	
  seja,	
  é	
  uma	
  linguagem	
  descriHva/
declaraHva	
  
•  Um	
  programa	
  Porlog	
  consHtui-­‐se	
  de	
  uma	
  coleção	
  
de	
  fatos	
  e	
  regras	
  que	
  são	
  uHlizadas	
  por	
  um	
  “motor	
  
de	
  inferência”	
  para	
  checar	
  se	
  uma	
  consulta	
  pode	
  
ser	
  deduzida	
  desta	
  coleção	
  
UHlização	
  
Definição	
  
Busca	
  
Inserção	
  
Remoção	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Porlog	
  
•  Criada	
  em	
  1972	
  por	
  Colmerauer	
  e	
  Roussel	
  
•  É	
  mais	
  adequada	
  para	
  problemas	
  onde	
  é	
  
necessário	
  descrever	
  conhecimento	
  
•  Exemplo:	
  
•  Em	
  aplicações	
  que	
  realizam	
  computação	
  simbólica	
  
•  Na	
  compreensão	
  de	
  linguagem	
  natural	
  
•  Em	
  sistemas	
  especialistas	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Sintaxe	
  Prolog	
  
•  Os	
  dados	
  em	
  Prolog	
  podem	
  ser	
  um	
  dos	
  seguintes	
  
Hpos:	
  
•  Variáveis	
  
•  Iniciadas	
  com	
  maiúsculas	
  ou	
  underline	
  (_),	
  seguidos	
  de	
  qualquer	
  
caractere	
  alfanumérico	
  
•  Átomos	
  
•  São	
  constantes,	
  devem	
  ser	
  iniciadas	
  com	
  minúsculas	
  seguidas	
  de	
  
qualquer	
  caractere	
  alfanumérico	
  ou	
  qualquer	
  sequência	
  entre	
  aspas	
  
simples	
  (‘	
  ’)	
  
•  Inteiros	
  
•  Qualquer	
  sequência	
  numérica	
  que	
  não	
  contenha	
  ponto.	
  Caracteres	
  
entre	
  aspas	
  duplas	
  (“	
  “)	
  são	
  tratados	
  como	
  listas	
  de	
  inteiros	
  
•  Floats	
  
•  Números	
  com	
  um	
  ponto	
  e	
  pelo	
  menos	
  uma	
  casa	
  decimal	
  
•  Listas	
  
•  Sequência	
  ordenada	
  de	
  elementos	
  entre	
  []	
  e	
  separados	
  por	
  vírgula	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Sintaxe	
  Prolog	
  
•  Os	
  comandos	
  write	
  e	
  read	
  escrevem	
  e	
  lêem	
  sobre	
  
as	
  entradas	
  padrão	
  (monitor	
  e	
  teclado)	
  
•  Para	
  escrever:	
  
•  write(‘Teste	
  de	
  impressão’).	
   	
   	
  Correto	
  
•  write(Teste	
  de	
  impressão)	
   	
  Errado	
  
•  write(X) 	
   	
   	
   	
   	
  Correto	
  
•  write(joao) 	
   	
   	
   	
  Correto	
  
•  Para	
  ler:	
  
•  read(X) 	
   	
   	
   	
   	
  Correto	
  
•  read(x) 	
   	
   	
   	
   	
  Errado	
  
•  read(Joao) 	
   	
   	
   	
  Correto	
  
•  read(joao)	
   	
   	
   	
  Errado	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Sintaxe	
  Prolog	
  
•  Alguns	
  caracteres	
  são	
  especiais	
  para	
  
impressão:	
  
•  nl,	
  \n,	
  \l	
  –	
  nova	
  linha	
  
•  \r	
  –	
  retorna	
  ao	
  início	
  da	
  linha	
  
•  \t	
  –	
  tabulação	
  
•  \%	
  -­‐	
  imprime	
  o	
  %	
  
•  Comentários	
  
•  %	
  -­‐	
  comentário	
  de	
  uma	
  linha	
  
•  /*	
  */	
  -­‐	
  comentário	
  de	
  todo	
  o	
  texto	
  entre	
  os	
  símbolos	
  	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Sintaxe	
  Prolog	
  
•  Em	
  Prolog,	
  todos	
  os	
  comandos	
  devem	
  ser	
  
finalizados	
  com	
  ponto	
  (.)	
  
•  Exemplos	
  
•  write(‘Digite	
  o	
  valor	
  de	
  X:’),	
  nl,	
  
	
  	
  	
  read(X),	
  nl,	
  
	
  	
  	
  write(X),	
  nl.	
  
•  atom(rENATA).	
  
•  var(X).	
  
•  is_list([a,	
  b,	
  c]).	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Exercício	
  
•  Classifique	
  os	
  termos	
  abaixo	
  como	
  átomo,	
  
variável,	
  número	
  ou	
  lista:	
  
•  rENATA	
  
•  23	
  
•  [a,	
  b,	
  c]	
  
•  Variavel23	
  
•  variavel23	
  
•  aulas	
  de	
  paradigamas	
  
•  ‘Renata’	
  
•  65.	
  
•  23.0	
  
•  ‘aulas	
  de	
  paradigmas’	
  
•  _Var	
  
•  “a”	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Exercício	
  
•  Você	
  pode	
  checar	
  as	
  respostas	
  uHlizando	
  os	
  
comandos:	
  
•  atom(termo)	
  –	
  checa	
  se	
  o	
  termo	
  é	
  um	
  átomo	
  
•  var(termo)	
  –	
  checa	
  se	
  o	
  termo	
  é	
  uma	
  variável	
  
•  number(termo)	
  –	
  checa	
  se	
  o	
  termo	
  é	
  um	
  número	
  
(inteiro	
  ou	
  float)	
  
•  Is_list(termo)	
  –	
  checa	
  se	
  o	
  termo	
  é	
  uma	
  lista	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Fatos	
  
•  Um	
  programa	
  Prolog	
  é	
  uma	
  coleção	
  de	
  fatos	
  e	
  
regras	
  
•  Fatos	
  são	
  sempre	
  verdadeiros,	
  mas	
  as	
  regras	
  
precisam	
  ser	
  avaliadas	
  
•  Como	
  criar	
  um	
  fato	
  em	
  uma	
  base	
  Prolog:	
  
•  homem(x).	
  –	
  significa	
  que	
  “x	
  é	
  um	
  homem”	
  
•  genitor(x,	
  y)	
  –	
  significa	
  que	
  “x	
  é	
  genitor	
  de	
  y”	
  
•  É	
  responsabilidade	
  do	
  programador	
  definir	
  os	
  
predicados	
  corretamente	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Fatos	
  
•  Vamos	
  considerar	
  a	
  seguinte	
  árvore	
  
genealógica	
  
Ana	
   Luísa	
  Pedro	
  
Laura	
  Fernando	
  
Felipe	
   Rafael	
  
Isabela	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Fatos	
  
•  Definidos	
  os	
  predicados:	
  
•  masculino(x)	
  –	
  significando	
  que	
  “x	
  é	
  do	
  sexo	
  
masculino”	
  
•  feminino(x)	
  –	
  significando	
  que	
  “x	
  é	
  do	
  sexo	
  
feminino”	
  
•  genitor(x,	
  y)	
  –	
  significando	
  que	
  “x	
  é	
  genitor	
  de	
  y”	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Exercício	
  
•  Usando	
  apenas	
  fatos,	
  descreva	
  as	
  seguintes	
  
relações:	
  
•  Ana,	
  Luísa,	
  Laura	
  e	
  Isabela	
  são	
  do	
  sexo	
  feminino;	
  
•  Pedro,	
  Fernando,	
  Felipe	
  e	
  Rafael	
  são	
  do	
  sexo	
  
masculino;	
  
•  Ana	
  e	
  Pedro	
  são	
  os	
  pais	
  de	
  Fernando;	
  
•  Luísa	
  e	
  Pedro	
  são	
  os	
  pais	
  de	
  Laura;	
  
•  Fernando	
  é	
  pai	
  de	
  Felipe	
  e	
  Rafael;	
  
•  Rafael	
  é	
  pai	
  de	
  Isabela.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes