Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouPedro Benevides Back Alterado mais de 8 anos atrás
1
Iterações Dilvan Moreira
2
Lembrando... 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.
3
Lembrando... 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.
4
Lembrando... 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
5
Lembrando... 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
6
Objetivos Entender como utilizar Iterações: for e while. Leitura: do livro “Think Python” Cap. 7
7
Reatribuições É permitido fazer mais de uma atribuição à mesma variável. Uma nova atribuição faz uma variável existente referir-se a um novo valor. bruce = 5 print bruce, bruce = 7 print bruce Saída ???
8
Reatribuições Saída: 5 7 Porque no 1º print o valor era 5 e na 2ª vez o valor é 7. O valor 5 no 2º print não existe mais. Diagrama de reatribuição:
9
Reatribuições - Atenção Existe a tendência de lermos o comando a = b como um comando de igualdade. Igualdade é comutativa e atribuição não é. Em matemática: Se a = 7 então 7 = a. Em Python a = 7 # Permitido 7 = a # Não permitido
10
Reatribuições - Atenção Uma expressão de igualdade a = b, na matemática, é sempre verdadeira. Em Python, um comando de atribuição pode tornar duas variáveis iguais, mas elas não tem que permanecer assim. a = 5 b = a # a and b are now equal a = 3 # a and b are no longer equal
11
Reatribuições - Atenção Reatribuição é útil, mas: Você deve usar com cautela. Se o valor das variáveis muda frequentemente, isto pode tornar o código difícil de ser lido e depurado.
12
Reatribuições A instrução funcionará? x = x+1 Significa: “ x é a soma do valor atual de x + 1 ” Não, pois x não foi inicializado. O Python antes de criar a variável e atribuir o novo valor avalia o lado direito. >>> x = x+1 NameError: name 'x' is not defined
13
Reatribuições E agora funcionará? >>> x = 0 >>> x = x+1 Sim, pois x foi inicializado.
14
Loop
15
Loop - (comando while ) Repetir tarefas idênticas ou similares sem cometer erros. Vimos a função contagemRegressiva usando recursividade, que usava recursividade para fazer a repetição. Podemos usar iteração.
16
Loop - (comando while ) def contagemRegressiva(n): while n > 0: #Enquanto (n >0) print n n = n-1 print "Fogo!“ contagemRegressiva(4) Saída???
17
Loop - (comando while ) Fluxo de execução: Teste a condição, resultando 0 ou 1. Se a condição for falsa (0), saia do comando while e continue a execução a partir do próximo comando. Se a condição for verdadeira (1), execute cada um dos comandos dentro do corpo e volte ao passo 1
18
Loop - (comando while ) Saída: 4 3 2 1 Fogo!
19
Loop - (comando while ) No caso de contagemRegressiva, podemos provar que o loop terminará porque sabemos que o valor de n é finito. Cuidado com loops infinitos. n = 1 while n > 0: #valor de n não muda print n-1
20
Loop - (comando for ) Automatizar tarefas repetitivas. Sintaxe: for item in lista_itens: Sintaxe: item : é uma variável que a cada iteração do for será atribuído um novo valor da lista. lista_itens : a lista a ser percorrida em ordem.
21
Loop - (comando for ) Formas de criar uma lista de valores: 1ª String: jkp = ["pedra", "papel", "tesoura"] 2ª Inteiros: seq = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
22
Loop - (comando for ) Formas de criar uma lista de valores: 3ª Comando range : seq = range(1,4) Igual: seq = [1, 2, 3]
23
Loop - (comando for ) Comando range : >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(5,10) [5, 6, 7, 8, 9] >>> range(-5,10) [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
24
Loop - (comando for ) Comando range : >>> range(-6,6,2) [-6, -4, -2, 0, 2, 4] >>> range(100, 20) [] >>> range(100, 20, -10) [100, 90, 80, 70, 60, 50, 40, 30]
25
Loop - (comando for ) É possível percorrer uma lista de itens. jan_ken_pon = ["pedra", "papel", “tesoura"] for item in jan_ken_pon: print item Saída: pedra papel tesoura
26
Loop - (comando for ) É possível percorrer uma lista de itens gerada. lista = range(1,4) for item in lista: for item in range(1,4): print item Saída: 1 2 3
27
Comando break As vezes não se tem uma condição que determine que é o fim do loop. E é só sabido quando esta no meio do corpo do loop. Por exemplo, que o programa espere até o usuário informar uma entrada apropriada:
28
Comando break while True: line = raw_input('> ') if line == 'done': break print line print 'Done!'
29
Comando break A condição do loop é true, e sempre será true. Até que encontre um break que saia do loop. Serve para o for e o while. É possível verificar o estado de parada a qualquer momento.
30
Loop O comando else pode ser usado pelo if, while e for. valores = [2, 4, 5, 2, -1] for i in valores: if i < 0: print "Negativo encontrado: %d" % i break else: print "Nenhum negativo encontrado"
31
Loop Esqueça o uso de else para while e for. Use somente com o if. valores = [2, 4, 5, 2, -1] for i in valores: if i < 0: print "Negativo encontrado: %d" % i break else: print "Nenhum negativo encontrado"
32
Método de Newton Loops são freqüentemente utilizados, exemplo é o calculo da raiz quadrada pelo método de Newton: Você pode começar com qualquer estimativa para o valor de x podendo calcular a melhor alternativa com esta formula
33
Método de Newton Por exemplo, se a é 4 e x é 3: >>> a = 4.0 >>> x = 3.0 >>> y = (x + a/x) / 2 >>> print y 2.16666666667
34
Método de Newton Agora você esta mais próximo da resposta, associamos o valor achado de y para nosso valor de x, então teremos: >>> x = y >>> y = (x + a/x) / 2 >>> print y 2.00641025641
35
Método de Newton Depois de algumas execuções: >>> x = y >>> y = (x + a/x) / 2 >>> print y 2.00001024003 >>> x = y >>> y = (x + a/x) / 2 >>> print y 2.00000000003
36
Método de Newton Em geral não saberemos quantas interações poderemos ter para resolver, mas sabemos qual será a condição para pararmos, y == x while True: print x y = (x + a/x) / 2 if y == x: break x = y
37
Método de Newton Atenção: Para a maioria dos valores esta função funciona bem, porém para comparação de valores em float torna-se perigoso! Ponto Flutuante são valores aproximadamente certos, porém alguns números racionais, como 1/3, e números irracionais, como √2, não podem ser representados com exatidão prevista no tipo float.
38
Método de Newton Ao invés de usar x == y, é mais seguro utilizar uma função abs, que calcula o numero absoluto, ou magnitude da diferença entre eles if abs(y-x) < epsilon: break Onde epsilon é um valor como 0.0000001 que determina quão é perto suficientemente.
39
Exercício: Encapsular este loop anterior em uma função chamada square_root(), que leva como parâmetro, escolhe um valor razoável de x e retorna uma estimativa da raiz quadrada.
40
Algoritmos O método de Newtow é um bom exemplo de algoritmo. Aprender a tabuada, através da memorização de resultados não é um algoritmo.
41
Algoritmos Truques produto dos 9: Você escreve n-1 como o primeiro numero, e 10 – n como segundo digito, Isso é um algoritmo! As técnicas que você aprendeu para somar com transporte, subtração com empréstimo, e divisão longa são todas algoritmos.
42
Algoritmos Eles não requerem nenhuma inteligência para serem executados. É preocupante que humanos gastem tanto tempo na escola aprendendo a executar algoritmos que, literalmente, não requerem inteligência! O processo de projetar algoritmos interessante intelectualmente desafiante parte central da programação
43
Depuração (Debugging) Programas maiores te levam a gastar mais tempo na depuração. É provado que quanto maior o código: Maior as chances de cometer erros! Erros se escondem melhor no código!!
44
Depuração por Bissecção Uma boa pratica é a “depuração por bissecção”: Se código tiver 100 linhas, procure no meio do código: Então imprima variáveis ou qualquer coisa que possa te ajudar a checar. Se estar correto os valores Então o problema esta abaixo do código, Divida novamente a segunda parte, Ou repita isso até encontrá-lo.
45
Perguntas?
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.