Roteiro de Aula Prática



Documentos relacionados
Práticas de Programação em Lógica. José Romildo Malaquias

Ficha Prática 1. José Creissac Campos, António Nestor Ribeiro {jose.campos, PPIII (LESI) 2002/03

Scilab. Introdução ao Scilab. Como obter ajuda

Linguagem Lógica Prolog

O QUE É A CENTRAL DE JOGOS?

Configuração do Servidor DHCP no Windows Server 2003

Organização de programas em Python. Vanessa Braganholo

LIBERAÇÃO DA PASTA ARQUIVOS DE PROGRAMA

PASSO A PASSO GOOGLE DOCS - FORMULÁRIOS GOOGLE DOCS

Microsoft Access: Criar consultas para um novo banco de dados. Vitor Valerio de Souza Campos

Lista de Exercícios 1: Soluções Fundamentos da Lógica Lógica Proposicional

1) Verifique se o Microsoft.Net Framework 3.5 está instalado, para isto, abrir o Painel de Controle e verificar:

Nota de Aula: Utilização da IDE Code::Blocks

Algoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira

Especificação do 3º Trabalho

GESTÃO DE INFORMAÇÃO PESSOAL OUTLOOK (1)

A equação da posição em função do tempo t do MRUV - movimento retilíneo uniformemente variado é:

Dadas a base e a altura de um triangulo, determinar sua área.

EXEMPLO DE COMO FAZER UMA MALA DIRETA

AULA 6: SERVIDOR DNS EM WINDOWS SERVER

Conceitos básicos da linguagem C

Pesquisa Operacional na Tomada de Decisões. Conteúdos do Capítulo. Programação Linear. Lindo. s.t. Resolvendo Programação Linear Em um Microcomputador

QUEM SOU EU? Apresentação autobibliográfica multimídia

Múltiplos Estágios processo com três estágios Inquérito de Satisfação Fase II

cio Roteamento Linux

Manual AGENDA DE BACKUP

Desenvolvendo Websites com PHP

Como instalar o Ocomon passo a passo.

Google Drive. Passos. Configurando o Google Drive

1. Um servidor rodando Windows 7 (um computador onde o SIPAR ficará instalado e com os dados neste computador);

Janelas e seus elementos

1) Verifique se o Microsoft.Net Framework 3.5 está instalado, para isto, abrir o Painel de Controle e verificar:

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

Como-Funciona-Banco-Damus-Excel-Com-VBNet-Em-3-Idiomas

Tutorial: Programando no Linux

Sistemas Operacionais

Lógica de Programação

ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL

Manual de Operação do Sistema de Tickets Support Suite

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Como enviar e receber correio eletrónico utilizando o Gmail

Tutorial Rápido para Quizlet - em português!

PORTUGUÊS 2 o BIMESTRE

Tutorial. Windows Live Mail

1 Abra o Power Point e crie a apresentação abaixo seguindo suas especificações.

UNIBR FACULDADE DE SÃO VICENTE ESTÁGIO DIGITAL Manual de Criação Passo-a-Passo

TÉCNICAS DE PROGRAMAÇÃO

Administração do Windows Server 2003

EXERCÍCIOS DE LÓGICA DE 1ª ORDEM

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IMPEDIR QUE TODOS BLOGS E SITES PUXEM FOTOS, IMAGENS E GIFS

COMO USAR O SAFEASSIGN (VERIFICADOR DE PLÁGIO) PLATAFORMA BLACKBOARD. Como usar o SafeAssign nos exercícios postados na Blackboard

5 Equacionando os problemas

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Lazarus pelo SVN Linux/Windows

CENTRO UNIVERSITÁRIO CATÓLICA DE SANTA CATARINA PRÓ-REITORIA ACADÊMICA NÚCLEO DE EDUCAÇÃO EM AMBIENTES DIGITAIS NEAD

MANUAL INSTALAÇÃO GESPOS WINDOWS

Tutorial para Remover Vírus que Transforma. as Pastas do Pendrive em Atalhos

