Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouEsther Sophia Morais da Costa Alterado mais de 6 anos atrás
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?
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.