Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Introdução à programação lógica, Notas de estudo de Informática

PROGRAMAÇÃO LÓGICA

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 06/05/2009

victor-luiz-piza-soares-1
victor-luiz-piza-soares-1 🇧🇷

5 documentos

1 / 276

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Programa¸ao em Prolog
UMA ABORDAGEM PR´
ATICA
Eloi L. Favero
Departamento de Inform´atica
CCEN - UFPA
(Vers˜ao 2006)
Parte I: Fundamentos e T´
ecnicas de Programac¸˜
ao
Hist´orico e Teoria do Prolog
ecnicas de Programa¸ao:
Listas e Estruturas de Dados
Fluxo de Controle e Aritm´etica
Anima¸ao de Programas
Classifica¸ao e Ordena¸ao
Parte II: A Linguagem Prolog
O Prolog Padr˜ao ISO
Ambiente de Depura¸ao
Parte III: Estudos de Casos e Aplicac¸˜
oes
Programa¸ao de Gram´aticas:
Autˆomatos e Gram´aticas Regulares, Gram´aticas Livres de Contexto,
Gram´aticas de Atributos; An´alise exica, Sint´atica e Semˆantica
Linguagens Formais e Compiladores
Processamento de Linguagem Natural:
exico/Morfologia, Sintaxe, Gera¸ao de Linguagem Natural
Inteligˆencia Artificial: KNN, Bayes, Kmeans
Ngramas: Bigramas e Trigramas
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Pré-visualização parcial do texto

Baixe Introdução à programação lógica e outras Notas de estudo em PDF para Informática, somente na Docsity!

Programa¸c˜ao em Prolog

UMA ABORDAGEM PRATICA´

Eloi L. Favero

Departamento de Inform´atica

CCEN - UFPA

(Vers˜ao 2006)

[email protected]

  • Parte I: Fundamentos e T´ecnicas de Programac¸˜ao
    • Hist´orico e Teoria do Prolog
    • T´ecnicas de Programa¸c˜ao:

∗ Listas e Estruturas de Dados ∗ Fluxo de Controle e Aritm´etica ∗ Anima¸c˜ao de Programas ∗ Classifica¸c˜ao e Ordena¸c˜ao

  • Parte II: A Linguagem Prolog
    • O Prolog Padr˜ao ISO
    • Ambiente de Depura¸c˜ao
  • Parte III: Estudos de Casos e Aplicac¸˜oes
    • Programa¸c˜ao de Gram´aticas: Autˆomatos e Gram´aticas Regulares, Gram´aticas Livres de Contexto, Gram´aticas de Atributos; An´alise L´exica, Sint´atica e Semˆantica
    • Linguagens Formais e Compiladores
    • Processamento de Linguagem Natural: L´exico/Morfologia, Sintaxe, Gera¸c˜ao de Linguagem Natural
    • Inteligˆencia Artificial: KNN, Bayes, Kmeans
    • Ngramas: Bigramas e Trigramas

Eloi L. Favero

Departamento de Inform´atica

[email protected]

Copyright ©c 2006

Para minha companheira Flori

e nossos filhos, Emmanuel, Ayun e Thiago

pelo amor e a inspira¸c˜ao.

Pref´acio

N´os acreditamos que programa¸c˜ao pode ser, e deve ser, uma atividade intelectual recompensadora; e que uma boa linguagem de programa¸c˜ao ´e uma poderosa ferramenta conceitual — uma ferramenta para organizar, expressar, experimentar com, e ainda comunicar nossos pensamentos; ... The Art of Prolog de L. Sterling e E. Shapiro [16].

Objetivos do livro