O objetivo desta prática é ensinar como usar a máquina chamada computador visível ou vc0, um simulador de computador de von Neumann escrito em Java.

Esse tutorial visa apresentar as principais funcionalidades do Editor de Roteiro de Aprendizagem do Portal Clickideia.

2. O AMBIENTE DE PROGRAMAÇÃO EM C

Como usar o bluej. Laboratório I Prof.ª Vera Alves

Manual de Instalação. Gestão Comercial Golfinho. Gestão Comercial Golfinho - Manual de Instalação

Manual de Instalação de SQL Server (2005, 2008, 2012).

Comandos de repetição while

Manual Administrador - Mídia System

02 - Usando o SiteMaster - Informações importantes

AMBIENTE DE PROGRAMAÇÃO PYTHON

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

3 Dicas MATADORAS Para Escrever s Que VENDEM Imóveis

2. Instalação em um computador autônomo

LINX POSTOS AUTOSYSTEM

SOLUÇÃO PARA PROBLEMAS COM VÍRUS EM PENDRIVE NO SISTEMA OPERACIONAL WINDOWS XP OBS: Antes de inicializar, faça um BACKUP de seu pendrive!

Manual de - Outlook Express

Guia de Solução de Problemas do HASP

Aplicações de Escritório Electrónico

Simão Pedro P. Marinho, Ramon Orlando de Souza Flauzino NARRATIVAS DIGITAIS

Dicas para usar melhor o Word 2007

Sumário INTRODUÇÃO Acesso ao Ambiente do Aluno Ferramentas e Configurações Ver Perfil Modificar Perfil...

Guia de usuário do portal de acesso SSH

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

Table of Contents. PowerPoint XP

ProGriD. Manual de Instalação

Orientação a Objetos

Paradigmas de Linguagens de Programação

Esse tutorial visa apresentar as principais funcionalidades do Editor de Roteiro de Aprendizagem do Portal Clickideia.

Orientação a Objetos

Java e JavaScript. Krishna Tateneni Tradução: Lisiane Sztoltz

MANUAL DE UTILIZAÇÃO DO PLUGIN GERADOR DE PLUGINS DO TERRAVIEW

Lógica para a Programação - 1º semestre AULA 01 Prof. André Moraes

PROGRAMANDO EM C# ORIENTADO A OBJETOS

INSTITUTO FEDERAL DE EDUCAÇÃO CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TÉCNICO EM INFORMÁTICA DISCIPLINA:

e-ouv Passo-a-passo Sistema de Ouvidorias do Poder Executivo Federal Junho, 2015 Controladoria-Geral da União

CURSO BÁSICO DE CRIAÇÃO DE SITES MÓDULO 2 AULA 3

2 de maio de Remote Scan

Aula Delimitação de APPS no ArcGis e produção de um memorial descritivo das situações encontradas dentro e fora das APP

Transcrição:

UNIVERSIDADE FEDERAL DE UBERLÂNDIA Disciplina: Programação Lógica Curso: Sistemas de Informação Professores: Elaine Ribeiro de Faria Créditos Roteiro de Aula Prática O material a seguir consiste de adaptações e extensões dos originais gentilmente cedidos pelo Prof. Alexsandro Santos Soares Agradecimento especial ao Prof. Gabriel Coutinho que auxiliou na confecção do material Objetivo Apresentar o ambiente SWI - Prolog Introduzir a linguagem Prolog: fatos, regras e consultas. Exercícios 1 1.1 Escreva cláusulas Prolog (fatos, regras, ou perguntas) que expressem as seguintes sentenças. Há mais de uma solução em alguns casos. Não é preciso fazer no SWI Prolog, use apenas o bloco de notas. a) O patinho é feio. b) Eu sou legal. c) Todo homem é mortal, exceto o super-homem. d) João nasceu em Pelotas e Jean nasceu em Paris. e) Pelotas fica no Rio Grande do Sul. f) Paris fica na França. g) Só é gaúcho quem nasceu no Rio Grande do Sul. Introdução ao SWI-Prolog Comandos do Prolog O texto de um programa em Prolog é normalmente criado num arquivo, ou conjunto de arquivos, usando um dos editores de texto standard, como por exemplo, o bloco de notas (notepad) do Windows. Embora em alguns momentos deste texto ênfase seja dada para o ambiente Windows nada impede que o mesmo procedimento seja adotado para o SWI-Prolog executado em Linux. O interpretador de Prolog pode depois ser instruído a ler os programas ou bases de conhecimento destes arquivos - a este processo chamamos consultar. Embora esses arquivos possam ter uma extensão arbitrária, optamos por usar a extensão.pl, que é a extensão por defeito usada pelo SICStus (uma outra implementação de Prolog) e pelo SWI-Prolog. Iniciar o interpretador de Prolog Existe um ícone para o interpretador SWI-Prolog no Windows. Depois de clicar duas vezes nesse ícone, o interpretador de Prolog fica à espera de ordens, aparecendo o prompt?- Criar um programa Prolog

