1 / 20

Flora-2

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).

riona
Download Presentation

Flora-2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Flora-2 Aula de Laboratório

  2. 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)

  3. Executando 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!!!

  4. Shell 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].

  5. Trace • 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

  6. Imprimindo 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).

  7. Pretty 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).

  8. Exercí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

  9. Finalizando • flHalt • Sai do flora e do XSB • flEnd • Sai do flora • halt • Sai do XSB

  10. JEOPS Aula prática

  11. Tutorial: Configurando o Exemplo • 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! • Criar o diretório <dir>\safari já que as classes estão neste pacote. • 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

  12. Tutorial: Configurando as ferramentas • Criar o diretório <dir>\jeops • Neste diretório, baixar os arquivos do Jeops de: • http://www.cin.ufpe.br/~jeops/v21/download.html • ...ou daqui • 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.

  13. Tutorial: Compilando as classes • 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. • Dica: • Comentar a parte do Exemplo1.java que se refere à base. • Compilar usando javac safari/*.java

  14. Tutorial: Criando a base de regras • Baixar o arquivo de regras para <dir>\safari: • Baixar daqui o SafariRulesReduzido.rules • 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

  15. Tutorial: Rodando o exemplo • Compilar as classes: dentro de <dir>, digitar no prompt: javac safari/*.java • Não esquecer de reativar as chamadas à base de regras no exemplo! • 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 • Executar o programa de testes: dentro de <dir> digitar java safari.Exemplo1

  16. Exercício • Criar uma classe para veículos terrestres • O veículo pode se locomover em locais fechados ou não • 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...

  17. Exercício • 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; • Alterar o código de Exemplo1 para que a regra seja disparada;

  18. Referê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>

  19. Referências: Regras JEOPS package safari; public ruleBase RuleBaseDefinida { rule nome_regra { declarations ... conditions ... actions ... } rule nome_regra2 { ... } ... }

More Related