IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por...

107
IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente virtual:

Transcript of IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por...

Page 1: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

IEC037Introdução à Programação de

ComputadoresAula 10 – Estruturas de Repetição por

Condição em PythonTurma: Professor: Sala:E-mail:Página:Ambiente virtual:

Page 2: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Resolução de Problemas Algorítmicos

Definir as entradas e as saídas

Fim

Identificar o problema

Início

Converter o algoritmo em declarações da linguagem de

programação

Projetar o algoritmoDecompor

Refinarpasso a passo

Testar o programa resultante

1

2

3

4

5

Page 3: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Conteúdo

Estruturas de Repetição por Condição

Problemas Comuns

Repetições Aninhadas

Page 4: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Conteúdo

Estruturas de Repetição por Condição

Problemas Comuns

Repetições Aninhadas

Page 5: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Estruturas de Programação

Qualquer programa de computador pode ser escrito combinando-se os três tipos básicos de estruturas de programação:

Sequencial Condicional Repetição

Page 6: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Estruturas de Repetição

Permitem executar mais de uma vez um comando ou um bloco de comandos.

O trecho do algoritmo em repetição é também chamado de laço (ou loop).

O número de repetições (ou iterações) deve ser conhecido e ser sempre finito.

Page 7: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Não confunda

Iteração• Repetição de um ato

Interação• Atualização da influência recíproca

de organismos inter-relacionados

Page 8: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Repetição por condição:: Comando while

Permite que um trecho de código seja executado enquanto certa condição for verdadeira.

Quando a condição for falsa, o bloco de comandos interno deixa de ser repetido e continuamos executando o resto do programa.

while <condição> : <comandos_a_repetir>

Comandos a serem repetidos devem estar indentados

Page 9: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Repetição por condição (while):: Funcionamento

1. Testar a condição.2. Se a condição for falsa,

então sair do laço.3. Se a condição for

verdadeira, então executar cada um dos comandos do interior do laço.

4. Após executar o último comando do laço while, voltar ao passo 1.

condiçãoF

V

Comando 1

Comando N

Page 10: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Repetição por condição (while):: Exemplo

A condição do comando while é construída da mesma forma que a condição do if.

No comando while, enquanto a condição for verdadeira, repetimos as linhas do bloco interno.

x = 1while (x <= 5): print(x) x = x + 1

Page 11: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Comando while × if

if• Condição

determina se o trecho de código indentado vai ser executado ou não

while• Condição

determina quantas vezes o trecho de código indentado vai ser executado

Page 12: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Exercício 1

Modifique o script anterior para exibir números de 1 a 100.

x = 1while (x <= 5): print(x) x = x + 1

x = 1while (x <= 100): print(x) x = x + 1

Page 13: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Exercício 2

Modifique o script anterior para exibir números de 50 a 100.

x = 1while (x <= 5): print(x) x = x + 1

x = 50while (x <= 100): print(x) x = x + 1

Page 14: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Exercício 3

Modifique o script anterior para fazer uma contagem regressiva:

10, 9, 8, ..., 1, 0

x = 1while (x <= 5): print(x) x = x + 1

x = 10while (x >= 0): print(x) x = x - 1

Page 15: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Exercício 4

Modifique o script anterior para exibir números pares de 0 a 100.

x = 1while (x <= 5): print(x) x = x + 1

x = 0while (x <= 100): print(x) x = x + 2

Page 16: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Contador de laço

Nos exercícios anteriores, a variável x foi usada para controlar o número de repetições do laço.

Todo contador de laço deve ajustar os seguintes parâmetros:valor inicialvalor finalpasso (ou incremento)

x = 1while (x <= 5): print(x) x = x + 1

123

12

3

Page 17: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Contador de laço:: Parâmetros

valor inicial• Deve ser ajustado fora do laço.

valor final• Ajustado na condição do laço. Uma condição mal

elaborada pode fazer com que o laço seja executado infinitas vezes (loop infinito).

