Iterações Dilvan Moreira. Lembrando... Desenvolvimento de programas  Desenvolvimento incremental:  Evitar depuração de muito código.  A técnica consiste.

Slides:



Advertisements
Apresentações semelhantes
Programação em Java Prof. Maurício Braga
Advertisements

Estruturas de Controle
Estruturas de Repetição
Engenharia de Software Prof ª. Isabel Sofia de Brito Prof ª. Maria Fernanda Pedro.
Rodrigo de Toledo (original: Claudio Esperança)
Instrutor: Nilo Menezes
Apresentação da linguagem Python
O Portal do Estudante de Computação
Linguagem de Programação I Parte III
Seminário 1: Revisão de C
Estruturas de Dados Módulo 3 – Controle de Fluxo
Aula prática 2 Operadores e Expressões Comandos de Decisão Comentários
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
Introdução a Programação
Profa. Maria Augusta Constante Puget
Shell Script Parte 2.
Linguagem de Programação 11 Estruturas de Decisão e Repetição. Prof. Luiz José Hoffmann Filho
Busca Sequencial Int pseq(int x, int n, int v[]){ for(i=0; i
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Funções Financeiras Parte 2. TAXA INTERNA DE RETORNO (TIR)  A Taxa Interna de Retorno (TIR) é outra medida de investimento, porém, diferentemente do.
Aula 5 Bioestatística. Estatísticas para uma variável.
MCEF 2012/2013. Introdução ao “Mathematica” Utilização do Mathematica Funcionamento do programa Regras da Linguagem Exemplos Exercícios!!
José Antônio da cunha IFRN Administração de Banco de Dados.
Funções Prof. Márcio.
Linguagem C Escola Olímpio Professor Marcelo Josué Telles Linguagem de Programação I1 de 36.
4 Aula – Introdução ao PHP Márcio Ferreira da Silva.
Web Application Rafael Muniz e Marcus Vinícius Plugins MAVEN 04/04/2009 Revisão 12/04/2009.
RHAYANE BORGES SILVA 4º ANO ADMINISTRAÇÃO Mensuração e Escala Parte II.
Cálculo Numérico Computacional Prof. Linder Cândido da Silva.
Aula 4 Comandos de Repeti çã o Prof. Filipe Mutz..
Lazy Evaluation (Avaliação Preguiçosa) Leonardo Lucena – IFRN, 2011 Adaptação das Transparências de Graham Hutton (
Práticas Colaborativa de Programação Peterson Rodrigues Outubro de 2015.
C suporta algumas Constantes de caráteres especiais de barra invertida (backslash) que são usados em funções de saída. Constantes de caráteres especiais.
IFRN Técnico em Informática para Internet Desenvolvimento de Algoritmos Prof. Gilbert Azevedo.
INE5408 Estruturas de Dados Introdução a Árvores - Conceitos - Árvores Binárias - Métodos e algoritmos de percurso - Métodos e algoritmos de balanceamento.
Programação para Internet Aula 06 Linguagem Java (Orientação a Objetos – Atributos e Métodos)
Sabe quem está chegando? A família Real de Marte, uma simpática família extra-terrestre. E sabe o que eles acharam de mais intrigante em suas primeiras.
Minicurso Java Básico Cristian Backy | Cristian Costa | Ruddá Beltrão.
Fundamentos da Metrologia Científica e Industrial TERMOS FUNDAMENTAIS E GERAIS DE METROLOGIA (VIM). Prof. M.Sc Jefferson L. C. Salles.
Variáveis, expressões e comandos Dilvan Moreira. Lembrando …  Instalação normal (para utilizar no PC com Windows) 
Clique para editar o título Linguagem C Para programadores Python PMR
Prof. Tertuliano Estrutura Condicional em C++
Fundamentos de Programação 1 Aula N. 02 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Laços de Repetição em C” 1.
1 Estruturas Condicionais Aula – Tópico 3 Algoritmos e Estruturas de Dados I (DCC/003)
Introdução a Programação Aula 05 Jackson Eduardo
Adriano A. Ribeiro. Escolha...Caso Em algumas situações é necessário termos várias soluções ligadas a respostas diferentes. Temos então o comando de alternativa.
SISTEMAS DE INFORMAÇÃO GEOGRÁFICA APLICADOS Deteção remota GeoprocessamentoautomáticoWebSIG Modelos digitais de terreno de terreno Análise de imagem Análise.
Algoritmos e Estruturas de Dados I – Estrutura Condicional Profa. Mercedes Gonzales Márquez.
AULA Mais Herança Curso: Informática (Subseqüente) Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
INE5408 Estruturas de Dados Estruturas de Dados básicas utilizando Vetores - Listas.
Lógica de programação Estruturas de seleção Estruturas de repetição Sub-Rotinas 1.
Revisão de Conceitos Thiago Medeiros Barros. Algoritmos Qualquer problema de computação pode ser resolvido executando uma série de ações em uma ordem.
Fundamentos de Programação 1 Slides 7 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Funções” 1.
1 1 Slide Programação Dinâmica Prof. Dr. Alexandre Pereira Salgado Junior.
Algoritmos Grupos de Slides No 4. Prof. SIMÃO Estrutura de decisão de múltipla escolha “escolha-caso” switch case Feito por Prof. Jean Marcelo SIMÃO e.
IF E ITERAÇÃO WHILE Dilvan Moreira (baseado no livro Big Java e T. Munzner)
Algoritmos Grupos de Slides No 6. Prof. SIMÃO Estrutura de Repetição “faça até” do until Feito por Prof. Jean Marcelo SIMÃO e revisado por Prof. Luis Alberto.
Fundamentos de Programação 1 Linguagem C Slides 03 – ‘Vetores’ Prof. SIMÃO Jean Marcelo SIMÃO Estrutura de Dados Homogêneas “Vetores” 1.
PROGRAMANDO SEM POO EM JAVA Dilvan Moreira (baseado no livro Big Java)
VARIÁVEIS EM JAVA Dilvan Moreira (baseado no livro Big Java)
Recursividade, Entrada pelo teclado e Funções com retorno Dilvan Moreira.
Calculo de Hoare Daniel Soares, Gabriel Alabarse Hernandez(150756) e Vanius Zapalowski(150843)
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
Algoritmos Grupos de Slides No 3. Prof. SIMÃO Estrutura de decisão composta "se senão" if else end Feito por Prof. Jean Marcelo SIMÃO e revisado por Prof.
Recursividade, Entrada pelo teclado e Funções com retorno
Estruturas de Repetição
Desenvolvimento de Programas, Composição
IP – Repetições Prof. Eduardo Falcão.
Python: Comandos Básicos
Transcrição da apresentação:

Iterações Dilvan Moreira

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.

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.

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

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

Objetivos  Entender como utilizar Iterações: for e while.  Leitura:  do livro “Think Python” Cap. 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 ???

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:

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

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

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.

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

Reatribuições  E agora funcionará? >>> x = 0 >>> x = x+1  Sim, pois x foi inicializado.

Loop

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.

Loop - (comando while ) def contagemRegressiva(n): while n > 0: #Enquanto (n >0) print n n = n-1 print "Fogo!“ contagemRegressiva(4)  Saída???

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

Loop - (comando while )  Saída: Fogo!

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

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.

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]

Loop - (comando for )  Formas de criar uma lista de valores:  3ª Comando range : seq = range(1,4)  Igual: seq = [1, 2, 3]

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]

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]

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

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

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:

Comando break while True: line = raw_input('> ') if line == 'done': break print line print 'Done!'

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.

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"

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"

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

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

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

Método de Newton  Depois de algumas execuções: >>> x = y >>> y = (x + a/x) / 2 >>> print y >>> x = y >>> y = (x + a/x) / 2 >>> print y

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

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.

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 que determina quão é perto suficientemente.

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.

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.

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.

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

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!!

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.

Perguntas?