1 / 23

Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres

Universidade Federal do Espírito Santo. Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres boeres@inf.ufes.br CT VII - Sala 34 Departamento de Informática Centro Tecnológico Universidade Federal do Espírito Santo. Co-Autoria: Clebson Oliveira.

ellis
Télécharger la présentation

Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres

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. Universidade Federal do Espírito Santo Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres boeres@inf.ufes.br CT VII - Sala 34 Departamento de Informática Centro Tecnológico Universidade Federal do Espírito Santo Co-Autoria: Clebson Oliveira

  2. RESOLVENDO PROBLEMAS – Os movimentos do cavalo no xadrez • Considere o jogo de xadrez, onde peças são movimentadas em um tabuleiro dividido em 8 linhas e oito colunas. Considere ainda os movimentos do cavalo, a partir de uma dada posição, conforme diagrama a seguir, onde cada possível movimento é designado por mi.  No esquema, o cavalo localizado na posição (5, 4) pode fazer oito movimentos, onde o primeiro deles, m1, levaria o cavalo para a posição (7,5). 

  3. Os movimentos do cavalo

  4. PROBLEMA 1 • Escreva uma função que determina se, a partir de uma dada posição, o cavalo pode ou não realizar o primeiro movimento. Vamos chamá-la de pmov, e denominar seu parâmetro (a posição corrente) de (x,y).

  5. Instâncias de pmov

  6. Solução

  7. Testando a solução

  8. Estendendo o problema

  9. Identificando abstrações

  10. Análise da solução • Clareza - Na medida em que agora está explicitado, que todas as oito funções para verificar os movimentos possuem estrutura semelhante e que todas estão usando funções para verificar a ultrapassagem das bordas; • Manutenção - Se nosso tabuleiro mudasse, ou seja, passasse a ter 9 linhas por nove colunas, bastaria alterar a função f e tudo estaria modificado, ao invés de termos que alterar as oito definições. • Reuso - As duas funções que testam as bordas poderiam ser usadas para construir funções para avaliar o movimento de outras peças do jogo de xadrez.

  11. PROBLEMA 2 • Sabemos que para cada posição alguns movimentos podem ser realizados e outros não. Como ordenamos os movimentos no sentido anti-horário, gostaríamos de obter, para uma dada posição, dos movimentos que podem ser realizados, aquele que possui o menor índice.

  12. Qual o menor índice de movimento possível?

  13. Instâncias de qualmov

  14. Solução

  15. Codificando a solução

  16. Análise da solução

  17. REVISITANDO O PROBLEMA 1 • Observando a solução encontrada para o problema 1, constatamos que embora a noção de movimento do cavalo seja única, quem precisar saber se um dado movimento é válido, precisará conhecer o nome das oito funções. Estamos sobrecarregando nosso usuário ao darmos oito nomes para coisas tão parecidas. Será que temos como construir uma só função para tratar o problema?

  18. Melhorando a interface

  19. Exemplo de avaliação da função mov

  20. Codificação da Solução mov (m, x, y) = if not (pert m 1 8) || not (pert x 1 8) || not (pert y 1 8) then False else ifm == 1 then pmov else ifm == 2 then smov else ifm == 3 then tmov else ifm == 4 then qmov else ifm == 5 then qtmovelse ifm == 6 then sxmov else if m == 7 then stmovelse omovwhere pmov = ... smov = ... tmov = ... ...

  21. Análise da solução nova solução

  22. Codificação da solução

  23. Número de comparações

More Related