flora-2

20
Recordando o safári

Upload: riona

Post on 21-Jan-2016

30 views

Category:

Documents


0 download

DESCRIPTION

Flora-2. Aula de Laboratório. Arquivo do Exemplo. Baixar os arquivos “safari.flr” de ~apln/aulamci em um diretório acessível pelo unix (subpasta no diretório pessoal). Mudar para este diretório Abrir os arquivos baixados num editor de texto (Context por exemplo). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Flora-2

Recordando o safári

Page 2: Flora-2

Flora-2Flora-2

Aula de Laboratório

Page 3: Flora-2

Arquivo do ExemploArquivo do Exemplo

Baixar os arquivos “safari.flr” de ~apln/aulamci em um diretório acessível pelo unix (subpasta no diretório pessoal).

Mudar para este diretório Abrir os arquivos baixados num editor de texto (Context por

exemplo)

Page 4: Flora-2

Executando o Interpretador FloraExecutando o Interpretador Flora

Executando o XSB Conectar-se via ssh a buique.cin.ufpe.br Mudar para o diretório onde estão os arquivos ‘.P’ Executar

/home/robocup/program_files/linux/XSB/bin/xsb

Carregando o Flora Interpretador de Flora é carregado como

um programa normal do XSB [flora2].

Shell do Flora: flora _shell.

Sempre lembrar do ponto no final!!!

Page 5: Flora-2

Shell do FloraShell do Flora

Carregando um programa ?- [nome_do_programa]. [safari].

Flora é case sensitive!!! ?- flHelp.

Help do Shell. Consultando:

Digitar premissas separadas por virgula, seguido de um ponto. Pressionar return para obter o resultado.

?- G:grupo[animal->A,local->L].

Page 6: Flora-2

TraceTrace

Trace ?- flTrace.

Ativa o trace sistemático de todos os predicados. CALL: entrada no predicado/objeto EXIT: retorno com sucesso REDO: invocação do mesmo objetivo causado por

backtracking FAIL: não foi possível provar objetivo

?- flNoTrace Desativa o trace

Page 7: Flora-2

Imprimindo na TelaImprimindo na Tela

Imprimindo Strings formatados fmt_write(formato,args(arg1,..., argn))@flora(io).

Formato tem sintaxe similar a println de C: “ numero:%d \n” %d: inteiro, %s: string, %S: termos

