A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Departamento de Informática Universidade Federal do Espírito Santo"— Transcrição da apresentação:

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 32 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: Veruska Zamborlini e Clebson Oliveira 1

2 A arte de resolver problemas
Só se aprende a resolver problemas através da experiência; A ajuda do professor não deve vir através da apresentação pura e simples de uma solução; É muito importante não se conformar com uma única solução; 2

3 A arte de resolver problemas
Na busca pela solução de um problema, nossa ferramenta principal é o questionamento; Aprenda desde cedo a buscar um aprimoramento da sua técnica para resolver problemas; Crie uma sistematização. 3

4 A arte de resolver problemas
Polya: processo dividido em quatro etapas; Por onde começar cada etapa? O que posso fazer com os elementos que disponho? Qual a vantagem de proceder da forma escolhida? 4

5 A arte de resolver problemas
Compreensão do problema Planejamento Desenvolvimento: construção da solução; planejamento do teste; execução do teste; codificação da solução; teste com o uso do computador. Avaliação do processo e seus resultados 5

6 A arte de resolver problemas
Deseja-se escrever um programa que permita determinar a menor quantidade de cédulas necessárias para pagar uma dada quantia em Reais. 6

7 A arte de resolver problemas
Compreensão do problema: Cédulas de 1, 5, 10, 50 e 100 Planejamento Desenvolvimento: ncedulas q = (div q 100) (div (mod q 100) 50) (div (mod (mod q 100) 50) 10) (div (mod (mod (mod q 100) 50) 10) 5) (div (mod (mod (mod (mod q 100) 50) 10) 5) 1) 7

8 A arte de resolver problemas
Avaliação do processo e seus resultados: Há uma outra forma de resolver o problema? Pode-se deixar a solução mais clara? Melhore seu código Crie uma base de testes Outra versão: nMinCedulas2 q = n100 + n50 + n10 + n5 + n1   where n100 = div q 100 r100 = mod q 100 n50 = div r100 50 r50 = mod r100 50 n10 = div r50 10 r10 = mod r50 10 n5 = div r10 5 r5 = mod r10 5 n1 = div r5 1 8

9 Princípios para resolução de problemas
Abstração Generalização Instanciação Modularização 9

10 Abstração Escreva a expressão que determina a hipotenusa de um triângulo de lados 4 e 10. Hugs> sqrt((10 * 10) + (4 * 4)) Hugs> E se quisermos chamar várias vezes essa mesma expressão? hipotenusa = sqrt((10 * 10) + (4 * 4)) 10

11 Generalização Porque escrever uma definição de hipotenusa que retorna sempre o mesmo valor, ao invés de generalizá-la? hipotenusa x y = sqrt((x * x) + (y * y)) 11

12 Instanciação Uma vez definida a função genérica para cálculo da hipotenusa, podemos instanciá-la para diferente valores de catetos: Hugs> hipotenusa 10 4 Hugs> hipotenusa 35 18 Hugs> hipotenusa 9 12 15.0 12

13 Modularização 13

14 Modularização a b c d e 14

15 Modularização 15

16 Modularização areaTotal a b c d e = areaRetangulo a b
+ areaRetangulo (hipotenusa a d) e + areaAzul a c d where areaAzul a c d = areaRetangulo c d + areaTrianguloRetangulo d a areaTrianguloRetangulo x y = (x * y)/2 a b c d e areaRetangulo x y = x * y areaAzul a c d = d*c + areaTrianguloRetangulo d a areaTrianguloRetangulo x y = (x * y)/2 16

17 Exercício Descreva o algoritmo para calcular o volume das peças a seguir; Implemente esse algoritmo em Haskell; Crie uma bateria de testes e teste seu programa. 17


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

Apresentações semelhantes


Anúncios Google