passo (ou incremento)• Determina a taxa de crescimento ou decrescimento do

contador, desde o valor inicial até o valor final.

Page 18: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 1

Uma quantia inicial de R$ 20 mil é aplicada a uma taxa de de juros ao ano.

Qual o valor do saldo após 5 anos de aplicação?

Page 19: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 12 – Definir entradas e saídas

  Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

  Grandeza Unidade de medida Faixa de valores

Entradas

Taxa de juros % 12

Quantia inicial (q) R$ 20 mil

Tempo anos 5

Saídas Saldo R$ [0, +∞[

Page 20: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 13 – Projetar algoritmo

Saldo a cada ano: Variável Contadora:

Novo saldo

Saldo anterior

Rendi-mento

Rendi-mento

Saldo anterior Juros/100

ano

Valor inicial: 1

Valor final:

Incremento:

5

1

Page 21: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 14 – Codificar em Python

# Entrada de dados e definicao de constantesqi = 20000.00juros = 12.0saldo = qi

# Valor inicialt = 1

# Atualizacao de saldowhile (t <= 5): rend = saldo * juros/100 saldo = saldo + rend t = t + 1

# Exibicao de resultadosprint("Saldo: R$", round(saldo, 2))

030

Page 22: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 2

Uma quantia inicial de R$ 10 mil é aplicada a uma taxa de de juros ao ano.

Quantos anos são necessários para que o saldo dobre em relação ao valor inicial?

Page 23: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 22 – Definir entradas e saídas

  Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

  Grandeza Unidade de medida Faixa de valores

Entradas

Taxa de juros % [0; 100]

Quantia inicial (q) R$ 10 mil

Saldo R$ 2 * q

Saídas Tempo anos [0, +∞[

Page 24: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 23 – Projetar algoritmo

Saldo a cada ano: Variável Contadora:

Novo saldo

Saldo anterior

Rendi-mento

Rendi-mento

Saldo anterior Juros/100

ano

Valor inicial: 0

Valor final:

Incremento:

?

1

Page 25: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 24 – Codificar em Python

# Entrada de dados e definicao de constantesqi = 10000.00juros = 5.0saldo = qi

# Valor inicialt = 0

# Atualizacao de saldowhile (saldo < 2 * qi): rend = saldo * juros/100 saldo = saldo + rend t = t + 1

# Exibicao de resultadosprint("Tempo de investimento:", t, "anos")

031

Page 26: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Contador de laço × Variável acumuladora

Contador de laço

• Auxilia a execução do laço de repetição.

• Valor somado a cada iteração é constante.

Variável acumuladora

• Auxiliam o cômputo de grandezas relacionadas ao problema.

• Valor somado a cada iteração é variável.

Page 27: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Rastreamento

É uma simulação de execução de código em que você percorre as instruções, uma linha de cada vez, e acompanha os valores das variáveis .

Quando você rastreia um programa: escreve os nomes das variáveis em uma folha de papel executa mentalmente cada passo do código atualiza as variáveis

Page 28: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Rastreamento:: Exemplo 1

No código abaixo, quais são os valores das variáveis i e total em cada iteração do laço while?

i = 0total = 0while (total < 10): i = i + 1 total = total + i print(i, total)

Page 29: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Rastreamento:: Exemplo 1

i total0 ?

i = 0total = 0while (total < 10): i = i + 1 total = total + i print(i, total)

Page 30: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Rastreamento:: Exemplo 1

i total0 ?0 0

i = 0total = 0while (total < 10): i = i + 1 total = total + i print(i, total)

Page 31: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Rastreamento:: Exemplo 1

i total0 ?0 01 0

i = 0total = 0while (total < 10): i = i + 1 total = total + i print(i, total)

Page 32: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Rastreamento:: Exemplo 1

i total0 ?0 01 01 1

i = 0total = 0while (total < 10): i = i + 1 total = total + i print(i, total)

Page 33: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Rastreamento:: Exemplo 1

i total0 ?0 01 01 12 1

i = 0total = 0while (total < 10): i = i + 1 total = total + i print(i, total)

Page 34: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Rastreamento:: Exemplo 1

i total0 ?0 01 01 12 12 3

i = 0total = 0while (total < 10): i = i + 1 total = total + i print(i, total)

Page 35: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Rastreamento:: Exemplo 1

i total0 ?0 01 01 12 12 33 6

i = 0total = 0while (total < 10): i = i + 1 total = total + i print(i, total)

Page 36: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Rastreamento:: Exemplo 1

i total0 ?0 01 01 12 12 33 64 10

i = 0total = 0while (total < 10): i = i + 1 total = total + i print(i, total)

Page 37: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Rastreamento:: Exemplo 2

Se a condição for mal projetada, o laço poderá ser repetido indefinidamente.

Chamamos essa situação de loop infinito.

i total

1 -12 -23 -34 -4

.....

0 0

Page 38: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Rastreamento:: Exemplo 3

Em outras situações, a condição pode não ser satisfeita na primeira tentativa.

Nesse caso, o laço não será executado.

(Nada mostrado na tela)

Page 39: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Atenção

Embora permitidas pelo Python, NÃO serão aceitas as seguintes práticas: Comando else como

alternativa ao while. Comando break. Comando continue.

Page 40: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Conteúdo

Estruturas de Repetição por Condição

Problemas Comuns

Repetições Aninhadas

Page 41: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problemas Comuns

Soma e média Contar padrões Verificar padrão Soma de séries Frações contínuas Máximo Divisor Comum (MDC)

Page 42: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 3:: Soma e média

Uma professora dá aula para uma turma de N alunos e precisa saber a média de notas, que variam de 0 a 10.

Escreva um script que leia nota por nota e, ao final, exiba a média da turma na tela.

Page 43: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 32 – Definir entradas e saídas

  Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

  Grandeza Unidade de medida Faixa de valores

EntradasNúmero de alunos --- > 0

Notas --- [0, 10]

Saídas Média --- [0, 10]

Page 44: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 33 – Projetar algoritmo

Qual a condição para repetição? Enquanto o contador não atingir N (= número de

alunos da classe)

O que deve ser atualizado a cada repetição? Soma das notas inseridas até o momento Contador do laço

Page 45: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 34 – Codificar em Python

# Pede o numero de alunosnum_alunos = int(input("Digite o no. de alunos: "))

i = 1 # Variavel contadorasoma = 0 # Variavel acumuladora

while (i <= num_alunos): print("Digite a nota do aluno", i, ":") nota = float(input()) # Le nota soma = soma + nota # Acumula nota i = i + 1 # Atualiza contador

print("Media:", round(soma/num_alunos, 2))

032

Page 46: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 4:: Soma e média

Agora, a professora não sabe exatamente a quantidade de notas.

Escreva um script que leia nota por nota, via teclado, até que seja digitado -1, indicando que a inserção terminou. Ao final, a média da turma deve ser exibida na tela.

Page 47: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 42 – Definir entradas e saídas

  Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

  Grandeza Unidade de medida Faixa de valores

Entradas Notas --- [0, 10]

Saídas Média --- [0, 10]

Page 48: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 43 – Projetar algoritmo

Qual a condição para repetição? Enquanto a nota for diferente de -1

O que deve ser atualizado a cada repetição? Soma das notas inseridas até o momento Quantidade de notas inseridas

Page 49: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 44 – Codificar em Python

i = 1 # Variavel contadorasoma = 0 # Variavel acumuladoranota = float(input()) # Le nota

while (nota != -1): i = i + 1 # Atualiza no. de notas soma = soma + nota # Acumula nota print("Digite a nota do aluno", i, ":") nota = float(input()) # Le nota

print("Media:", round(soma/(i - 1), 2))

033

Como o laço conta o -1 como nota, deve-se descontar uma unidade do contador antes do cálculo da média.

Page 50: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 5:: Contar padrões

Um o dado de seis faces é lançado N vezes.

Contar número de ocorrências de cada face.

Page 51: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 52 – Definir entradas e saídas

  Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

  Grandeza Unidade de medida Faixa de valores

Entradas N --- [0, +∞[

Saídas Nº de ocorrências(f1, f2, f3, f4, f5, f6) --- [0, N]

Page 52: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 53 – Projetar algoritmo

1. Ler N (número de lançamentos do dado)2. Zerar os contadores das faces ci3. Lançar o dado4. Se der a face i, atualizar contador ci5. Repetir passos 2 e 3 até N lançamentos do dado,

atualizando o contador6. Imprimir resultados

Page 53: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 54 – Codificar em Python

# Valores iniciaisN = int(input("No. de lancamentos:"))i = 0f1 = 0f2 = 0f3 = 0f4 = 0f5 = 0f6 = 0

# Importando biblioteca de nos. aleatoriosfrom random import *

Page 54: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 54 – Codificar em Python

# Laco de contagem das faces do dadowhile (i < N): face = randint(1,6) if (face == 1): f1 = f1 + 1 elif (face == 2): f2 = f2 + 1 ... else: f6 = f6 + 1 i = i + 1

# Impressao de resultadosprint(f1, f2, f3, f4, f5, f6)

034

Page 55: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 6:: Verificar padrão

Dado um número N, inteiro e positivo, verificar se N é primo, ou seja, se N tem apenas dois divisores: ele mesmo e a unidade.

Dica: Para verificar se um número N é primo, pode-se limitar o teste de divisibilidade até o valor de .

Page 56: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 62 – Definir entradas e saídas

  Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

  Grandeza Unidade de medida Faixa de valores

Entradas N --- [0, +∞[

Saídas Mensagem --- {Primo, não-primo}

Page 57: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 63 – Projetar algoritmo

1. Ler N (número a ser verificado)2. Testar se N é divisível por 2, 3, 4, 5, ..., 3. Caso positivo, terminar laço e imprimir

mensagem

Condições de repetição: Divisor (contador) não atingir , E Número N não ser divisível pelo contador.

Page 58: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 64 – Codificar em Python

# Valores iniciaisN = int(input("Digite um numero:"))i = 2

from math import *

# Repete enquanto nao alcancar raiz de N ou# nao encontrar divisor de Nwhile (i <= floor(sqrt(N)) and N % i != 0): i = i + 1

# Testou todos os numeros ateh raiz de N?if (i > floor(sqrt(N))): print("Eh primo")# Se nao testou todos, entao encontrou divisor (resto 0)else: print("Nao eh primo")

035

Page 59: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 7:: Soma de séries

Escreva um script Python para encontrar o valor da soma dos 10 primeiros termos da seguinte sequência:

1+2+4+8+16+…

Page 60: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 73 – Projetar algoritmo

Determinar, por indução, o termo geral da série:

Variável contadora (i) Valor inicial: Valor final: Incremento:

20 21 22 23 24

091

1+2+4+8+16+… ∑𝑖=0

9

2𝑖

Page 61: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 74 – Codificar em Python

# Valores iniciaissoma = 0 # Variavel acumuladorai = 0 # Variavel contadorafim = 9 # Final da contagem

# Laco de acumulacaowhile (i <= fim): soma = soma + 2**i i = i + 1

# Impressao de resultadosprint("Soma dos termos:", soma)

036

Page 62: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 8:: Soma de séries

Escreva um script Python para encontrar o valor de .

75

2

9

2

6

2

3

2 2532

S

Page 63: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 83 – Projetar algoritmo

Determinar, por indução, o termo geral da série:

Variável contadora (i) Valor inicial: Valor final: Incremento:

75

2

9

2

6

2

3

2 2532

S1

3 1∙ 3 2∙ 3 3∙ 3 25∙

25

1 3

2

i

i

iS

125

1

Page 64: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 84 – Codificar em Python

# Valores iniciaissoma = 0 # Variavel acumuladorai = 1 # Variavel contadorafim = 25 # Final da contagem

# Laco de acumulacaowhile (i <= fim): soma = soma + 2**i/(3 * i) i = i + 1

# Impressao de resultadosprint("Soma dos termos:", soma)

037

Page 65: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 9:: Soma de séries

Calcular o valor de π com os 1000 primeiros termos da seguinte série numérica:

𝑆=1−1

33+1

53−1

73+…

𝜋=3√𝑆⋅ 32

Page 66: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 93 – Projetar algoritmo – versão 1

Determinar o termo geral da série

Variável contadora (i) Valor inicial: Valor final: Incremento:

_1³

333 7

1

5

1

3

11S

sinal alterna

bases ímpares

n

i

i

iS

0312

11

0999

1

Page 67: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 94 – Codificar em Python – versão 1

# Valores iniciaissoma = 0 # Variavel acumuladorai = 0 # Variavel contadorafim = 999 # Final da contagem

# Laco de acumulacaowhile (i <= fim): soma = soma + (-1)**i / (2 * i + 1)**3 i = i + 1

meu_pi = (32 * soma)**(1/3)

# Impressao de resultadosprint("Valor aprox. de pi:", meu_pi)

038

Page 68: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 93 – Projetar algoritmo – versão 2

Determinar o termo geral da série

Variável contadora (j = 2*i) Valor inicial: Valor final: Incremento:

_1³

333 7

1

5

1

3

11S

sinal alterna

bases ímpares

n

i

i

iS

0312

11

01998

2

Page 69: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 94 – Codificar em Python – versão 2

# Valores iniciaissoma = 0 # Variavel acumuladoraj = 0 # Variavel contadorafim = 1998 # Final da contagem

# Laco de acumulacaowhile (j <= fim): soma = soma + (-1)**j / (j + 1)**3 j = j + 2

meu_pi = (32 * soma)**(1/3)

# Impressao de resultadosprint("Valor aprox. de pi:", meu_pi)

039

Page 70: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 10:: Frações contínuas

Determine o valor de com base na expansão em frações contínuas.

√2=1+ 1

2+1

2+ 1

2+ 1⋯

Page 71: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

O que são frações contínuas?

Uma fração contínua é um número irracional que pode ser expresso através da seguinte forma:

onde são coeficientes quaisquer. Note que a expressão acima é infinita. Como um algoritmo deve ser executado em tempo

finito, devemos impor um limite à sequência.

𝑓 =𝑎0+𝑏1

𝑎1+𝑏2

𝑎2+𝑏3

𝑎3+𝑏4…

Page 72: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Frações contínuas

Na expressão acima, é o ponto de partida (semente) no cômputo da fração contínua.

O valor da fração deve ser calculado iterativamente de baixo para cima.

Para um grande número de iterações, o valor da semente torna-se desprezível.

𝑎0+𝑏1

𝑎1+𝑏2

𝑎2+¿ ¿ ⋱ ¿ ¿+𝑏𝑛

𝑎𝑛

Page 73: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 103 – Projetar algoritmo – termo geral

√2=1+ 1

2+1

2+ 1

2+ 1⋯Não se repete

O que se repete?1

2+¿¿

Page 74: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 103 – Projetar algoritmo

1. Iniciar a semente2. Iniciar o contador de laço3. Atualizar o termo geral4. Repetir passo 3 enquanto contador não atinge

um número de repetições considerado grande (1000 seria um bom chute?)

5. Imprimir valor aproximado de

Page 75: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 104 – Codificar em Python

# Sementex = 2

# Contadorcont = 1

# Parte repetitiva da fracao continuawhile (cont < 1000): x = 1 / (2 + x) cont = cont + 1

# Soma parte repetitiva com parcela constanteprint(x + 1)

# Comparacao com valor real de raiz de 2print(2**0.5) 040

Page 76: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 11:: Frações contínuas

Determine o valor da constante de Euler com base na expansão em frações contínuas.

𝑒=2+1

1+1

2+ 2

3+ 3⋯

Page 77: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 113 – Projetar algoritmo – termo geral

Não se repete

O que se repete? 𝑘+𝑘

𝑒=2+1

1+1

2+ 2

3+ 3⋯

Page 78: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 113 – Projetar algoritmo

1. Iniciar a semente2. Iniciar o contador de laço3. Atualizar o termo geral4. Repetir passo 3 enquanto contador não atinge

um número de repetições considerado grande (1000 seria um bom chute?)

5. Imprimir valor aproximado de

Page 79: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 114 – Codificar em Python

# Sementex = 2

# Contadork = 30

# Parte repetitiva da fracao continuawhile (k > 0): x = k + k / x k = k - 1

# Soma parte repetitiva com parcela constanteprint(2 + 1/x)

# Comparacao com valor real da constantefrom math import *print(e)

041

Page 80: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Frações contínuas

Teste os algoritmos anteriores com outras sementes.

Contraste resultados para valores pequenos e valores grandes do contador de laço.

Exercite com outras expansões:

𝜋=3+1

6+9

6+ 25

6+ 49

6+ 81⋯

4𝜋

=1+1

2+9

2+ 25

2+ 49

2+ 81⋯

√12=3+ 1

2+1

6+ 1

2+ 1

6+ 1⋯

Page 81: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 12:: Máximo Divisor Comum (MDC)

Dados dois números inteiros positivos, diferentes de 0, calcular o Máximo Divisor Comum (MDC) deles, pelo método de Euclides.

Page 82: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Método de Euclides

1. Calcular o resto da divisão do maior número pelo menor.

2. Se o resto for zero, o MDC é o 2º número.3. Senão:

1. substituir o 1º número pelo 2º2. substituir o 2º número pelo resto3. calcular um novo resto (passo 1)

Page 83: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Método de Euclides:: Exemplo

Exemplo: 44 e 12

44 12 8 48

3

4

1

0

2

MDC

Page 84: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 123 – Projetar algoritmo

1. Ler n1 e n22. Calcular resto (n1 % n2)3. Enquanto resto não for zero, aplicar método de

Euclides:1. n1 ← n22. n2 ← resto (anterior)3. resto ← n1 % n2

4. Imprimir n2 (valor do mdc)

Page 85: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 122 – Definir entradas e saídas

  Grandeza Unidade de medida Faixa de valores

Entradas

Saídas

  Grandeza Unidade de medida Faixa de valores

Entradasn1 --- [1, +∞[

n2 --- [1, +∞[, n2 <= n1

Saídas MDC --- [1, +∞[

Page 86: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 124 – Codificar em Python

# Entrada de variaveisn1 = int(input())n2 = int(input())

# Valor inicial do restoresto = n1 % n2

# Metodo de Euclideswhile (resto != 0): n1 = n2 n2 = resto resto = n1 % n2

# Impressao do MDCprint(n2)

042

Page 87: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Conteúdo

Estruturas de Repetição por Condição

Problemas Comuns

Repetições Aninhadas

Page 88: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Repetições Aninhadas

Um comando while pode ser utilizado dentro de outro comando while.

Cuidados devem ser tomados para não aumentar o tempo de execução do algoritmo.

Variáveis de controle de cada laço while devem ser diferentes.

Page 89: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 13

Crie uma listagem dos valores das 52 cartas do baralho comum.

1 2

3 4

1 – 11 – 2

...1 – 111 – 121 – 13

2 – 12 – 2

...4 – 114 – 124 – 13

Page 90: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 133 – Projetar algoritmo

contadoresn Controla

os naipes 1 – 4

c Controla as cartas 1 – 13

Page 91: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 134 – Codificar em Python

# Valor inicial do contador do 1o. laco (naipes)n = 1

# Controla contagem dos naipeswhile (n <= 4): # Valor inicial do contador do 2o. laco c = 1 # Controla contagem das cartas while (c <= 13): print(n,"-",c) c = c + 1

n = n + 1

043

Page 92: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 14

Crie uma listagem dos valores das 28 peças do jogo de dominó:

0 – 00 – 10 – 20 – 30 – 40 – 5

0 – 61 – 11 – 2...5 – 66 – 6

Page 93: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 143 – Projetar algoritmo

Um laço controla a 1ª metade da peça (m1)

Um laço controla a 2ª metade da peça (m2)

Page 94: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 143 – Projetar algoritmo

Deve-se ter atenção com a condição de parada do segundo laço, pois a ordem dos números não influencia no tipo de peça:

Page 95: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 144 – Codificar em Python

# Valor inicial do contador do 1o. lacom1 = 0

# Controla 1a. metade do dominohwhile (m1 <= 6): # Valor inicial do contador do 2o. laco m2 = 0 # Controla 2a. metade do dominoh while (m2 <= m1): print(m1,"-",m2) m2 = m2 + 1 m1 = m1 + 1

044

Contador do 2º laço não é mais constante. Passa a ser o

contador do 1º laço.

Page 96: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 15:: Arte ASCII

Escreva um script para imprimir vários caracteres asterisco para formar o padrão ao lado. Três linhas de 04

asteriscos.

Page 97: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 153 – Projetar algoritmo

1. Iniciar contador de linhas2. Repetir impressão de asteriscos dispostos em

uma mesma linha3. Repetir passo 2 para cada linha

Page 98: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 154 – Codificar em Python

# Contador do 1o. lacoi = 1

while (i <= 3): # Contador do 2o. laco j = 1 while (j <= 4): print("*", end="") j = j + 1 print() i = i + 1

045

Por padrão, o comando print() do Python pula de linha ao terminar. Se

você não deseja isso, use o parâmetro end para indicar o que vocês deseja

que apareça ao fim da impressão.

Page 99: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 16:: Arte ASCII

Escreva um script para imprimir vários caracteres asterisco para formar o padrão ao lado: Quatro linhas de 3

asteriscos.

Page 100: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 163 – Projetar algoritmo

1. Iniciar contador de linhas2. Repetir impressão de asteriscos dispostos em

uma mesma linha3. Repetir passo 2 para cada linha

Page 101: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 164 – Codificar em Python

# Contador do 1o. lacoi = 1

while (i <= 4): # Contador do 2o. laco j = 1 while (j <= 3): print("*", end="") j = j + 1 print() i = i + 1

046

Page 102: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 17:: Arte ASCII

Escreva um script para imprimir vários caracteres asterisco para formar o padrão ao lado.

Page 103: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 173 – Projetar algoritmo

1. Iniciar contador de linhas i2. Para cada linha, imprimir i asteriscos3. Repetir passo 1 até atingir o número de iterações

Page 104: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Problema 174 – Codificar em Python

# Contador do 1o. lacoi = 1fim = 4

while (i <= fim): j = 1 while (j <= i): print("*", end="") j = j + 1 print() i = i + 1

047

Contador do 2º laço não é mais constante. Passa a ser o

contador do 1º laço.

Page 105: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Arte ASCII

Como imprimir os seguintes padrões?

*******************************************************

******************************

************** ******* ***** *** ** *** ***** ******* **************

Page 106: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Referências bibliográficas

Menezes, Nilo Ney Coutinho (2010). Introdução à Programação com Python. Editora Novatec.

HETLAND, Magnus Lie (2008). Beginning Python: From Novice to Professional. Springer eBooks, 2ª edição. Disponível em: http://dx.doi.org/10.1007/978-1-4302-0634-7.

Horstmann, Cay & Necaise, Rance D. (2013). Python for Everyone. John Wiley & Sons.

Page 107: IEC037 Introdução à Programação de Computadores Aula 10 – Estruturas de Repetição por Condição em Python Turma: Professor: Sala: E-mail: Página: Ambiente.

Dúvidas?