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

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

Desenvolvimento de Programas, Composição

Apresentações semelhantes


Apresentação em tema: "Desenvolvimento de Programas, Composição"— Transcrição da apresentação:

1 Desenvolvimento de Programas, Composição
Dilvan Moreira

2 Lembrando ... A instrução return import math def imprimeLogaritmo(x):
if x <= 0: print "Somente números positivos." return resultado = math.log(x) print "O log de x é ", resultado

3 Lembrando ... Recursividade def contagemRegressiva(n): if n == 0:
print "Fogo!" else: print n contagemRegressiva(n-1) O que essa função faz se for passado 3 como parâmetro?

4 Lembrando ... Valores de retorno
return significa: "Retorne imediatamente desta função e use a expressão em seguida como um valor de retorno” Poderíamos ter reescrito a função anterior desta forma: def area(radius): return math.pi * radius**2 Porém com o uso da variável temp, fica mais fácil a depuração.

5 Lembrando ... Múltiplos comandos de return def absolute_value(x):
if x < 0: return -x if x > 0: return x print absolute_value(0) Qual será a saída?

6 Objetivos Entender como funciona a estrutura de repetição for, como Programas são Desenvolvidos, Funções booleanas e o uso de Funções Recursivas. Leitura: do livro “Think Python” Cap. 6.1 ao Cap. 6.9

7 Comando For A estrutura for realiza repetições (loops) , sua sintaxe é resumida facilitando o trabalho do programador. A sua estrutura básica é a seguinte: for alvo in sequencia: #comandos

8 Comando For O for sempre trabalha em conjunto com a instrução in:
for comeco in range(20,30): if comeco%2 != 0: print comeco # O laço inicia em 20 e vai até 300 Saída: 21 23 25 27 29

9 Desenvolvimento de programas
Desenvolvimento incremental: Evitar depuração de muito código. A técnica consiste em teste de somente uma pequena quantidade código. Exemplo: Distância entre dois pontos dados pelas coordenadas (x1,y1) e (x2,y2). Teorema de Pitágoras: Vamos fazer um desenvolvimento incremental.

10 Desenvolvimento incremental
Quais são as entradas (parâmetros)? Qual é a saída (valor de retorno)? Esboço do programa: def distance(x1, y1, x2, y2): return 0.0

11 Desenvolvimento incremental
Obviamente , não computa as distâncias Mas ela está sintaticamente correta, e vai rodar, o que seginifica que podemos testá-la ela antes de torná-la mais complicada. Teste >>> distance(1, 2, 4, 6) 0.0 Neste ponto, confirmamos que a função está sintaticamente correta.

12 Desenvolvimento incremental
Depois de cada adicionada, testamos a função nova Se ocorrer um erro em qualquer ponto, sabemos aonde ele deve estar: nas linhas adicionadas mais recentemente O próximo passo é encontar as diferenças x2 – x1 e y2 – y1, e guardaremos em váriaveis temporárias dx e dy.

13 Desenvolvimento incremental
def distance(x1, y1, x2, y2): dx = x2 - x1 dy = y2 - y1 print 'dx is', dx print 'dy is', dy return 0.0 Rodamos agora e se as respostas estiverem certas, podemos prosseguir no desenvolvimento.

14 Desenvolvimento incremental
Em seguida, computaremos a soma dos quadrados de dx e dy, Tiramos os comandos de print anteriores Rodamos, e caso funcione, prosseguimos def distance(x1, y1, x2, y2): dx = x2 - x1 dy = y2 - y1 dsquared = dx**2 + dy**2 print 'dsquared is: ', dsquared return 0.0

15 Desenvolvimento incremental
O ultimo passo ficará assim: def distance(x1, y1, x2, y2): dx = x2 - x1 dy = y2 - y1 dsquared = dx**2 + dy**2 result = math.sqrt(dsquared) return result Teste, e se estiver certo, o programa esta pronto

16 Desenvolvimento incremental
Recomendações para iniciantes : Comece com um programa que funciona e faça pequenas mudanças incrementais. Em qualquer ponto do processo, se houver um erro, você saberá exatamente onde ele está. Use variáveis temporárias para manter valores intermediários Podendo exibi-los e checá-los.

17 Desenvolvimento incremental
Recomendações para iniciantes : Uma vez que o programa funcione, você pode querer remover algum código muleta, ou andaime (scaffolding) ou consolidar múltiplos comandos dentro de expressões compostas, mas somente se isto não tornar o programa difícil de ler.

18 Composição É possível chamar uma função dentro de outra
As funções distance e area já foram definidas E outras funções podem chama-lás def circle_area(xc, yc, xp, yp): radius = distance(xc, yc, xp, yp) result = area(radius) return result

19 Composição Mas após a depuração, e programa estando funcionando corretamente, pode ser feita a composição. def circle_area(xc, yc, xp, yp): return area(distance(xc, yc, xp, yp)) O resultado da função distance serve como parâmetros para a função area

20 Funções booleanas Funções podem retornar valores booleanos
E servem muitas vezes para ocultar teste complicados. def is_divisible(x, y): if x % y == 0: return True else: return False

21 Funções booleanas Podemos deixar a função mais concisa se tirarmos vantagem do fato de a condição da instrução if ser ela mesma uma expressão booleana. Podemos retorná-la diretamente, evitando totalmente o if. def is_divisible(x, y): return x % y == 0

22 Funções booleanas Usando a função: >>> is_divisible(6, 4)
False >>> is_divisible(6, 3) True

23 Mais sobre recursão: Fatorial
Se você procurasse pela definição da função matemática fatorial, você encontraria algo assim: 0! = 1 n! = n.(n-1)! Esta definição diz que o fatorial de 0 é 1, e que o fatorial de qualquer outro valor, n, é n multiplicado pelo fatorial de n-1.

24 Mais sobre recursão: Fatorial
Codificando em python: def factorial(n): if n == 0: return 1 else: recurse = factorial(n-1) result = n * recurse return result

25 Mais sobre recursão: Fatorial
O diagrama de pilha para esta seqüência de chamadas de função:

26 Mais um exemplo: Fibonacci
Você começa com 0 e 1, e então produz o próximo número de Fibonacci somando os dois anteriores para formar o próximo. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610,

27 Mais um exemplo: Fibonacci
Esta sequência foi descrita primeiramente por Leonardo de Pisa, ou Fibonacci (Dc. 1200). Os números descrevem o número de fêmeas em uma população de coelhos

28 Mais um exemplo: Fibonacci
Depois de n meses se for suposto que: no primeiro mês se inicia apenas um casal, fêmeas amadurecem sexualmente (e reproduzem-se) apenas após o segundo mês de vida, não há problemas genéticos no cruzamento consangüíneo, todos os meses, cada fêmea fértil dá a luz a um novo casal, e os coelhos nunca morrem.

29 Mais um exemplo: Fibonacci
Seguindo a definição teremos: fibonacci(0) = 0 fibonacci(1) = 1 fibonacci(n) = fibonacci(n−1)+fibonacci(n−2);

30 Mais um exemplo: Fibonacci
A função escrita em python: def fibonacci (n): if n == 0: return 0 elif n == 1: return 1 else: return fibonacci(n-1) + fibonacci(n-2)

31 Perguntas?


Carregar ppt "Desenvolvimento de Programas, Composição"

Apresentações semelhantes


Anúncios Google