Buscar

Comando while, variáveis contadoras e acumuladoras

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

PENSAMENTO 
COMPUTACIONAL
Fernando Esquírio Torres
Comando while, 
variáveis contadoras e 
acumuladoras (utilizando 
a linguagem Python)
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Descrever o comando while e as variáveis contadoras e acumuladoras.
 � Realizar testes de mesa em problemas que utilizem o comando while 
e as variáveis contadoras e acumuladoras.
 � Resolver problemas computacionais utilizando o comando while 
e as variáveis contadoras e acumuladoras.
Introdução
Neste capítulo, você vai estudar a estrutura de repetição while e enten-
der como funcionam as variáveis contadoras e acumuladoras, necessárias 
para controlar os laços de repetição e acumular valores de variáveis, 
respectivamente. Em seguida, você vai aprender como verificar o fluxo 
de repetição do laço while por meio de um teste de mesa. Por fim, você 
vai compreender como utilizar esse laço de repetição para solucionar 
problemas computacionais.
Laços de repetição while
Imagine que você é um programador e está desenvolvendo um programa em 
Python para ler as notas de três alunos. A solução proposta por você é imple-
mentar três linhas de código com o comando input() para fazer a leitura 
dessas notas, como demonstra a Figura 1.
Figura 1. Programa para ler as notas de três alunos.
O código implementado na Figura 1 resolve satisfatoriamente seu problema 
para a leitura de três notas. Porém, se o problema possuir uma escala maior, 
como ler as notas de 50 alunos, não será uma boa prática de programação 
escrever 50 linhas de código com o comando input() para a leitura de todas 
essas notas. Uma solução mais profissional e recomendada nesse caso é a 
utilização de uma estrutura que possa repetir a leitura da nota quantas vezes 
for necessário. Essa estrutura, amplamente utilizada em programação para nos 
auxiliar nesse tipo de problema, é chamada de laço ou estrutura de repetição. 
Ela permite a repetição de um bloco de código enquanto uma determinada 
condição for verdadeira, evitando a escrita recorrente de trechos de código.
Os laços (loops) de repetição são utilizados para repetir blocos de código 
específicos por um certo número de vezes ou até que uma condição seja atin-
gida, conforme leciona Banin (2018). A primeira estrutura de repetição que 
você vai estudar é o while. Porém, antes de aprender sobre esse assunto, é 
necessário que você compreenda o que são blocos de instrução, tema importante 
a ser abordado neste momento.
Blocos de instrução
Segundo Ramalho (2015), os blocos de instrução são um conjunto de comandos 
pertencentes a uma função, uma estrutura condicional, um laço de repetição, 
etc. Na maioria da linguagens de programação, os blocos são delimitados por 
abertura ( { ) e fechamento ( } ) de chaves ({ }). Porém, na linguagem Python, 
os blocos de instrução são delimitados pela indentação do código, ou seja, 
o recuo aplicado ao código fonte em relação à sua margem, a fim de tornar o 
código mais legível e facilitar o reconhecimento de sua estrutura (Figura 2).
Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)2
Figura 2. Delimitação do bloco de instruções (a) na linguagem C e (b) em Python.
(a)
(b)
Na Figura 2a, que mostra um código implementado na linguagem C, é 
possível observar que o conjunto de instrução (bloco) que pertence ao laço 
de repetição while está delimitado pelas chaves { } e que o comando 
printf (utilizado na linguagem C para imprimir dados na tela), que está 
fora da área delimitada pelas chaves, não pertence a esse bloco. Na Figura 2b, 
em Python, é possível ver que o que define o conjunto de instrução do 
laço while é a indentação do código à direta. Os comandos de impressão 
(print('Mensagem impressa')) e de incremento (i+=1) apresentam 
um espaço (semelhante a um parágrafo), que identifica o bloco de instruções 
pertencente ao laço while. O segundo print, alinhado ao comando while, 
já está fora do bloco de instruções.
3Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
Comando while 
Segundo Barry (2018), o laço de repetição while (“enquanto”, em inglês) 
permite repetir um conjunto de instruções enquanto a condição testada for 
verdadeira. Essa condição, que é sempre testada no início do laço, contém 
uma expressão booleana que pode assumir o valor de verdadeira ou falsa. O 
fluxograma da Figura 3 mostra o funcionamento do comando while, em 
que a condição é testada antes de iniciar a interação do laço; enquanto ela for 
verdadeira, o loop será repetido.
Figura 3. Fluxograma do laço while.
A sintaxe do comando while é:
#inicialização da variável contadora
while condição:
 #sequência de comando(s) executado(s) no corpo do while
 comando _ 1
 comando _ 2
 ...
 comando _ n
 #incremento ou decremento da variável contadora
Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)4
Variável contadora 
No comando while, a variável contadora é utilizada como controle do 
laço; ela determina o número de vezes que o conjunto de instruções do laço 
while será executado. Ela deve ser inicializada antes do comando while e 
ser incrementada ou decrementada dentro do bloco de instrução do comando 
while, de modo que a condição se torne falsa quando o número de repetições 
desejadas for atingido. 
Incrementar é somar uma quantidade do valor atual de uma variável. Decrementar é 
diminuir uma quantidade do valor atual de uma variável.
Fique atento a essa questão, pois, do contrário, você pode criar um loop 
infinito indesejado, conforme aponta Borges (2014).
O exemplo da Figura 4 traz o laço de repetição while utilizando uma variável con-
tadora, que incrementa o seu valor a cada execução do loop. O bloco de instruções 
dentro do laço é repetido três vezes.
(a)
(b)
Figura 4. (a) Laço de repetição while com incremento da variável contadora e (b) resultado 
da execução do código.
5Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
O código da Figura 4a inicializa, fora do laço de repetição, a variável contadora de 
controle, nomeada nesse exemplo como cont, que recebe valor 1. O teste lógico no 
comando while é cont<=3, ou seja, o laço vai repetir o bloco de instruções enquanto 
a variável cont for menor ou igual a 3. Dessa forma, a condição de parada do laço 
acontece quando cont assume um valor maior do que 3. Nesse exemplo, o bloco de 
instruções possui dois comandos: a função print(), para imprimir a mensagem na 
tela, e o incremento de uma unidade da variável contadora, (cont+=1). O resultado 
da execução desse código é mostrado na Figura 4b, em que é possível verificar que 
o bloco de código do comando while é executado e imprime a mensagem dentro 
do laço três vezes.
No exemplo a seguir, uma das funções do bloco de instruções é o decre-
mento de uma unidade da variável contadora, diferentemente do exemplo an-
terior, em que uma das funções era o incremento de uma unidade (cont+=1).
No exemplo mostrado na Figura 5, o laço de repetição while utiliza uma variável 
contadora que decrementa o seu valor a cada execução do loop. O bloco de instruções 
dentro do laço é repetido cinco vezes.
(a)
(b)
Figura 5. (a) Laço de repetição while com decremento da variável contadora e (b) resultado 
da execução do código.
Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)6
O código da Figura 5a inicializa, fora do laço de repetição, a variável contadora de 
controle cont com o valor 5. O teste lógico no comando while é cont>=1, ou seja, 
o laço vai repetir o bloco de instruções enquanto a variável cont for maior ou igual 
a 1. Assim, a condição de parada do laço acontece quando cont assumir um valor 
menor do que 1. Nesse exemplo, o bloco de instruções possui dois comandos: a função 
print(), para imprimir a mensagem na tela, e o decremento de uma unidade da 
variável contadora, (cont-=1). O resultado da execução desse código é mostrado naFigura 5b, em que podemos averiguar que o bloco do comando while é executado 
e imprime a mensagem de dentro do laço cinco vezes.
Instruções break e continue
O comando break, quando utilizado dentro de um laço de repetição, serve 
para interromper a repetição, encerrando a execução do loop e, em seguida, 
saltando para a linha de código imediatamente após o bloco de instruções do 
laço, conforme leciona Perkovic (2016).
O exemplo mostrado na Figura 6 traz o laço de repetição infinito, que é um laço que 
apresenta uma condição de teste sempre verdadeira, implementado com while. Ele 
contém o valor True (Verdadeiro) como teste lógico e a estrutura condicional if 
para determinar quando executar o comando break e encerrar a execução do loop.
O código da Figura 6a é um loop infinito, pois a condição do comando while é 
sempre verdadeira (True); assim, não há uma condição de parada. A variável conta-
dora de controle cont é inicializada fora do laço com o valor 1; em toda a execução 
do loop, ela é incrementada de uma unidade no comando cont+=1 e testada na 
estrutura condicional if (cont>3). Quando o valor de cont for maior do que 3, 
o teste lógico da estrutura condicional if é verdadeiro e, então, o comando break 
é executado, parando o laço de repetição while. O resultado da execução desse 
código é mostrado na Figura 6b, em que é possível perceber que o comando while 
imprime a mensagem dentro do laço três vezes, semelhante ao exemplo da Figura 4.
7Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
(a)
(b)
Figura 6. (a) Laço de repetição while com instrução break e (b) resultado da execução 
do código.
O comando continue interrompe o fluxo de execução do laço de repe-
tição. Porém, ele avança para a próxima execução do loop, conforme explica 
Perkovic (2016).
O exemplo mostrado na Figura 7 traz o laço de repetição while e a estrutura con-
dicional if para determinar quando executar o comando continue e saltar para a 
nova execução do loop. Ou seja, se a condição do if for verdadeira, o continue é 
executado e o loop retorna ao início, ignorando as próximas linhas de código.
Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)8
(a)
(b)
Figura 7. (a) Laço de repetição while com instrução continue e (b) resultado da 
execução do código.
O código da Figura 7a apresenta o while com a variável contadora de controle 
cont, que é inicializada fora do laço com o valor 1. A cada execução do loop, ela é 
incrementada de uma unidade no comando cont+=1 e testada na estrutura condi-
cional if (cont%2==1), que testa se um valor é ímpar, isto é, se o resto da divisão de 
cont/2 é igual a 1. Se a condição for verdadeira, o comando continue é executado, 
pulando a linha do comando print (cont) e iniciando a próxima execução do 
laço de repetição. O resultado da execução desse código é mostrado na Figura 7b. Ao 
final, verificamos que o comando while imprime os números pares positivos até 10.
Teste de mesa para o laço de repetição while 
O teste de mesa é uma técnica utilizada para verificar manualmente o fluxo de 
execução de um programa, sem utilizar o computador e necessitando apenas 
de papel e caneta, conforme aponta Barry (2018). Esse teste é útil para verificar 
erros de lógica e, geralmente, é utilizado quando não existe uma ferramenta 
automatizada de debug ou de simulação para verificar o funcionamento do 
código implementado.
9Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
Como o teste de mesa é uma avaliação manual do funcionamento do pro-
grama, seu escopo deve ser muito bem definido, para que o desenvolvedor 
consiga rastrear os estados de todas as variáveis observadas. Em programas 
maiores, esse tipo de teste pode ser feito em blocos, testando, por exemplo, o 
comportamento das variáveis dentro do laço de repetição while.
A configuração dos testes de mesa depende fortemente da função do código 
implementado e do tipo de lógica que se pretende avaliar. De forma geral, 
segundo Slatkin (2015), para realizar o teste de mesa, é necessário seguir os 
seguintes passos:
1. Indicar as variáveis, os testes lógicos e/ou os resultados de operações 
que serão rastreadas no teste de mesa.
2. Criar uma tabela com linhas e colunas, em que as colunas serão os 
elementos rastreados, que foram identificados no primeiro passo, e 
as linhas serão enumeradas de acordo com as instruções observadas/
executadas durante o teste de mesa. 
3. Percorrer o trecho de código a ser testado linha por linha, preenchendo 
a tabela com os valores atualizados dos elementos rastreados ao final 
da execução de cada linha observada. 
4. Executar o terceiro passo do teste até o final do trecho de código que 
se deseja verificar.
No laço de repetição while, o teste de mesa verifica o seu funcionamento, 
atualizando o conteúdo dos elementos rastreados a cada reinício do loop. Dentro 
de um laço de repetição while, os elementos que poderão ser rastreados são 
número de interação/repetição do while, status da condição testada, conteúdo 
das variáveis contadora e acumuladora (se houver), entre outros. A Figura 8 
mostra o laço de repetição que soma o 10 primeiros números positivos (Figura 
8a) e o teste de mesa desse código (Figura 8b). 
Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)10
Figura 8. (a) Teste de mesa do comando while e (b) tabela com teste de mesa do código.
(a)
(b)
O teste de mesa da Figura 8b mostra a mensagem impressa com os elemen-
tos rastreados: o número da iteração/repetição do laço de repetição while, 
o status da condição testada e os conteúdos das variáveis contadora cont 
e acumuladora soma a cada reinício do loop. Na primeira vez que o laço 
de repetição é executado, a condição testada é verdadeira, a variável cont 
contém o valor 1 e a soma do valor acumulado é 1. Na segunda repetição do 
laço, a condição testada ainda é verdadeira, o conteúdo da variável cont é 
incrementado de uma unidade, por causa da execução do comando da linha 
9 (Figura 8a), cont+=1, e o conteúdo da variável soma é atualizado para 3. 
Isso porque é acumulado o valor anterior (1) dessa variável, sendo somado 
com o valor atual da variável cont (2), por meio do comando da linha 6 
(Figura 8a), soma += cont. À medida que cada interação/repetição do laço 
while ocorre, a variável contadora cont é incrementada em uma unidade, 
e a variável soma acumula o valor do somatório dos n números. O teste de 
mesa é realizado até que a condição lógica do laço while assume o valor 
False (última linha da Figura 8b).
11Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
Variável acumuladora 
Variáveis acumuladoras são comumente empregadas em laços de repetição. 
Sua função é acumular um determinado valor a cada iteração/repetição do 
loop. Dessa forma, o valor da variável acumuladora é somado com um valor 
numérico ou com o conteúdo de outra variável, conforme leciona Matthes 
(2016).
O código mostrado na Figura 8a possui um laço while com uma variável 
acumuladora soma. Essa variável acumula o seu próprio valor anterior, mais 
outro valor ou o valor de uma variável (no caso, a variável cont), acumulando, 
assim, o valor somado a cada iteração do while.
Aplicações práticas utilizando o laço de 
repetição while
Existem diversas aplicações para o laço de repetição while. Dentre elas, 
pode-se citar a criação de menus interativos para se comunicar com o usuário e 
a impressão de uma sequência numérica, como fatorial, somatório e produtório 
de números, progressões aritmética e geométrica, sequência de Fibonacci, 
entre outros, conforme expõe Downey (2016).
Sequência de Fibonacci
Segundo Matthes (2016), a sucessão ou sequência de Fibonacci é uma sequência 
numérica em que os dois primeiros números têm valor F0= 0 e F1= 1 e os outros 
números da sequência são calculados pela equação Fn = F(n-1) + F(n-2). Assim, o ter-
ceiro elemento é calculado por F3 = F2+ F1 = 1, o quarto elemento é F4 = F3 + F2 = 2, 
o quinto é F5 = F4 + F3 = 3, e assim por diante. O código da Figura 9 mostra 
um programa da sequência de Fibonacci, em que o usuário escolhe quantos 
elementos da sequência ele quer imprimir.
O código da Figura 9 possui dois comandos while, sendo que o primeiro 
controla a continuidade de execução do programa. Ele repetirá o cálculo da 
sequência de Fibonacci (comando a, b = b, a+b) até que o usuário digite 
um valor diferente de 1; caso o usuário digite o valor 0, a variável de controle 
é atualizada, e é encerrada a execução do programa. O segundo comando 
while é responsável por calcular e imprimir os elementos da sequência de 
Fibonacci conforme a quantidade de números escolhida pelo usuário.
Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)12
Figura 9. (a) Método format() para strings e (b) um resultado da formatação.
(a)
(b)
Calculadora simples com menu interativo
O laço de repetição while também é utilizado na construção de menus intera-
tivos, que servem para comunicar ao usuário informações importantes, como 
orientações de funcionamento, ajuda, inserção de dados ou encerramento do 
programa, conforme aponta Slatkin (2015). A aplicação da Figura 10 mostra 
como construir um menu interativo para uma calculadora, que faz diversas 
operações entre dois números reais. 
13Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
Figura 10. Calculadora simples com um menu interativo.
Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)14
A calculadora da Figura 10 possui um laço de repetição while sempre 
verdadeiro (while True:), permitindo que o menu interativo seja apresentado 
ao usuário até que o teste lógico da estrutura condicional (if (controle 
== 7):) seja verdadeiro. Essa condição do if só será verdadeira se o usuário 
escolher a opção 7; então, a instrução break será executada, finalizando o 
laço de repetição. Quando o usuário escolhe outra opção (de 1 a 6), a estrutura 
condicional composta if-elif interage com o usuário, solicitando a entrada 
do(s) valor(es) numérico(s) e realizando a operação matemática escolhida.
BANIN, S. L. Python 3: conceitos e aplicações: uma abordagem didática. São Paulo: 
Érica, 2018. 264 p.
BARRY, P. Use a cabeça! Python. 2. ed. Rio de Janeiro: Alta Books, 2018. 616 p. (Série Use 
a Cabeça/Head First).
BORGES, L. E. Python para desenvolvedores: aborda Python 3.3. São Paulo: Novatec, 
2014. 320 p.
DOWNEY, A. B. Pense em Python: pense como um cientista da computação. São Paulo: 
Novatec, 2016. 312 p.
MATTHES, E. Curso intensivo de Python: uma introdução prática e baseada em projetos 
à programação. São Paulo: Novatec, 2016. 656 p.
PERKOVIC, L. Introdução à computação usando Python: um foco no desenvolvimento 
de aplicações. Rio de Janeiro: LTC, 2016. 516 p.
RAMALHO, L. Python fluente. São Paulo: Novatec, 2015. 800 p.
SLATKIN, B. Python eficaz: 59 maneiras de programar melhor em Python. São Paulo: 
Novatec, 2015. 296 p.
Leituras recomendadas
HETTINGER, R.; CARROLL, W. I. Python Enhancement Proposal (PEP) 315: Enhanced 
while loop. Python Software Foundation, Wilmington, 2003. Disponível em: https://
www.python.org/dev/peps/pep-0315/. Acesso em: 3 jun. 2019.
LABAKI, J. Testes, loops, varreduras e erros. In: LABAKI, J. Introdução a Python: módulo 
A. Ilha Solteira: Departamento de Engenharia Mecânica, Universidade Estadual Pau-
lista “Júlio de Mesquita Filho”, 2004. p. 29–46. Disponível em: https://www.dcc.ufrj.
br/~fabiom/mab225/pythonbasico.pdf. Acesso em: 3 jun. 2019.
15Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)
PINA JÚNIOR, J. C.; MORIMOTO, C. H. Comando de repetição: while. In: PINA JÚNIOR, J. 
C.; MORIMOTO, C. H. Introdução à Computação com Python. São Paulo: Departamento 
de Ciência da Computação, IME-USP, 2019. Disponível em: https://panda.ime.usp.br/
cc110/static/cc110/03-while.html. Acesso em: 3 jun. 2019. 
VIEGAS, T. B. Correções para PEP8 - Listas 03 e 04. Python Brasil Exercícios, [S. l.], 4 ago. 
2014. Disponível em: https://github.com/selatotal/pythonBrasilExercicios/tree/mas-
ter/03_EstruturasRepeticao. Acesso em: 3 jun. 2019.
Comando while, variáveis contadoras e acumuladoras (utilizando a linguagem Python)16

Continue navegando