Moonlander Projeto Computacional. Função: pilotar nave terreno pilotar nave terreno = (estado1,estado2) Onde estado1 representa o foguete horizontal e.

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

Projeto de Programação PD-I
Programação Funcional
Programação Funcional
Projeto de Programação Departamento de Informática – CT XVII Engenharia de Computação Programação I /1 Maria Claudia Boeres MOONLANDER Hudson Martins.
Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação: uma Abordagem Funcional Programação I Eng. de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi 2010/1.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Haskell The Craft of Functional Programming Simom Thompson Capítulo 14
Input/Output em Haskell
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 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.
Listas encadeadas Prof. Rosana Palazon.
Listas duplamente encadeadas
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
Geoestatística Aplicada à Agricultura de Precisão II
David Menotti Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
BCC101 – Matemática Discreta
SND - Sistemas de Negócios para Dados SND - Sistemas de Negócios para Dados Manual do Usuário Versão Reparo Criando Reparo de Ip.
SND - Sistemas de Negócios para Dados SND - Sistemas de Negócios para Dados Manual do Usuário Versão Reparo Criando Reparo de Porta.
Uma Apresentação do Sistema GAP – Laboratório II
Listas Encadeadas.
exercícios listas encadeadas
Algoritmos de Ordenação 4
Árvores binárias de pesquisa com balanceamento
Listas duplamente encadeadas Estrutura: tDado = integer; { ou real, char, etc.} tPtNo = ^tNo; tNo = record Ant: tPtNo Dado: tDado; Prox: tPtNo; end; var.
Listas: Haskell x Prolog
Aula 14.
Haskell Programação Funcional
©André Santos, Programação Funcional Generalizações André Santos.
Linguagem Funcional 2 Linguagem Funcional 2 - LF2 Estende LF1 com funções de alta ordem Uma função passa a ser um valor O contexto inclui um único componente:
Centro de Informática – UFPE
© André Santos Programação Funcional Listas André Santos.
Mergesort Katia Guimarães.
Estruturas de Dados PROFESSOR DIÓGENES FURLAN. Estruturas de Dados (ED) Programas operam sobre dados Dados são relacionados e possuem estrutura Como representar.
Árvore Binária de Busca
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Listas.
BCC /01 Aula Teórica 09 Funções Material Didático Proposto. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento.
Decomposição da velocidade
Conversão de Tipos Exemplo: x + i, onde x é do tipo real e i é do tipo integer. A especificação da linguagem deve indicar se a linguagem suporta este tipo.
Métodos Formais.
Elsa Carvalho 18 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Estruturas de.
Computação Eletrônica
Prof. Msc Roberta Andrade
Trabalho Computacional PD1
Linguagens Funcionais: Haskell Prática 1 Paradigmas de Linguagens Computacionais Monitor: Guilherme Moura
Generalizações: Map, Fold, Filter, e Composição ©André Santos e Marcelo d’Amorim 2010.
Funções como Valor ©André Santos e Marcelo d’Amorim.
Haskell Programação Funcional Diego Lima Rubem Moreira.
Geometria Computacional Prof. Walter Mascarenhas Segundo semestre de 2004 Aula 5.
ATAL – Prof. Jorge Figueiredo Ordenação AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação.
Haskell Programação Funcional Diego Lima Rubem Moreira.
BCC101 – Matemática Discreta
Programação Funcional 4a. Seção de Slides Tuplas e Definição de Funções Locais em Haskell.
Haskell (é uma função polimorfica) Laboratório Rafael Borges
Listas Duplamente Encadeadas Profs Prog2 e Lab2 Unisinos.
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Ordenação (Sorting) Ordenar é dispor os elementos de um conjunto numa ordem ascendente ou descendente. Problema: Dados n números, arranjá-los em ordem.
Estrutura de Dados Prof. André Cypriano M. Costa
Compreensão de Listas Leonardo Lucena – IFRN, 2011 Adaptação das Transparências de Graham Hutton (
Funções Recursivas Leonardo Lucena – IFRN, 2011 Adaptação das Transparências de Graham Hutton (
Funções de Alta Ordem Leonardo Lucena – IFRN, 2011 Adaptação das Transparências de Graham Hutton (
Definindo Funções Leonardo Lucena – IFRN, 2011 Adaptação das Transparências de Graham Hutton (
Linguagem Funcional 2.
BCC101 – Matemática Discreta
Situações de projeto - Fy.
Transcrição da apresentação:

Moonlander Projeto Computacional

Função: pilotar nave terreno pilotar nave terreno = (estado1,estado2) Onde estado1 representa o foguete horizontal e estado2 representa o foguete horizontal Terreno é uma lista de tuplas de três pontos Nave (xatual,yatual,vx,vy,fx,fy,c)

Uma estratégia para cada terreno A função pilotar se comportara de uma forma diferente para cada terreno,por exemplo,desligara o foguete em um quando atingir uma certa velocidade ou uma certa posição.

Terreno 2 Terreno proposto no trabalho(terreno ideal,ou seja plano).

Usaremos a posição para determina quando o foguete desligara. pilotar nave terreno = (estado1,estado2) where estado1 = if (r1 nave)<(-0.165) then 0 else -1 estado2 = 0

Usaremos a posição para determina quando o foguete desligara. pilotar nave terreno = (estado1,estado2) where estado1 = if (r1 nave)<(-0.1) then 0 else -1 estado2 = 0 Aumento da posição,provoca o desligamento mais cedo do foguete horizontal,logo ele pousa mais perto da posição inicial. Assim sucessivamente.

Conclusão O foguete pousara para esquerda no intervalo de posições (-0.165,0.0).

E para direita? Será necessário muda a posição foguete horizontal. Agora ele pousara para o intervalo (0.0005,0.165) pilotar nave terreno = (estado1,estado2) where estado1 = if (r1 nave)>(0.0005) then 0 else 1 estado2 = 0

Terreno3 (terreno com obstáculo)

pilotar nave terreno = (estado1,estado2) where estado1 = if (r1 nave)>(0.45) then -1 else = 1 estado2 = 0

ordenaAreaPouso nave terreno Usando mergesort para ordena. intercala xs ys = if null xs || null ys then xs++ys else if snd (head xs) >= snd(head ys) then (head ys):(intercala xs (tail ys)) else (head xs):(intercala (tail xs) ys) ms xs = if null (tail xs) then xs else intercala (ms ys) (ms zs) where ys = take x xs zs = drop x xs x = div (length xs) 2

Funções auxiliares Define as inclincoes do terreno inclinacao a b c d = ((b-d)/(a-c)) -- Uma inclinacão para cada lado do triangulo. inclinacao1 (a,b,c) = inclinacao (fst(retira1(a,b,c))) (snd(retira1(a,b,c))) (fst(retira2(a,b,c))) (snd(retira2(a,b,c))) inclinacao2 (a,b,c) = inclinacao (fst(retira1(a,b,c))) (snd(retira1(a,b,c))) (fst(retira3(a,b,c))) (snd(retira3(a,b,c))) inclinacao3 (a,b,c) = inclinacao (fst(retira2(a,b,c))) (snd(retira2(a,b,c))) (fst(retira3(a,b,c))) (snd(retira3(a,b,c))) --Funcoes para manipular tripla retira1 (a,b,c) = a retira2 (a,b,c) = b retira3 (a,b,c) = c retira4 (a,b,c,d,e,f,g) = (a,b) -- retira os dois primeiros termos da nave

pontomedio x y = ((fst x + fst y)/2,(snd x + snd y)/2) -- Fornece a distancia entre dois pontos distancia x y = sqrt((fst x- fst y)^2+ (snd x- snd y)^2)

Função pousoSeguro pousoSeguro xs = [(terrenovalido (retira1 x,retira2 x,retira3 x))|x<- xs,(terrenovalido1 (retira1 x,retira2 x,retira3 x)] Retorna os terrenos onde é possivel o pouso terrenovalido (a,b,c) = if inclinacao1 (a,b,c) =0 && snd a > snd c && snd b > snd c then [(a,b)] else if inclinacao2 (a,b,c) =0 && snd a > snd b && snd c > snd b then [(a,c)] else if inclinacao3 (a,b,c) =0 && snd c > snd a && snd b > snd a then [(b,c)] else [] terrenovalido1 (a,b,c) =(terrenovalido (a,b,c))/=[]

areaPousoedistancia nave terreno Retorna uma dupla contendo o terreno e a distancia da nave até o terreno. areaPousoedistancia nave terreno =[(head y,(distancia (pontomedio (retiradupla1 (head y)) (retiradupla2 (head y))) (retira4 (nave))))|y<-(pousoSeguro (terreno))]

ordenaAreaPouso nave terreno =ms (areaPousoedistancia nave terreno)