Escolha a opção do menu File/New. Uma nova janela será aberta, na qual você digitará o seu programa. Para compilar, acesse a opção Compile/ Compile buffer. Agora é só voltar ao prompt de comandos e fazer suas perguntas ao Prolog. Exercícios 2 2.1 Abra a Aula2-Sintaxe.pdf (disponível no site www.facom.ufu.br/~elaine/pl.html). 2.2 Copie a base de conhecimento 6 (slide 46) para um programa Prolog. 2.3 Faça perguntas ao Prolog sobre essa base de conhecimento. Relacionamentos familiares Prolog é uma linguagem adequada para processamento simbólico. É indicada para resolver problemas que envolvam objetos e seus relacionamentos, por exemplo, o relacionamento familiar. Em Prolog para especificar que Carlos é progenitor de Ana escreve-se: progenitor(carlos,ana). Continuando com o exemplo da família deve-se especificar que Carlos tem mais uma filha: Juliana. Assim temos que: progenitor(carlos,ana). progenitor(carlos,juliana). Após comunicar este programa ao sistema Prolog, podemos fazer com que ele nos responda a perguntas. Isto se faz colocando o sistema num modo em que isto é possível. Em geral o símbolo?-, que é um prompt, representa este estado. Por exemplo, podemos perguntar: Carlos é progenitor de Ana? Em Prolog isto se faz escrevendo:?- progenitor(carlos,ana). Perguntas mais interessantes podem ser formuladas. Exemplo: Quem são o(s) filho(s) de Carlos??- progenitor(carlos,x). Desta vez a resposta não será true ou false. Prolog nos dirá qual é o valor de X que tornará a cláusula verdadeira. X=ana Conforme especificado anteriormente, temos que Carlos tem mais de uma filha. Para dizer a Prolog que queremos outras soluções digitamos ; na frente da resposta dada:?- progenitor(carlos,x). X=ana; X=juliana; False Exercícios 3 3.1 Estender o programa Prolog para incluir os relacionamentos pai, mae, homem e mulher. 3.2 Escrever em Prolog as seguintes consultas: a. Quem é pai de Ana? b. Quem é pai de Quem?

