Baixe o app para aproveitar ainda mais
Prévia do material em texto
Python 3.x Estrutura de Repetição while Introdução à Ciência da Computação Prof. Edison Ishikawa D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Sumário • Atribuição • Atualizando variáveis • Iterações • Revisitando o laço for • Laço while • Rastreando um programa • Contadores • Tabelas • break • continue • Laços aninhados • Algoritmos D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Iteração • Computadores são frequentemente usados para realizar automaticamente tarefas repetitivas • Repetir tarefas idênticas ou similares sem cometer erros é algo que computadores fazem bem e as pessoas não • Execuções repetidas de um conjunto de comandos é chamado de iteração D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Atribuição • Em Python, um comando de atribuição pode fazer duas variáveis iguais, mas como atribuições futuras podem mudar uma ou outra, elas não precisam se manter iguais • Em algumas linguagens de programação os símbolos ← ou := são usados como operador atribuição para evitar confusão D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Exemplo a = 5 b = a #após a execução desta linha, a e b são iguais a = 3 #após a execução desta linha, a e b não são iguais Atualizando variáveis • Quando um comando de atribuição é executado, o lado direito da expressão ( o que está à direita do = ) é calculado primeiro • Este cálculo produz um valor • E este valor é atribuído à variável que está do lado esquerdo da expressão D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Exemplo n = 5 n = 3 * n + 1 Inicializando variáveis • Antes de atualizar o valor de uma variável, você tem que inicializá-la D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Exemplo errado >>> y = y + 1 Traceback (most recent call last): File "<pyshell#25>", line 1, in <module> y = y + 1 NameError: name 'y' is not defined Exemplo certo >>> y = 0 >>> y = y + 1 >>>> Outra forma de fazer a mesma coisa >>> y = 0 >>> y += 1 >>>> O c o m a n d o w h ile F lu x o g ra m a D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o A condição do loop é verdadeira? Execute todos os comandos que estão no corpo do loop Verifique a condição do loop e atribua à sua variável SIM NÃO Inicialize a variável com a condição do loop O comando while D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Sintaxe while <CONDIÇÃO> : <BLOCO DE COMANDOS O comando while • Usado quando não se sabe a priori a quantidade de repetições a ser executada • Exemplo: • Ler uma série de números inteiros positivos e calcular a sua soma. Esta série termine quando se digita um número inteiro negativo. D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Exemplo print(“Programa que soma inteiros positivos. Para terminar o programa, digite um número negativo.”) x = input(“Digite um número inteiro:”) soma = 0 while x > 0: soma = soma + x x = input(“Digite um número inteiro:”) print (“ A soma de todos os números ditados é “, soma) Exercício 1 • Faça um programa que leia vários nomes, digitados um por linha e escreva a quantidade de nomes digitados. O programa termina quando se digita “fim”. Para ser a prova de usuários, levar em conta que ele também pode digitar “Fim” ou “FIM”). D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Solução com erro! Qual o erro! nome = input("Digite um nome:") contador = 0 while nome != "fim“ or nome != “FIM” or nome != “Fim”: contador = contador + 1 nome = input("Digite um nome:") print("Total de nomes digitados = ", contador) Exercício 1 • Existe uma forma mais elegante de testar o fim? D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Solução correta nome = input("Digite um nome:") contador = 0 while nome != "fim“ and nome != “FIM” and nome != “Fim”: contador = contador + 1 nome = input("Digite um nome:") print("Total de nomes digitados = ", contador) Exercício 1 D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Solução mais elegante nome = input("Digite um nome:") contador = 0 while nome.lower() != "fim": contador = contador + 1 nome = input("Digite um nome:") print("Total de nomes digitados = ", contador) Exercício 2 • Faça um programa que leia as notas dos alunos e calcule a média da turma. O programa termina quando se digita uma nota negativa. D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Exercício 3 • Faça um programa que leia 20 números e calcule a média deste números. • Qual a diferença deste exercício em relação ao exercício 2? D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Rastreando (tracing) um programa • O programa abaixo contém um erro! Descubra este erro fazendo um tracing manual. • Rastrear o programa pode ser tedioso e é muito sujeito a erros, mas é uma habilidade essencial de um programador D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Fatorial de um número n n = int(input(“Digite um número: “)) x = 1 fat = 1 while x < n: fat = fat*x x = x + 1 print(“ O fatorial de “, n, “ é “, fat) Tabelas • Exercício • Faça um programa que gere números de 1 a 30 e imprima eles em uma tabela com 7 colunas • Detalhe: o primeiro número gerado vai estar na primeira linha, mas pode estar na coluna n, que é o dia da semana em que cai o primeiro dia do mês. • Entrada: n, que vai de 0 a 6, sendo 0 domingo e assim por diante • Saída: Tabela com a primeira coluna correspondendo a domingo. Deixar em branco as posições que antecedem o primeiro dia na primeira linha. O mesmo para a última linha, após o último dia do mês. • Dica: use o caracter de controle de impressão “\t” para tabular sua saída. D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o O comando break • Serve para sair imediatamente do corpo de execução de um loop • Suponha o seguinte problema • Ler uma lista de números inteiros até achar o primeiro número ímpar, imprimir este número e parar em seguida D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã oExemplo x = int(input(“Digite um número inteiro:”) while True: if x % 2 != 0: # é um número ímpar break x = int(input(“Digite um número inteiro:”) print(x) O comando continue • Comando que faz o programa pular o processamento do resto do bloco de execução do loop. Mas o loop continua, iniciando na próxima iteração • Problema • Ler uma lista de números inteiros positivos imprimindo a quantidades de números ímpares da lista. O programa para quando lê um número negativo D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Exemplo n = int(input(“Digite um número: ”)) cont = 0 while n > 0: if n % 2 == 0: # se for par, lê o próximo e pula n = int(input(“Digite um número: ”)) continue n = int(input(“Digite um número: ”)) cont = cont + 1 print(cont) Algoritmos • Definição • Algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, que recebe um conjunto de valores como entrada, processa estes valores e produz um conjunto de valores como saída, em um tempo finito. • Uma característica dos algoritmos é que eles não precisam de inteligência para serem executados! • São processos mecânicos, em que cada passo é executado um em seguida ao outro de acordo com um conjunto de regras simples • Entender que problemas difíceis podem ser resolvidos por processos algorítmicos, passo a passo (tendo um computador para executar automaticamente), é um dos grandes avanços que trouxe enormes benefícios para a humanidade D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Algoritmos • Vamos fazer um algoritmo um pouco mais difícil • Calcular a integral de uma função f(x) contínua qualquer em um intervalo [a, b] • Para entender, vamos supor f(x) = x2 D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Algoritmos • O que é a integral de f(x) = x2 no intervalo [a, b]? D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o Algoritmos • O que é a integral de f(x) = x2 no intervalo [a, b]? • É a área sob a curva D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o a=0 b=2 f(0) =0 f(2) =4 f(x) x Algoritmos • Como a gente calcula a área sob a curva? • Aproximando por retângulos • Mas não é impreciso? Veja o espaço em branco entre a curva e o retângulo. D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o a=0 b=2 x f(0) =0 f(2) =4 f(x) Algoritmos • Como a gente aumenta a precisão? • Diminuindo o tamanho da base do retângulo == aumentar o número de retângulos D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o a=0 b=2 x f(0) =0 f(2) =4 f(x) Para casa • D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o a b Bibliografia • How to Think Like a Computer Scientist: Learning with Python 3 – Documentation - Release 3rd Edition • Peter Wentworth, Jeffrey Elkner,Allen B. Downey and Chris Meyers • Apr 26, 2017 D e p a rt a m e n to d e C iê n c ia d a C o m p u ta ç ã o
Compartilhar