O objetivo deste livro-texto ´e servir como material did´atico na l´ıngua portuguesa para ensino de programa¸c˜ao em Prolog, visando: 1) atender diferentes p´ublicos, de cursos de gradua¸c˜ao at´e cursos de p´os-gradua¸c˜ao, nas ´areas da Ciˆencia da Computa¸c˜ao e correlatas (por exemplo, Sistemas de Informa¸c˜ao); 2) servir de material de apoio para cursos com diferentes cargas hor´arias, de 20 horas at´e 60 horas; e 3) servir como material de referˆencia para usu´arios da linguagem Prolog (adotamos o padr˜ao definido pela norma ISO). Dependendo da dura¸c˜ao do curso, e do p´ublico-alvo, diferentes cap´ıtulos e se¸c˜oes do livro s˜ao usados. No final deste pref´acio sugerimos algumas seq¨uˆencias de cap´ıtulos para alguns usos do livro. A linguagem de programa¸c˜ao Prolog tem sido usada principalmente em disciplinas relacionadas com a ´area de Inteligˆencia Artificial (IA). O Prolog^1 , tamb´em, traz bons resultados quando ´e usado nas atividades de programa¸c˜ao de disciplinas tais como: Programa¸c˜ao em L´ogica (a parte pr´atica), Linguagens Formais, Compiladores, Linguagens de Programa¸c˜ao (paradigma l´ogico), entre outras. A abordagem do livro ´e essencialmente pr´atica, em oposi¸c˜ao ao enfoque te´orico da Programa¸c˜ao em L´ogica que destaca assuntos, tais como estrat´egias de resolu¸c˜ao e computabilidade de um programa. O objetivo de um curso pr´atico de Prolog ´e ensinar as t´ecnicas necess´arias para se desenvolver, de forma clara, elegante e concisa, programas que expressam a solu¸c˜ao de problemas reais. Em uma perspectiva complementar, o subt´ıtulo do livro Uma abordagem pr´atica est´a rela- cionado ao ditado que diz: o talento nasce da pr´atica fiel. A habilidade de desenvolver progra- mas pensando em Prolog nasce de atividades pr´aticas de programa¸c˜ao. Para isso, apresentamos in´umeros exerc´ıcios associados a cada novo assunto apresentado. Por outro lado, em especial na terceira parte do livro, apresentamos estudos de casos baseados em problemas coletados em diversas

(^1) Usamos dois termos como sinˆonimos: “A linguagem Prolog”e “O Prolog”como um sistema que executa a linguagem Prolog.

vii

viii

´areas da Ciˆencia da Computa¸c˜ao, incluindo: Linguagens Formais, Compiladores, Processamento de Linguagem Natural, Inteligˆencia Artificial e Minera¸c˜ao de Dados.

O poder de expressividade do Prolog

