Departamento de Informática Universidade Federal do Espírito Santo

Slides:



Advertisements
Apresentações semelhantes
Criando aplicações WEB
Advertisements

Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação: uma Abordagem Funcional
Introdução à Programação: uma Abordagem Funcional
Introdução à Programação: uma Abordagem Funcional
Introdução à Programação: uma Abordagem Funcional
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres 2009/1.
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres 2009/1.
Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação: uma Abordagem Funcional Programação I Eng. de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi 2010/1.
Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
N Rainhas Descrição do Problema Satisfação de Restrições (CSP)
Profa. Rita de Cassia Fernandes Academia de Ensino Superior
Introdução à Programação: uma Abordagem Funcional PD I – Eng. Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 32 Departamento de Informática Centro.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Sistemas lineares.
PORTAS LÓGICAS Prof. Wanderley.
Orientação a Objetos: Encapsulamento e Classificação
Problema da Aceitação ATM
Prof. Jane Méri Santos Coordenadora do Programa de
RECURSOS DE INFORMÁTICA NO ENSINO DA GEOMETRIA PLANA (5ª à 8ª SÉRIE)
Busca Dispersa Scatter Search
Inteligência Computacional para Otimização
Arte, Diversão, Esporte…
Introdução Objetivos Justificativa Estrutura do Trabalho
Orientador Prof. Nome Professor
Integração de Processos CMOS
Universidade Federal da Bahia – UFBA
REA TRANSFORMAÇÕES DE LORENTZ Adaptado da apostila de Física IV – IFUSP – de autoria de Manoel R. Robillota et al. Evento: Algo que realmente acontece.
Abordagem Estratégica ao Teste de Software
Resolução de Sistemas Lineares Métodos Exatos Fatoração LU
Elsa Mendonça 27 Janeiro 2005 AVALIAÇÃO ECOTOXICOLÓGICA DE ÁGUAS NATURAIS E RESIDUAIS CURSO.
Uma ferramenta para Geração de Mutantes para linguagem C#.
Jane Cristina do Nascimento Waldow
MATRIZES REAIS (1ª AULA ).
Projeto Jogo da Velha Maria Aparecida Amorim Sibaldo Mozart de Melo Alvez Júnior Rosângela Teixeira da Silva Universidade Federal de Alagoas Mestrado em.
Método dos Esforços Deslocamentos em Estruturas
Universidade Federal do Espírito Santo Centro Tecnológico
Universidade Federal do Pará Instituto de Tecnologia Faculdade de Engenharia Civil Programa de Educação Tutorial Engenharia Civil – PETCIVIL CURSO DE CÁLCULO.
Simplificação de Expressões Booleanas e Circuitos Lógicos
UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL
Fenômenos de Transporte I Aula teórica 13
Pontifícia Universidade Católica de Goiás
XADREZ O JOGO DE XADREZ DESENVOLVE A IMAGINAÇÃO, A CONCENTRAÇÃO E CONTRIBUI PARA FORMAR O ESPÍRITO DE INVESTIGAÇÃO, ALÉM DE INSTIGAR A CRIATIVIDADE E DESENVOLVER.
CENTRO UNIVERSITÁRIO Franciscano
Oberdan B. Ferreira Polimorfismo Oberdan B. Ferreira
Rosana Santos OLIVEIRA1; Sandro Sampaio ALBUQUERQUE2
Determinantes Conceito Representação Propriedades
Leandro Costa MIRANDA1; Ronaldo Bruno LEAL2
Universidade Estadual de Santa Cruz – UESC
UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO COMPUTAÇÃO GRÁFICA
Mariana Afonso Turma: M
Introdução à análise Vetorial
DISCIPLINA: PAISAGISMO ALUNO: LUIZ ALBERTO SILVEIRA
Vamos Reciclar JOGAR SAIR.
Podemos notar, a partir da visualização da equação (9) que essa exibe simetria com relação à mudança x -x, o que nos sugere a existência de uma bifurcação.
Pontifícia Universidade Católica de Goiás Departamento de Engenharia Curso de Graduação em Engenharia de Produção ENG 1004 – Linguagem de Programação para.
REALIZAÇÃO: Nojfsdjff Santos OLIVEIRA 1 ; SaLfjfsdhgdjk Silva PAIVA 2 1. Mestrando, Instituto Federal de xxx, Ciência e Tecnologia do XXXX– Campus XXXXXX,
TÍTULO DO ARTIGO AUTOR 1 AUTOR 2 AUTOR 3 AUTOR 4 AUTOR 5 UNIVERSIDADE FEDERAL DE PERNAMBUCO PROGRAMA DE PÓS GRADUAÇÃO EM CIÊNCIAS CONTÁBEIS VIII SEMINÁRIO.
Aprendendo Xadrez online
GUIA DE AULA Prof. DIEISON ALBERTO. Nesta primeira aula irei explicar um pouco que será trabalhado em sala de aula. Nossas aulas serão 3 vezes na semana.
Tipos Compostos Heterogêneos e Tipos Abstratos de Dados
Transcrição da apresentação:

Departamento de Informática 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 Theme created by Sakari Koivunen and Henrik Omma Released under the LGPL license. Co-Autoria: Clebson Oliveira 1

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

Os movimentos do cavalo 8 7   6 m3 m2 5 m4 m1 4 C 3 m5 m8 2 m6 m7 1 3

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

Instâncias de pmov INSTÂNCIA RESULTADO pmov (5, 4) True pmov (8, 1) False  pmov (1, 1)  pmov (1, 8)  False 5

Solução pmov (x, y) = (x + 2 <= 8 ) && (y + 1 <= 8) 6

Testando a solução 8   7 6 5 4 3 2 1 7

Estendendo o problema smov (x, y) pmov (x, y) = tmov (x,y) (x - 1 >= 1 ) && (y + 2 <= 8) qmov (x,y) (x - 2 >= 1 ) && (y + 1 <= 8) qtmov (x,y) (x - 2 >=1  ) && (y - 1 >= 1) sxmov (x,y) (x - 1 >= 1 ) && (y - 2 >= 1) stmov (x,y) (x + 1 <= 8 ) && (y - 2 >= 1) omov (x,y) (x + 2 <= 8 ) && (y - 1 >= 1) 8

Identificando abstrações pmov (x,y) = f (x + 2 ) && f( y + 1) smov (x,y) f (x + 1) && f (y + 2) tmov (x,y) g (x - 1) && f (y + 2) qmov (x,y) g (x - 2) && f (y + 1) qtmov (x,y) g (x - 2) && g (y – 1) sxmov (x,y) g (x - 1) && g (y – 2) stmov (x,y) f (x + 1 ) && g (y – 2) omov (x,y) f (x + 2) && g (y – 1) f w w <= 8 g w w >= 1 9

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

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

Qual o menor índice de movimento possível? 8 m4   m1 C1 7 C3 m5 6 m8 m6 5 m7 4 3 m2 m3 2 1 C4 C2 12

Instâncias de qualmov Instância resultado qualmov 8 1 3 qualmov 8 8 5 13

Solução 14

Codificando a solução qualmov (x, y) = if pmov x y then 1 else if smov x y then 2 else if tmov x y then 3 else if qmov x y then 4 else if qtmov x y then 5 else if sxmov x y then 6 else if stmov x y then 7 else if omov x y then 8 else 0 15

Análise da solução qualmov (x, y) = if not (pert x 1 8) || not (pert y 1 8) then 0 else if pmov x y then 1 else if smov x y then 2 else if tmov x y then 3 else if qmov x y then 4 else if qtmov x y then 5 else if sxmov x y then 6 else if stmov x y then 7 else 8 where pert x a b = a <= b && x >= a && x <= b 16

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? 17

Melhorando a interface pmov x y smov x y tmov x y qmov x y qtmov x y sxmov x y stmov x y omov x y mov (m, x, y) 18

Exemplo de avaliação da função mov True > 19

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 if m == 1 then pmov else if m == 2 then smov else if m == 3 then tmov else if m == 4 then qmov else if m == 5 then qtmov else if m == 6 then sxmov else if m == 7 then stmov else omov where pmov = ... smov = ... tmov = ... ... 20

Análise da solução nova solução <1 1 2 3 4 5 6 7 8 >8 21

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 if m <= 4 then if m<= 2 then if m== 1 then pmov else smov else if m==3 then tmov else qmov else if m<= 6 then if m==5 then qtmov else sxmov else if m == 7 then stmov else omov where pmov = ... smov = ... tmov = ... ... 22

esquema binário (número máximo) Número de comparações número de valores esquema linear (número médio) esquema binário (número máximo) 8 4 100 50 7 1000 500 10 1000000 500000 20 23