G:grupo[local->L], fmt_write(“Local do %S eh %S \n",args(G,L))@flora(io).

Page 8: Flora-2

Pretty PrintPretty Print

Impressão formatada de classes e Objetos Imprimir objetos de uma classe

Classe[#pp_class(modulo)]@flora(pp). Ex: grupo[#pp_class(main)]@flora(pp).

Imprimir instâncias e hierarquias Ex: Classe[#pp_isa(Modulo)]@flora(pp). Ex: animal[#pp_isa(main)]@flora(pp).

Imprimir Objeto Objeto[#pp_self(Modulo)]@flora(pp). Ex: grupo1[#pp_self(main)]@flora(pp).

Page 9: Flora-2

ExercícioExercício

Criar atributo safariValido na classe grupo Implementar regras que atribuam os valores sim e nao para o

atributo Verificar se o habitat do animal corresponde ao local de caça

do grupo Consultar quais grupos são ou não válidos

Page 10: Flora-2

FinalizandoFinalizando

flHalt Sai do flora e do XSB

flEnd Sai do flora

halt Sai do XSB

Page 11: Flora-2

JEOPSJEOPS

Aula prática

Page 12: Flora-2

Tutorial: Configurando o ExemploTutorial: Configurando o Exemplo1. Criar um diretório base no temp da máquina

• Chamaremos este diretório de <dir>;• Não colocar espaços ou caracteres especiais no caminho!

2. Criar o diretório <dir>\safari já que as classes estão neste pacote.3. Baixar no diretório criado o fonte das classes de www.cin.ufpe.br/~bjs/mci/

aulaJeops/classes.zip• AnimalAquatico.java, Animal.java• Local.java, LocalAquatico.java• GrupoSafari.java• Veiculo.java,VeiculoAquatico.java• Pessoa.java, Motorista.java• Exemplo1.java

Page 13: Flora-2

Tutorial: Configurando as ferramentasTutorial: Configurando as ferramentas1. Criar o diretório <dir>\jeops

2. Neste diretório, baixar os arquivos do Jeops de:• http://www.cin.ufpe.br/~jeops/v21/download.html

• ...ou daqui

3. Configurar o prompt do MS-DOS para Java• Ajustar o path: set path=%path%; <diretório de instalação do

JDK>\bin;

• Ajustar o classpath: set classpath=%classpath%; <dir>;<dir>\jeops\JEOPS.jar ;<dir>\jeops\JeopsRE.jar

• Importante: Não deve haver espaços em branco no path ou classpath, pois podem causar problemas no reconhecimento dos diretórios especificados nessas variáveis.

Page 14: Flora-2

Tutorial: Compilando as classesTutorial: Compilando as classes

1. Compilar as classes: a partir de <dir>, digitar no prompt: javac

safari/<nome da classe>.java • O Exemplo1.java não compilará por causa da base que ainda não existe.

2. Dica: • Comentar a parte do Exemplo1.java que se refere à base.

• Compilar usando javac safari/*.java

Page 15: Flora-2

Tutorial: Criando a base de regrasTutorial: Criando a base de regras

1. Baixar o arquivo de regras para <dir>\safari:• Baixar daqui o SafariRulesReduzido.rules

2. Executar o JEOPS: • dentro de <dir>, digitar no prompt:

java jeops.compiler.Main safari/SafariRulesReduzido.rules

• Será criado um arquivo .java para essa base de regras

Page 16: Flora-2

Tutorial: Rodando o exemploTutorial: Rodando o exemplo

1. Compilar as classes: dentro de <dir>, digitar no prompt: javac safari/*.java

• Não esquecer de reativar as chamadas à base de regras no exemplo!

2. Obs.: No j.d.k 1.4.1a palavra assert é reservada da linguagem. Neste caso existe uma versão de Jeops que usa tell no lugar de assert para baixar em: http://www.cin.ufpe.br/~jeops/v21/aulas/JEOPS_TELL.zip

3. Executar o programa de testes: dentro de <dir> digitar java safari.Exemplo1

Page 17: Flora-2

ExercícioExercício

1. Criar uma classe para veículos terrestres

• O veículo pode se locomover em locais fechados ou não

2. Criar uma classe para locais terrestres

• O local pode ser fechado ou não Locais abertos: savanas, desertos... Locais fechados: florestas sem trilha, mangues,

pântanos...

Page 18: Flora-2

ExercícioExercício

3. Criar uma regra que insere o veículo terrestre no grupo;

• Observar se o grupo já tem veículo;

• Observar se o local é aberto ou não e se o veículo corresponde a esta característica;

4. Alterar o código de Exemplo1 para que a regra seja disparada;

Page 19: Flora-2

Referências: Regras JEOPSReferências: Regras JEOPS

Rule ::= "rule" "{" <Rule Body> "}"

Rule Body ::= <Declarations> <Local Declarations>? <Conditions> <Actions>

Declarations ::= "declarations" (<class name> <ident> ("," <ident>)* )*

Local Declarations ::= "localdecl" (<class name> <ident> "=" <expression>)*

Conditions ::= "conditions" (<expression>)*

Actions ::= (Action)+

Action ::= "assert" "(" <expression> ")" | "retract" "(" <expression> ")" | "modified" "(" <expression> ")" | <block>

Page 20: Flora-2

Referências: Regras JEOPSReferências: Regras JEOPSpackage safari;

public ruleBase RuleBaseDefinida {

rule nome_regra {

declarations

...

conditions

...

actions

...

}

rule nome_regra2 {

...

}

...

}