Desde o surgimento, in´ıcio dos anos 70, o Prolog mant´em sua popularidade devido `a combina¸c˜ao de diversas caracter´ısticas que definem o seu poder expressivo como linguagem de programa¸c˜ao:

  • Prolog implementa um paradigma de programa¸c˜ao declarativa (em contraste com o paradigma imperativo de C, Pascal) em que se descreve o que fazer e n˜ao como fazer. Em Prolog, o conhecimento computacional (fatos e regras de inferˆencia) ´e expresso numa forma declarativa de alto n´ıvel;
  • Prolog trabalha com estruturas de dados de alto n´ıvel. Estruturas de dados complexas, tais como listas, ´arvores, grafos, etc. s˜ao naturalmente representadas e manipuladas em Prolog. Assim sendo, Prolog possibilita prototipa¸c˜ao r´apida, por exemplo, para valida¸c˜ao de especifica¸c˜oes de sistemas de software;
  • Prolog implementa um sistema de resolu¸c˜ao para a l´ogica de cl´ausulas definidas, que ´e um subconjunto significativo da l´ogica de primeira ordem. Apesar desta fundamenta¸c˜ao l´ogica, n˜ao ´e necess´ario ter forma¸c˜ao pr´evia em l´ogica para programar pensando em Prolog;
  • Prolog vem com um sistema de processamento de regras gramaticais chamado Definite Clause Grammar (DCG), que ´e essencial para o desenvolvimento de aplica¸c˜oes (ou prot´otipos) nas ´areas de Linguagens Formais, Compiladores e Processamento em Linguagem Natural (PLN) — o primeiro Prolog foi desenvolvido para PLN;
  • Prolog permite metaprograma¸c˜ao, isto ´e, um programa pode se examinar e se automod- ificar. Metaprograma¸c˜ao ´e sinˆonimo de linguagens de alta ordem (n˜ao primeira ordem), as quais permitem e facilitam o desenvolvimento de ferramentas para outras linguagens, por exemplo, interpretadores para sistemas de regras para IA.

Vale citar, tamb´em, que o Prolog possui uma sintaxe simples, que se mant´em est´avel desde o surgimento do Prolog padr˜ao Edimburgo, em 1977. O padr˜ao ISO Prolog (1996) [10], 19 anos depois, veio afirmar a sintaxe do Prolog Edimburgo como padr˜ao, apenas apresentando um conjunto adicional de predicados predefinidos. Nesse sentido, observa-se que a maior parte dos programas encontrados em livros da d´ecada de 80 rodam sem altera¸c˜oes (ou quase sem) nos interpretadores atuais (por exemplo, os programas do livro Programming in Prolog de Clocksin & Mellish [5], de 1981). Neste texto, sempre que poss´ıvel, adotamos o padr˜ao ISO Prolog; eventuais diferen¸cas s˜ao apontadas.

Disciplina de Programa¸c˜ao

Como professor, tenho observado que a pr´atica em Prolog desenvolve algumas habilidades pos- itivas de programa¸c˜ao, que, uma vez adquiridas como talentos, s˜ao levadas para outros ambientes de programa¸c˜ao, tais como C++ e Java. Estas habilidades s˜ao:

  • Abstra¸c˜ao: c´odigo de especifica¸c˜ao de alto n´ıvel;

x

  • Programa¸c˜ao em L´ogica e Prolog (60 horas). O livro ´e indicado para a parte da linguagem Prolog. Todos os cap´ıtulos da Parte I, mais alguns da Parte III.
  • Fundamentos de programa¸c˜ao para IA (60 horas). Come¸cando com Curso r´apido de Prolog. Mais alguns t´opicos da parte III.
  • Fundamentos de Prolog para Linguagens Formais e Compiladores (entre 20 e 60 horas). Ou para o desenvolvimento de processadores de linguagens. Come¸cando com o Curso r´apido de Prolog, mais os cap´ıtulos sobre Programa¸c˜ao de Gram´aticas e PLN.
  • Paradigma L´ogico dentro de uma disciplina de Linguagens de Programa¸c˜ao (10 horas). Os primeiros quatro cap´ıtulos da Parte I, ou apenas o cap´ıtulo 1 e parte do cap´ıtulo 2 (s´o duas horas-aula).

Sobre o autor

O autor ´e Bacharel em Ciˆencias da Computa¸c˜ao pela UFRGS (1983-1987), Mestre em Ciˆencias da Computa¸c˜ao pela UFRGS (1987-1990) e ´e Doutor em Ciˆencias da Computa¸c˜ao com ˆenfase em Computa¸c˜ao Inteligente pela UFPE (1996-2000). Professor e pesquisador do Departamento de Inform´atica da UFPA desde 1991, atua tamb´em nos cursos de Mestrado e Doutorado do Programa de P´os-Gradu¸c˜ao em Engenharia El´etrica e Computa¸c˜ao (PPGEEC) da UFPA, na sub´area de Computa¸c˜ao Aplicada. O autor vem desenvolvendo pesquisa em algumas sub´areas da Inteligˆencia Artificial (IA): IA Simb´olica, Processamento de Linguagem Natural e Agentes Inteligentes para Web.

Sum´ario

Lista de Figuras

1.1 O ambiente do SWI-Prolog............................. 11 1.2 O interpretador de comandos do SWI-Prolog.................... 12

9.1 O modelo de caixa e portas de Byrd......................... 134

10.1 Operadores predefinidos conforme o Prolog ISO.................. 146 10.2 Fun¸c˜oes aritm´eticas do Prolog ISO......................... 151

11.1 Arvore sint´´ atica com atributos sintetizados (S-GA), para contar os a(s)....... 170 11.2 Arvore para a senten¸´ ca ”bbb”, da gram´atica L-GA, com atributos herdados (descem) e sintetizados (sobem) para contar os (b)s...................... 171

13.1 Autˆomato finito para tokens de express˜oes aritm´eticas................ 182

xvii

Parte I

Fundamentos e T´ecnicas de Programa¸c˜ao

em Prolog