Relacionamentos familiares - continuação Uma pergunta mais complicada: Quem é o avô de Ana? Não foi dito ao Prolog nenhum relacionamento avô. A consulta tem que ser decomposta em dois passos: - Quem é o pai de Ana? Assuma que é algum Y. - Quem é o pai de Y? Assuma que é algum X. Tal consulta composta é escrita em prolog da seguinte forma:?- pai(y,ana),pai(x,y). Esta consulta pode ser lida da seguinte forma: Encontre X e Y de tal forma que pai(y,ana) e pai(x,y) sejam satisfeitos Exercícios 4: 4.1 Escrever em Prolog as seguintes consultas: a. Quem são os netos de João? b. Juliana e Ana têm o mesmo pai? Relacionamentos familiares - continuação Se ao invés de uma consulta quisermos algo mais definitivo, devemos criar uma regra. Definindo uma regra para a relação avo: avo(x,y) :- pai(x,z), pai(z,y). Esta regra pode ser lida da seguinte forma: para todo X, Y e Z, X é avô de Y se X é pai de Z e Z é pai de Y. Exercícios 5: 5.1 Escreva regras para os relacionamentos: a. Avó b. Filho c. Filha d. Irmã e. Irmão f. Irmãos g. Tio h. Tia i. Primo j. Prima 5.2 Monte uma base de dados usando as informações sobre a árvore genealógica da sua família. Faça diversas perguntas ao Prolog sobre as relações de parentesco entre seus familiares. 5.3 Suponha a seguinte Base de Fatos Prolog: cargo(tecnico, rogerio). cargo(tecnico, ivone). cargo(engenheiro, daniel). cargo(engenheiro, isabel). cargo(engenheiro, oscar). cargo(engenheiro, tomas). cargo(engenheiro, ana). cargo(supervisor, luis). cargo(supervisor_chefe, sonia).

cargo(secretaria_exec, laura). cargo(diretor, santiago). chefiado_por(tecnico, engenheiro). chefiado_por(engenheiro, supervisor). chefiado_por(analista, supervisor). chefiado_por(supervisor, supervisor_chefe). chefiado_por(supervisor_chefe, director). chefiado_por(secretaria_exec, director). Escreva em linguagem natural as seguintes interrogações Prolog: a)?- chefiado_por(tecnico, X), chefiado_por(x,y). b)?- chefiado_por(tecnico, X), cargo(x,ivone), cargo(y,z). c)?- cargo(supervisor, X); cargo(supervisor, X). d)?- cargo(j,p), (chefiado_por(j,supervisor_chefe);chefiado_por(j, supervisor)). e)?- chefiado_por(p, director), not(cargo(p, carolina)). Responda qual é a resposta encontrada pelo Prolog para cada uma destas interrogações. Mundo de Harry Poter Observe a seguinte base de conhecimento: elfo_domestico(dobby). bruxo(hermione). bruxo('mcgonagall'). bruxo(rita_skeeter). magico(x):- elfo_domestico(x). magico(x):- feiticeiro(x). magico(x):- bruxo(x). Exercício 6 6.1 Quais das seguintes consultas são satisfeitas? Onde relevante, dê todas as instanciações de variáveis que levam ao sucesso. magico(elfo_domestico). feiticeiro(harry). magico(feiticeiro). magico('mcgonagall'). magico(hermione). Alunos Escreva os seguintes fatos (especificados num arquivo de nome aluno.pl): aluno(joao,poo). aluno(pedro,poo). aluno(maria,pl). aluno(rui,pl). aluno(manuel,pl). aluno(pedro,pl). aluno(rui,ed1). Exercícios 7 7.1 Verifique que os fatos estão presentes na Base de Conhecimento (utilize o predicado listing). a. Escreva uma consulta que verifique se joao é aluno de pl. b. Escreva uma consulta que verifique se rui é aluno de poo. c. Escreva uma consulta que verifique se joao e maria são ambos alunos de ed1. joao e maria são ambos alunos de ed1 se joao for aluno de ed1 e maria for aluna de ed1.

d. Escreva uma consulta que permita saber quem é aluno de pl. e. Escreva uma consulta que permita saber as disciplinas em que rui é aluno. 7.2 Adicione os seguintes fatos à Base de Conhecimento anterior: estuda(joao). estuda(maria). estuda(manuel). f. Sabendo que a aluno A faz a disciplina D se A é aluno de D e A estuda, escreva uma consulta que lhe permita saber se maria faz pl. g. Experimente agora a seguinte consulta?- aluno(x,pl), estuda(x). O que lhe permite esta consulta saber? h. Utilizando a consulta anterior, acrescente à Base de Conhecimento o predicado fazpl(x) e escreva uma consulta que lhe permita saber quem faz pl.