Prévia do material em texto
Estruturas de decisão e de repetição
em Python
As estruturas de decisão e repetição em Python. As estruturas de decisão simples e compostas. As
estruturas de repetição com variável de controle e com teste.
Prof.Humberto Henriques de Arruda
1. Itens iniciais
Propósito
Esclarecer as estruturas de decisão e de repetição e as estruturas disponíveis em Python.
Preparação
Antes de iniciar o conteúdo deste tema, instale em seu computador a versão Python 3.7.1. Busque um tutorial
sobre Instalação do Interpretador Python 3 e a IDE PyCharm.
Objetivos
Identificar as estruturas de decisão em Python
Reconhecer a estrutura de repetição com variável de controle em Python
Identificar a estrutura de repetição com teste em Python
Reconhecer as instruções auxiliares de controle de iteração
Introdução
Os primeiros programas que são desenvolvidos em qualquer linguagem normalmente têm a mesma sequência
de instruções a serem executadas. Frequentemente, começamos com um programa que só exibe na tela uma
mensagem, depois recebemos dados do usuário e os processamos de alguma forma, para depois exibir algum
resultado.
Porém, os programas com essas características (mesma sequência de execução sempre, independentemente
dos dados inseridos) são somente os primeiros. O mais comum é que um programa tenha trechos que são
executados e outros trechos que não são, dependendo dos dados que o usuário inserir. Além desse
comportamento condicional, também é comum que os programas tenham algumas partes do código-fonte
que são executadas repetidas vezes, de acordo com algum critério.
As linguagens de programação em geral – e Python
especificamente – oferecem as estruturas de decisão e
as de repetição para facilitar a programação.
•
•
•
•
1. As estruturas de decisão em Python
Introdução
Tomamos decisões o tempo todo: ao acordar, escolhemos se vamos levantar ou não. Em seguida, escolhemos
se vamos tomar banho ou escovar os dentes. Poderíamos listar uma infinidade de situações em que decidimos
por A ou B ao longo de um dia. No mundo da computação, os exemplos são outros.
Ao programar, você poderá utilizar as estruturas de
decisão para selecionar partes do código-fonte que
serão executadas, de acordo com alguma condição.
Menus de escolha e decisões de encerrar o programa ou continuar estão presentes em quase todas as
aplicações profissionais. Pense, por exemplo, nos últimos apps que você instalou no seu celular. Algum deles é
executado sem um menu inicial?
Neste módulo, vamos apresentar as estruturas de decisão simples e compostas em Python.
Conceitos
As estruturas de decisão permitem que partes do código-fonte do programa sejam executadas e outras
partes não sejam, dependendo de critérios definidos pelo desenvolvedor. Decidir qual ação executar,
condicionada a algum critério objetivo, é algo que fazemos o tempo todo.
Exemplo
Decidimos, por exemplo, se o banho será quente ou frio. Provavelmente, essa decisão estará
condicionada à temperatura ambiente no momento do banho.
O exemplo do banho e temperatura externa tem apenas uma condição, mas já ilustra como processos
decisivos podem ser feitos. Essas estruturas, no entanto, costumam ser mais complexas. Em Python, elas
podem ser de caminho único ou de caminho duplo. Vamos analisar cada uma delas a partir de agora.
A estrutura de decisão if
Considere a situação em que você quer informar aos pais se eles devem vacinar seu filho contra a gripe. A
vacinação ocorre para crianças com menos de 5 anos completos. Uma forma possível de orientar esses pais é:
Observe alguns pontos importantes:
O primeiro passo é perguntar a idade da criança.
A orientação sobre vacinar a criança só será exibida caso a idade seja menor que 5 anos.
A mensagem final de despedida será exibida em todos os casos.
Em Python, a estrutura if permite que haja um bloco de instruções a serem executadas caso uma condição
seja verdadeira. Por isso, ela é chamada de estrutura de caminho único. Em geral, o formato da estrutura if é:
python
if :
Bloco de código que será executado caso condição seja True
Instrução fora do if
Fazendo uma versão do fluxo do programa em Python, antes de programar efetivamente, poderíamos
visualizar esta solução:
Veja uma implementação possível para este nosso exemplo:
1.
2.
3.
Na linha 1, estamos perguntando a idade da criança;
Nas linhas 2 e 3, está a estrutura if, como descrita acima;
O critério para executar a linha 3 é que a condição (da linha 2) seja verdadeira (True), ou seja, que a
idade seja menor que 5;
Na linha 4, está a mensagem de despedida, que será exibida em todos os casos.
Veja agora dois resultados diferentes de execução desse programa:
Nesse caso, só havia uma instrução a ser executada caso a condição fosse verdadeira. Mas nem sempre será
assim.
Atenção
É preciso diferenciar o que está dentro do if do conteúdo do que está fora da condicional. Isso é feito
pela indentação.
De acordo com a PEP8 [1], é necessário utilizar 4 (quatro) espaços para deslocar para a direita todas as
instruções que estiverem dentro do if. Dessa maneira, todas as linhas que estiverem com 4 espaços abaixo do
if farão parte do bloco que só será executado caso a condição seja verdadeira. Veja um exemplo na figura a
seguir:
No exemplo acima, as linhas 3 e 4 estão dentro do if e só serão executadas caso a condição (idadefigura a seguir:
Observe que o bloco 1 (linhas 3 e 4) somente será executado caso a primeira condição seja verdadeira;
Caso a primeira condição seja falsa, ocorrerá o segundo teste;
Assim, o bloco 2 (linhas 7 e 8) somente será executado caso a segunda condição seja verdadeira;
Caso a segunda condição seja falsa, o bloco 3 será executado (linhas 10 e 11);
Já a linha 12 será executada em todos os casos, porque está fora de todas as estruturas if-else.
•
•
•
•
•
•
•
•
•
•
•
Atenção
Um detalhe extremamente importante (e que pode evitar dores de cabeça desnecessárias) é o uso
correto do operador de comparação (==). Lembre que o símbolo de igual (=) é o do operador de
atribuição, com uso totalmente diferente do operador de comparação. Ao usar as estruturas de decisão,
muito provavelmente você estará fazendo testes (comparando valores, deverá usar o ==). Ou seja, tome
cuidado para não usar os operadores de forma inadequada.
A estrutura de decisão elif
Voltando ao exemplo anterior, em que tínhamos três caminhos diferentes, observe que as linhas 5 e 6 têm, em
sequência, else (da primeira condição) e if (testando a segunda condição).
Dica
Nesses casos, uma forma de reduzir o código é utilizar a estrutura elif. Ela presta exatamente a mesma
função, mas permite um código mais limpo e menor.
Em geral, o formato da estrutura elif é:
python
if :
Bloco de código que será executado caso condição seja True
elif :
Bloco de código que será executado caso condição 1 seja False e condição 2 seja True
else:
Bloco de código que será executado caso condição 1 seja False e condição 2 seja False
Instrução fora do if
Veja uma implementação possível com a estrutura elif:
Perceba que a indentação precisa ser ajustada, uma vez que o último else é relativo ao elif. Por isso, eles
precisam estar alinhados.
Condições compostas
Vale ressaltar que as condições dos exemplos deste módulo foram simples, ou seja, apenas um valor booleano
(True ou False). Porém, isso não é regra. É possível utilizar condições compostas, ou seja, operações com
mais de um valor booleano (utilizando o and ou o or, por exemplo).
Resumo
No vídeo a seguir o professor apresentará um resumo dos principais conceitos abordados até aqui. Assista:
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Verificando o aprendizado
Questão 1
Considere o seguinte trecho de um programa escrito em Python:
python
lado1 = eval(input('Entre com o maior lado do triângulo: '))
lado2 = eval(input('Entre com o segundo lado do triângulo: '))
lado3 = eval(input('Entre com o terceiro lado do triângulo: '))
if (lado1**2 == lado2**2 + lado3**2): #condição1
print('O triângulo é retângulo')
elif (lado1**2formato:
python
for in :
Bloco que será repetido para todos os itens da sequência
Instrução fora do for
Vamos começar com um exemplo simples: imprimir todos os elementos de uma sequência criada com a
chamada range().
Veja uma possível implementação deste exemplo:
A linha 1 mostra a criação do laço, com a variável item percorrendo a sequência (0, 1, 2), criada pela chamada
range(2, 9, 3).
A linha 2 indica a instrução que será executada para cada repetição desse laço.
O laço for executa a instrução da linha 2 três vezes, uma para cada elemento da sequência (2, 5, 8).
sequência
2 5 8
Iteração 1 do laço item = 2
Iteração 2 do laço item = 5
Iteração 3 do laço item = 8
Veja o resultado na figura a seguir:
Vamos ver um exemplo do laço for com uma string.
Suponha que você quer soletrar o nome informado pelo usuário. Uma possível implementação está na figura a
seguir:
String
String é uma sequência de caracteres individuais.
A linha 1 faz com que a palavra inserida pelo usuário seja armazenada na variável nome.
A linha 2 mostra a criação do laço, com a variável letra percorrendo a sequência de caracteres armazenada na
variável nome.
A linha 3 indica a instrução que será executada para cada repetição desse laço.
Atenção
O laço for executa a instrução da linha 3 tantas vezes quantos forem os elementos da sequência que
está na variável nome.
Supondo que o usuário entre com o nome Laura, as iterações ocorrem de acordo com a tabela a seguir:
nome L a u r a
Iteração 1 do laço letra = L
Iteração 2 do laço letra = a
Iteração 3 do laço letra = u
Iteração 4 do laço letra = r
Iteração 5 do laço letra = a
Veja o resultado na figura a seguir:
O exemplo da paridade de inteiros – uso do for com if-else
Vamos agora trabalhar com um exemplo interessante. Suponhamos que seja preciso imprimir todos os
números inteiros de 1 a 10, informando a paridade de cada um deles.
Para isso, temos que usar a estrutura de repetição (para que os números variem de 1 a 10) e a estrutura de
decisão (para testar se o número é par ou ímpar). Ou seja, podemos usar o laço for em conjunto com a
estrutura if (ou if-else).
Uma forma de resolver esse problema pode ser vista assim:
Uma possível implementação desse exemplo em Python está na figura a seguir:
Veja que a linha 1 cria o laço for, com a variável num percorrendo a sequência criada pela chamada
range(1, 11) – ou seja, os inteiros de 1 a 10;
•
Em cada iteração do laço for, a variável num assume o valor de um inteiro dessa sequência. Na linha 2,
testamos se o resto da divisão de num por 2 é zero (lembrando do operador de comparação ==);
Se o resto for zero, significa que a variável num é par (naquela iteração). Então, é impressa a
mensagem que ela é par (linha 3);
Caso contrário (linha 4) – ou seja, se o resto da divisão de num por 2 não for zero – a variável num é
ímpar (naquela iteração). Então, é impressa a mensagem que ela é ímpar (linha 5).
Veja o resultado na figura a seguir:
•
•
•
Operações aritméticas com inteiros – uso do for com
acumulador e contador
Vamos começar trabalhando em outro exemplo do uso
do for, mas apresentando um artifício bastante
conhecido por desenvolvedores mais experientes: o
acumulador.
Suponhamos que seja preciso imprimir a soma de todos os números inteiros positivos, desde 1 até um limite
informado pelo usuário. Ou seja, se o usuário inserir o número 5, o programa deverá responder 15
(1+2+3+4+5).
Se o usuário inserir 7, o programa deverá responder 28 (1+2+3+4+5+6+7).
Comentário
Para resolver esse problema, vamos utilizar uma variável chamada soma. Ela começa com valor zero e
será utilizada para armazenar o valor da soma parcial a cada termo que for adicionado.
Uma forma de resolver esse problema pode ser vista assim:
Uma possível implementação desse exemplo em Python está na figura a seguir:
Veja que a linha 1 inicializa a variável soma com o valor zero;•
A linha 2 representa o pedido de entrada do valor por parte do usuário e armazena esse valor na
variável limite;
A linha 3 cria o laço for, com a variável num percorrendo a sequência criada pela chamada range(1,
limite + 1) – ou seja, os inteiros de 1 a limite. Em cada iteração do laço for, a variável num assume o
valor de um inteiro dessa sequência;
Na linha 4, a variável soma armazena o valor que ela tinha anteriormente somado ao valor atual da
variável num;
A linha 5 representa a impressão da mensagem final, com a soma dos inteiros positivos desde 1 até
limite.
Veja o resultado de uma execução deste programa na figura a seguir:
Podemos entender as repetições do laço for de acordo com a tabela a seguir:
soma
(no início da iteração)
num soma
(no final da iteração)
Iteração 1 do for 0 1 1
Iteração 2 do for 1 2 3
Iteração 3 do for 3 3 6
Iteração 4 do for 6 4 10
Iteração 5 do for 10 5 15
Logicamente, o número de iterações vai depender da variável limite, cujo valor foi informado pelo
usuário. Assim, a variável soma vai acumulando, a cada iteração, o valor anterior somado ao valor
corrente da variável num.
Incrementando um pouco mais nosso problema atual, considere que também precisamos imprimir, ao final da
execução do programa, a média aritmética dos inteiros positivos de 1 até o limite informado pelo usuário.
Atenção
Para isso, vamos utilizar outro artifício amplamente conhecido pelos desenvolvedores experientes: o
contador.
•
•
•
•
Uma variável utilizada como contador serve, essencialmente, para contar. Porém, ele será utilizado neste
problema como uma ferramenta ainda mais útil. Vale lembrar que a média aritmética de um conjunto de
valores é calculada por:
Assim, o contador de iterações será, além de contador, o denominador dessa expressão da média aritmética.
Uma forma de resolver este problema pode ser vista assim:
Uma possível implementação desse exemplo em Python está na figura a seguir:
Veja o resultado de uma execução deste programa na figura a seguir:
Podemos entender as repetições do laço for de acordo com a tabela a seguir:
soma
(no início da
iteração)
num
soma
(no final da
iteração)
contador
(no final da
iteração)
Iteração 1 do
for 0 1 1 1
Iteração 2 do
for 1 2 3 2
Iteração 3 do
for 3 3 6 3
Iteração 4 do
for 6 4 10 4
Iteração 5 do
for 10 5 15 5
Atenção
Vale observar que, especificamente neste exemplo, a variável num poderia ter sido usada como
denominador do cálculo da média, já que ela tem os mesmos valores que a variável contador em todas
as iterações. Porém, isso só se aplica a este caso.
Além disso, existe outra possibilidade de solução, utilizando como denominador o tamanho da sequência
criada pela chamada range(1, limite+1). Para obter esse tamanho, utilizamos o método len(sequência), que
retorna o tamanho de sequência. Ou seja, o denominador poderia ter sido len(range(1, limite+1)). Porém, o
objetivo deste exemplo foi, entre outras funções, apresentar o uso do contador.
Uso do laço for com qualquer sequência
Até agora, estudamos neste módulo o uso do laço for com iterações sobre strings e sobre sequências
numéricas. Mas Python permite ainda mais do que isso! Podemos utilizar o laço for com iterações sobre
qualquer sequência, não somente as numéricas e as strings.
Observe o exemplo a seguir:
Veja o resultado da execução na próxima figura:
Olhando as repetições com mais atenção, podemos criar a tabela abaixo:
0 1 2 3 4
nomes ‘Laura’ ‘Lis’ ‘Guilherme’ ‘Enzo’ ‘Arthur’
Iteração 1 do laço nome = ‘Laura’
Iteração 2 do laço nome = ‘Lis’
Iteração 3 do laço nome = ‘Guilherme’
Iteração 4 do laço nome = ‘Enzo’
Iteração 5 do laço nome = ‘Arthur’
Resumo
No vídeo a seguir o professor apresentará um resumo dos principais conceitos abordados neste módulo.
Assista:
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Verificando o aprendizado
Questão 1
Considere o seguinte trecho de um programa escrito em Python:python
a = 1
b = 2
for i in range(3):
a = a + b
b = a + b
print(b)
Assinale a opção que apresenta corretamente o que será impresso na tela.
A
5 13 34
B
3 6 12
C
3 6 9
D
5 8 13
A alternativa A está correta.
O laço for vai ser repetido 3 vezes, já que range(3) retorna 3 valores. Na primeira iteração, a variável a
recebe o valor 3 e a variável b recebe o valor 5 (3 + 2). Assim, será impresso o valor 5 da variável b. Na
segunda iteração, a variável a recebe o valor 8 (3 + 5) e a variável b recebe o valor 13 (8 + 5). Assim, será
impresso o valor 13 da variável b. Na terceira iteração, a variável a recebe o valor 21 (8 + 13) e a variável b
recebe o valor 34 (21 + 13). Assim, será impresso o valor 34 da variável b.
Questão 2
Considere o seguinte trecho de um programa escrito em Python:
plain-text
s = 0
for i in range(5):
s += 3*i
print(s)
Assinale a opção que apresenta corretamente o que será impresso na tela.
A
0 3 9 18 30
B
0 3 6 9 12
C
30
D
45
A alternativa C está correta.
O laço for vai ser repetido 5 vezes, já que range(5) retorna à sequência (0, 1, 2, 3, 4). Vale observar que a
instrução print(s) está fora do laço for, o que leva a ser executada apenas uma vez, quando o laço se
encerrar. Isso elimina as opções (A) e (B). A variável s começa com valor zero e é acrescida, a cada
iteração, do valor 3*i, sendo que i pertence à sequência (0, 1, 2, 3, 4). Ou seja, s recebe os acréscimos: 0 +
3 + 6 + 9 + 12. Assim, ela termina o laço com o valor 30, que será impresso pela instrução print(s).
3. A estrutura de repetição com teste em Python
Introdução
Na introdução do módulo anterior, abordamos a lista de compras e a nossa lista mental para sair de casa:
carteira, celular e chave. Já vimos que a repetição de um bloco de instruções é algo extremamente útil quando
programamos.
Porém, nem sempre o laço for será o mais indicado para controlar essas repetições. Você consegue imaginar o
motivo?
Vamos ver agora como tratar o caso em que precisamos de um número indeterminado de
repetições.
Conceitos
Nos módulos anteriores deste tema, você foi apresentado às estruturas de decisão (if e if-else) e de repetição
com variável de controle (for). Agora, você será apresentado a outra estrutura de repetição, mas que depende
de uma condição. É como se estivéssemos mesclando a repetição do for com o teste condicional do if. O
nome desta estrutura é while.
A estrutura while
A estrutura while permite que um bloco de instruções
seja repetido enquanto uma condição seja verdadeira.
O laço while tem, em geral, o seguinte formato:
python
while :
Bloco que será repetido enquanto a condição for verdadeira
Instrução fora do while
Podemos entender o laço while observando a figura a seguir:
Como exemplo inicial do uso do laço while, vamos analisar um programa em que usuário precisa digitar a
palavra “sair” para que o laço while seja encerrado.
Uma forma de resolver o problema pode ser vista assim:
Uma possível implementação desse exemplo em Python está na figura a seguir:
A linha 1 representa a solicitação ao usuário para que ele insira uma palavra, que será armazenada na
variável palavra;
A linha 2 cria o laço while, que depende da condição ;
A linha 3 será repetida enquanto a condição for verdadeira, ou seja, enquanto o valor da variável
palavra for diferente de ‘sair’. Quando o valor da variável palavra for igual a ‘sair’, a condição do laço
while será falsa e o laço será encerrado;
A linha 4 representa a impressão da mensagem fora do laço while.
•
•
•
•
Veja uma execução desse programa na figura a seguir:
Observe agora outra execução do mesmo programa:
Perceba que ao digitar ‘sair’ logo na primeira solicitação, a linha 3 do nosso programa não é executada
nenhuma vez. Ou seja, o programa nem chega a entrar no laço while.
Em outras linguagens como C ou Java, existe outra estrutura muito semelhante ao while, chamada do-while. A
diferença básica entre elas é o momento em que a condição é testada.
Atenção
No laço while, a condição é testada antes da iteração. No laço do-while, a condição é testada após a
iteração. Em outras palavras, o laço while testa e executa. O laço do-while executa e testa. Infelizmente,
a estrutura do-while NÃO existe em Python. Isso não chega a ser um grande problema, porque podemos
adaptar nosso programa e controlar as repetições com o laço while, como foi feito no exemplo anterior.
Operações numéricas com o laço while
Grande parte das aplicações do laço while são focadas em operações numéricas.
Operação 1
Vamos começar com uma operação financeira.
Considere que queremos saber depois de quantos anos uma aplicação, com juros anuais informados pelo
usuário, terá atingido 50% de rendimento sobre o valor aplicado inicialmente. Ou seja, se a aplicação inicial foi
de R$1.000,00, quantos anos serão necessários para atingir o valor de R$1.500,00?
Para resolver esse problema, vamos utilizar uma
variável chamada fator.
Ela começa com valor 1 e será utilizada para armazenar o valor pelo qual a aplicação será multiplicada para
obter o montante acumulado. Veja que nosso objetivo é atingir 50% de rentabilidade. Ou seja, precisamos
verificar quando fator atinge o valor 1,5 (50% acima do valor inicial).
Veja que a aplicação de R$1.000,00 precisa atingir R$1.500,00, ou seja, precisa ser multiplicada por 1,5.
Atenção
Além da variável fator, utilizaremos a variável contador para sabermos quantos anos passam até
atingirmos nosso objetivo.
Uma forma de resolver o problema pode ser vista assim:
Uma possível implementação dessa solução em Python está na figura a seguir:
Veja uma execução desse programa:
Podemos entender as repetições do laço while de acordo com a tabela a seguir:
fator
(no início da iteração)
fator
(no final da iteração)
contador
(no final da iteração)
Iteração 1 do while 1 1 + 0,08*1 = 1,08 1
Iteração 2 do while 1,08 1,08 + 0,08*1,08 = 1,17 2
Iteração 3 do while 1,17 1,17 + 0,08*1,17 = 1,26 3
Iteração 4 do while 1,26 1,26 + 0,08*1,26 = 1,36 4
Iteração 5 do while 1,36 1,36 + 0,08*1,36 = 1,47 5
Iteração 6 do while 1,47 1,47 + 0,08*1,47 = 1,59 6
Veja que a rentabilidade desejada de 50% é atingida durante o sexto ano. Como estamos
trabalhando com anos completos, é necessário então completar o sexto ano, levando à resposta
final de 6 anos.
Operação 2
Vamos analisar uma progressão geométrica que tem termo inicial 1 e razão 0,5.
Relembrando
A progressão geométrica é aquela em que cada termo é calculado a partir do termo anterior, multiplicado
pela razão.
Ou seja, a progressão geométrica que vamos analisar é:
Observe que a progressão geométrica acima é infinita, não tem limite de termos. Caso nós quiséssemos saber
a soma dos termos, como poderíamos agir?
Como calcular a soma de uma sequência que não tem fim? Veja que os termos vão ficando cada vez menores,
mas nunca chegam de fato a zero.
É necessário, então, determinar quando paramos de somar. Suponha que queremos ter precisão de 0,01. Ou
seja, quando a soma for atualizada apenas na 3ª casa decimal, podemos parar de somar.
Então, quantos termos serão necessários até chegarmos a essa situação?
Dica
Para resolver o problema, vamos utilizar uma variável chamada termo. Utilizaremos também a variável
soma para manter atualizado o valor da soma dos termos. Além dessas, utilizaremos a variável contador
para obtermos o número de termos necessários até que paremos de somar.
As três variáveis – termo, soma e contador – começam com valor 1, já contabilizando o primeiro termo da
progressão.
Uma forma de resolver esse problema pode ser vista assim:
Uma possível implementação dessa solução em Python está na figura a seguir:
A linha 1 inicializa as variáveis soma, termo e contador;
A linha 2 cria o laço while, que depende da condição;
As linhas 3, 4 e 5 serão repetidas enquanto a condição for verdadeira, ou seja, o valor da variável termo
for maior ou igual a 0,01. Quando o valor da variável termo for menor que 0,01, a condição do laço while
será falsa e o laço será encerrado;
As linhas 6 e 7 representam a impressão das mensagens fora do laço while.
Veja uma execução desse programa na figura a seguir:
•
•
•
•
O laço while infinito
Laços infinitos são úteis quando queremos executar um
bloco de instruções indefinidamente.
O laço while infinito tem o seguinte formato:
python
while True:
Bloco que será repetido indefinidamente
Como exemplo, suponha que você deseja criar uma aplicação que permanece por meses ou anos sendo
executada, registrando a temperatura ou a umidade de um ambiente. Logicamente, estamos supondo que
você tenha essa informação disponível pela leitura de algum sensor.
Atenção
É necessário tomar cuidado e ter certeza que seu uso é realmente necessário, para evitar problemas de
consumo excessivo de memória.
Resumo
No vídeo a seguir o professor apresentará um resumo dos principais conceitos abordados neste módulo.
Assista:
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Verificando o aprendizado
Questão 1
Considere o seguinte trecho de um programa escrito em Python:
plain-text
s = 0
a = 1
while sQuestão 2
Considere o seguinte trecho de um programa escrito em Python:
plain-text
a = 0
for i in range(30):
if a%2 == 0:
a += 1
continue
else:
if a%5 == 0:
break
else:
a += 3
print(a)
Assinale a opção que apresenta corretamente o que será impresso na tela.
A
30
B
10
C
6
D
5
A alternativa D está correta.
Na primeira iteração do for, a condição do primeiro if é verdadeira, já que a variável a tem o valor zero (e o
resto da divisão por 2 é zero).
Assim, ela é acrescida de uma unidade (passa a valer 1) e a iteração é interrompida pela instrução continue.
Na segunda iteração do for, a condição do primeiro if é falsa, já que a variável a tem o valor 1 (e o resto da
divisão por 2 é diferente de zero).
Assim, a condição do segundo if é testada e é falsa, já que a divisão de 1 por 5 deixa resto diferente de 0.
Com isso, a variável a é acrescida de 3 unidades (passa a valer 4).
Na terceira iteração do for, a condição do primeiro if é verdadeira, já que a variável a tem o valor 4 (e o
resto da divisão por 2 é zero).
Assim, ela é acrescida de uma unidade (passa a valer 5) e a iteração é interrompida pela instrução continue.
Na quarta iteração do for, a condição do primeiro if é falsa, já que a variável a tem o valor 5 (e o resto da
divisão por 2 é diferente de zero).
Assim, a condição do segundo if é testada e é verdadeira, já que a divisão de 5 por 5 deixa resto de 0.
Com isso, a instrução break é executada e o laço for é encerrado. Ao imprimir o valor da variável a, ela tem
o valor 5.
5. Conclusão
Considerações finais
Neste tema, você aprendeu os conceitos de estruturas de decisão em Python, além das estruturas de
repetição com uma variável de controle e baseado em uma condição. O uso correto destes conceitos é
essencial na sua jornada de formação como programador.
Recomendamos que fique atento aos detalhes e procure sempre programar de forma organizada, utilizando os
comentários e nomes de variáveis que ajudem a entender seu significado. Isto vai evitar erros e tornar sua
experiência mais agradável.
Podcast
Podcast
Para encerrar, ouça sobre as Estruturas de decisão e de repetição em Python.
Conteúdo interativo
Acesse a versão digital para ouvir o áudio.
Explore+
Para saber mais sobre os assuntos tratados neste tema, acesse na internet:
O site Python Brasil.
Referências
PERKOVIC, L. Introdução à computação usando Python: um foco no desenvolvimento de aplicações. Rio de
Janeiro: LTC, 2016.
Python. INDEX OF PYTHON ENHANCEMENT PROPOSALS (PEPs). Consultado em meio eletrônico em: 02 de
jun. de 2020.
•
Estruturas de decisão e de repetição em Python
1. Itens iniciais
Propósito
Preparação
Objetivos
Introdução
As linguagens de programação em geral – e Python especificamente – oferecem as estruturas de decisão e as de repetição para facilitar a programação.
1. As estruturas de decisão em Python
Introdução
Ao programar, você poderá utilizar as estruturas de decisão para selecionar partes do código-fonte que serão executadas, de acordo com alguma condição.
Conceitos
Exemplo
A estrutura de decisão if
Atenção
A estrutura de decisão if-else
A estrutura de decisão if-else permite que haja um bloco de instruções a serem executadas caso a condição seja verdadeira e outro bloco para o caso em que a condição é falsa. Por isso, chamamos a estrutura de caminho duplo.
Assim, é impossível que os dois blocos se ativem. Somente um deles será executado, independentemente da idade informada pelo usuário.
Estruturas de decisão aninhadas
Mas o que significa aninhar estruturas?
Significa que podemos colocar uma estrutura dentro de outra, com as condições em cascata.
Atenção
A estrutura de decisão elif
Dica
Condições compostas
Resumo
Conteúdo interativo
Verificando o aprendizado
Questão 1
Considere o seguinte trecho de um programa escrito em Python:
Suponha que o usuário, quando solicitado, tenha inserido os valores (nesta ordem): 6, 4 e 3. Qual será o resultado?
Questão 2
Considere a seguinte tabela, que relaciona a temperatura em °C a mensagens que devem ser exibidas aos usuários.
Suponha que a tabela tenha sido traduzida para um programa em Python. Assinale a opção que apresenta o trecho correto de código-fonte para representar a tabela.
2. A estrutura de repetição com variável de controle em Python
Introdução
Conceitos
As listas do tipo range()
Exemplo
Exemplo
A estrutura for
Atenção
O exemplo da paridade de inteiros – uso do for com if-else
Operações aritméticas com inteiros – uso do for com acumulador e contador
Vamos começar trabalhando em outro exemplo do uso do for, mas apresentando um artifício bastante conhecido por desenvolvedores mais experientes: o acumulador.
Comentário
Atenção
Atenção
Uso do laço for com qualquer sequência
Resumo
Conteúdo interativo
Verificando o aprendizado
Questão 1
Considere o seguinte trecho de um programa escrito em Python:
Assinale a opção que apresenta corretamente o que será impresso na tela.
Questão 2
Considere o seguinte trecho de um programa escrito em Python:
Assinale a opção que apresenta corretamente o que será impresso na tela.
3. A estrutura de repetição com teste em Python
Introdução
Conceitos
A estrutura while
A estrutura while permite que um bloco de instruções seja repetido enquanto uma condição seja verdadeira.
Atenção
Operações numéricas com o laço while
Operação 1
Para resolver esse problema, vamos utilizar uma variável chamada fator.
Atenção
Operação 2
Relembrando
Dica
O laço while infinito
Laços infinitos são úteis quando queremos executar um bloco de instruções indefinidamente.
Atenção
Resumo
Conteúdo interativo
Verificando o aprendizado
Questão 1
Considere o seguinte trecho de um programa escrito em Python:
Assinale a opção que apresenta corretamente o que será impresso na tela.
Questão 2
Considere o seguinte trecho de um programa escrito em Python:
Suponha que o usuário tenha inserido, SE e QUANDO solicitado, nesta ordem:
Assinale a opção que apresenta corretamente o que será impresso na tela.
4. As instruções auxiliares de controle de iteração
Introdução
Conceitos
A instrução break
A instrução continue
A instrução pass
A instrução pass atua sobre a estrutura if, permitindo que ela seja escrita sem outras instruções a serem executadas caso a condição seja verdadeira.
Resumo
Conteúdo interativo
Verificando o aprendizado
Questão 1
Considere o seguinte trecho de um programa escrito em Python:
Assinale a opção que apresenta corretamente o que será impresso na tela.
Questão 2
Considere o seguinte trecho de um programa escrito em Python:
Assinale a opção que apresenta corretamente o que será impresso na tela.
5. Conclusão
Considerações finais
Podcast
Podcast
Conteúdo interativo
Explore+
Referências