




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
PROGRAMAÇÃO LÓGICA
Tipologia: Notas de estudo
1 / 276
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























































































∗ Listas e Estruturas de Dados ∗ Fluxo de Controle e Aritm´etica ∗ Anima¸c˜ao de Programas ∗ Classifica¸c˜ao e Ordena¸c˜ao
Para minha companheira Flori
e nossos filhos, Emmanuel, Ayun e Thiago
pelo amor e a inspira¸c˜ao.
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].
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.
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:
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.
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:
x
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.
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