Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Aplicações utilizando comandos 
iterativos aninhados (nível fácil de 
aninhamento — Python)
Apresentação
No mundo real, é comum a execução de ações que fazem percorrer conjuntos de objetos repetidas 
vezes: separar as peças de um quebra-cabeça por formato, agrupar cartas de um baralho pelo seus 
naipes ou guardar a roupa, saída da secadora, no armário. Em programação, utilizam-se os 
comandos iterativos for e while para a execução dessas repetições. 
Existem alguns casos em que se faz necessário utilizar os comandos de repetição em instruções que 
são executadas uma dentro da outra, ou seja, em estruturas cujo comando for e/ou while contêm 
outras estruturas internas de repetição. Esse tipo organização do código é denominada como 
comandos iterativos aninhados. 
Nesta Unidade de Aprendizagem, você vai aprender a como utilizar esses comandos de forma 
aninhada, para aumentar a capacidade de programas e resolver problemas cada vez mais 
complexos. 
Para tal, irá utilizar a linguagem Python e a técnica de teste de mesa, que permite a prevenção de 
possíveis erros lógicos na construção dos programas com comandos iterativos aninhados.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Descrever a utilização dos comandos iterativos for e while em estruturas aninhadas em 
problemas de nível inicial.
•
Desenvolver testes de mesa em programas que utilizem comandos iterativos aninhados.•
Resolver problemas computacionais, utilizando comandos iterativos aninhados.•
Desafio
O aninhamento é um recurso muito útil em programação, principalmente para leitura de listas 
bidimensionais e para aplicação de algoritmos de ordenação. 
Você trabalha no setor de desenvolvimento de uma empresa e recebeu uma nova demanda da área 
de Gestão de Recursos Humanos (RH) para ordenar uma lista de promoções na empresa. Confira:
Elabore um código em Python, usando comandos iterativos aninhados que atendam essa regra de 
negócio, e comente sua escolha.
Infográfico
Os comandos iterativos aninhados, utilizados um dentro do outro, são fundamentais para resolução 
de problemas computacionais, como na implementação de Matrizes. Matrizes são estruturas de 
dados bidimensionais, semelhantes a tabelas, que são empregadas para armazenar tipos de dados 
de mesma natureza, ou seja, do mesmo tipo. São muito utilizadas na computação gráfica, na edição 
de imagens, na criptografia, no desenvolvimento de modelos populacionais e na aplicação de 
cadeias de Markov, por exemplo. 
No Infográfico a seguir, você vai conhecer as vantagens em utilizar os comandos iterativos 
aninhados para a construção e manipulação de matrizes. A implementação de comandos iterativos 
aninhados em algoritmos é um dos meios empregados para construção e utilização dessas 
estruturas de dados. 
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
Conteúdo do Livro
Comandos iterativos são fundamentais na construção de qualquer código de software. Sem esse 
recurso, execuções que necessitam verificar uma determinada condição para tomar uma decisão 
não seriam possíveis. Os comandos iterativos podem ser utilizados em blocos aninhados onde 
dentro do bloco de execução de um comando iterativo é instanciado o uso de um segundo bloco 
iterativo, formando assim estruturas iterativas aninhadas fundamentais para implementação de 
algoritmos de busca binária, por exemplo.
No capítulo Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — 
Python), da obra Pensamento Computacional, você vai conhecer essas instruções em alguns 
exemplos práticos e assim entender como esse recurso é fundamental na construção um código.
Boa Leitura.
PENSAMENTO 
COMPUTACIONAL
Fabricio Machado da Silva 
Aplicações utilizando 
comandos iterativos 
aninhados (nível fácil de 
aninhamento — Python)
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Descrever a utilização dos comandos iterativos for e while em
estruturas aninhadas em problemas de nível inicial.
 � Desenvolver testes de mesa em programas que utilizem comandos
iterativos aninhados.
 � Resolver problemas computacionais utilizando comandos iterativos
aninhados.
Introdução
Muitas vezes, durante a construção de um programa, nos deparamos com 
uma situação em que precisamos repetir um bloco de código mais de 
uma vez. Ainda, as estruturas precisam ser executadas em um formato 
hierárquico, em que um laço de repetição é executado como parte do 
bloco de código de outra repetição. O conceito que define que uma 
estrutura está contida no escopo de outra é denominado aninhamento.
No desenvolvimento de programas, o aninhamento pode ser utilizado 
em casos em que se faz necessário repetir condições de teste sucessiva-
mente; para isso, é necessário fazer uso dos comandos iterativos for e
while. A utilização de blocos aninhados utilizando comandos iterativos
é muito usual no desenvolvimento de programas, como na manipulação 
de matrizes, nos mecanismos de busca, nos algoritmos de ordenação e 
nos cálculos matemáticos complexos.
Neste capítulo, você vai verificar os comandos iterativos for e while 
aninhados, aplicados à resolução de problemas computacionais, e vai 
conferir diferentes formas de uso desses comandos na linguagem de 
programação Python. Por meio do teste de mesa, você vai poder testar a 
lógica da construção dos comandos iterativos aninhados, para determinar 
se o seu funcionamento está adequado. Por fim, você vai aprender na 
prática a resolver problemas computacionais por meio desses comandos. 
Comandos iterativos for e while
Existem situações em que queremos que a própria estrutura de repetição (loop) 
seja repetida um número específico de vezes, conforme expõe Wazlawick 
(2017). Moreira de Matos (2018, documento on-line) faz uma analogia do 
uso de loops aninhados com o nosso calendário, conforme descrito abaixo.
 � O ano tem 12 meses, sendo que todo ano começa em janeiro, depois 
vêm os meses fevereiro, março, e assim por diante, até chegar dezembro. 
Depois de cada ano completado, tudo recomeça. Isso é um looping. 
 � Cada mês do ano contém os dias do mês, iniciando no dia 1, que é 
seguido pelos dias 2, 3, etc., até o último dia do mês (que é variável). 
Mas, quando acaba o mês, inicia-se tudo de novo. Dessa forma, ocorre 
um novo looping.
 � Também podemos considerar que dentro do dia temos as horas, que 
também se repetem a cada dia. E, dentro de cada hora, há o loop dos 
minutos. E, dentro de cada minuto, há o loop dos segundos. Assim, 
podemos considerar que vivemos em loops aninhados. 
Vamos colocar esse conceito em prática utilizando a linguagem Python. Ao 
empregarmos uma instrução while, podemos fazer um bloco de código ser 
repetido diversas vezes, gerando um loop controlado, até que uma determinada 
condição seja verdadeira. A instrução while é composta por:
 � uma palavra-chave while;
 � uma expressão (condição de teste);
 � dois-pontos.
Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)2
while :
 
Em Python, podemos criar estruturas while combinadas, gerando es-
truturas aninhadas, em que o resultado de um bloco while vai influenciar 
no resultado de outro, possibilitando obter resultados interessantes, como a 
repetição de um incremento de duas variáveis, conforme leciona Menezes 
(2014). A sintaxe de uma condição de loop while aninhado é:
while :
 while :
 
 
Para ilustrarmos isso, vamos analisar o código mostrado na Figura 1, que 
usa comandos while aninhados para percorrer uma estrutura de dados que 
pode ter sido obtida de um serviço da internet.
Figura 1. Exemplo de comandos while aninhados em Python.
3Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)
No código da Figura 1, há uma estrutura de dados de dicionáriocontendo a 
informação das refeições de dois animais (linha 1). Podemos utilizar comandos 
while aninhados para percorrer os dois níveis dessa estrutura: o primeiro 
nível é a chave que indica o nome do cachorro (linha 4), e o segundo nível é 
o dos elementos que compõem a refeição do animal (linha 8). 
O comando while, por si só, é muito útil em diversos casos, como quando 
existe a necessidade de implementação de algoritmos de pesquisa binária, 
devido à possibilidade de criar comportamento iterativo no código. No entanto, 
devido à natureza das estruturas de dados utilizadas em Python, torna-se mais 
compreensível a utilização da instrução for. Na estrutura de código, uma 
instrução for é composta por:
 � uma palavra-chave for;
 � uma variável;
 � uma palavra-chave in;
 � um objeto iterável de tamanho finito, contendo vários elementos; 
 � dois-pontos.
for in :
 
Um objeto iterável pode ser uma lista ou um dicionário. Para simular o comportamento 
similar ao while utilizando uma variável contadora, podemos utilizar a função range, 
que gera uma lista com os números de zero até o valor informado como parâmetro. 
for i in range ([valor inicial], valor final, [passo]):
 
Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)4
Observe que o bloco do comando for se inicia na próxima linha, em 
um bloco de código indentado. Como a estrutura for é um comando que 
pode ter outros comandos subordinados a ele, então, podemos implementar 
perfeitamente outro comando for dentro de seu bloco de execução, conforme 
leciona Wazlawick (2017). A sintaxe de dois comandos for aninhados é:
for in :
 
 for in :
 
 
A Figura 2 ilustra a implementação do mesmo programa anterior (Fi-
gura 1), mas utilizando o comando iterativo for. Perceba que, por percorrer 
diretamente os objetos iteráveis, esse programa utiliza menos variáveis e é 
construído com menos linhas.
Figura 2. Exemplo de comandos for aninhados em Python.
Ambos os comandos iterativos, for e while, podem ser construídos 
em estruturas iterativas aninhadas em conjunto, ou seja, um for pode estar 
contido em um while e vice-versa. Veja na Figura 3 um programa que, uti-
lizando loops while e for, imprime a cada linha uma nova letra da palavra 
informada (linha 1), até apresentá-la por completo. 
5Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)
Figura 3. Exemplo de comandos while e for aninhados 
em Python.
Em Python, os comandos iterativos for são tradicionalmente usados 
quando você tem um bloco de código que deseja repetir um número fixo de 
vezes. A instrução Python for faz a iteração sobre os componentes de uma 
sequência em ordem, executando o bloco a cada vez. Em contraste, a instrução 
com o loop while é usada quando uma condição precisa ser verificada em 
cada iteração, ou para repetir um bloco de código, inclusive eternamente. 
Teste de mesa em algoritmos com 
estruturas iterativas
Ao projetarmos um algoritmo para solucionar um determinado problema, 
geralmente realizamos um exercício mental, com um passo a passo do que 
será executado pelo programa. Entretanto, muitas vezes nos deparamos com 
um programa que apresenta comportamentos diferentes do que foi projetado 
e que é dado como a solução correta. Por isso, é importante sempre testarmos 
o algoritmo antes de implementar e submeter ao compilador, simulando a sua 
Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)6
execução para verificar antecipadamente possíveis erros lógicos. Para tanto, 
existe uma prática utilizada com sucesso na área de programação, chamada de 
teste de mesa, que consiste na execução do algoritmo em um passo a passo, 
com o apoio de papel e caneta.
Existem alguns softwares disponíveis no mercado que efetuam a interpretação de 
algoritmos representados em pseudocódigos ou em fluxogramas. Seu objetivo é 
realizar um teste similar ao teste de mesa.
Para simularmos a aplicação do teste de mesa em estruturas com comandos 
iterativos aninhados, vamos supor um algoritmo que cria um array bidimen-
sional, que é um array com duas dimensões acessadas por linhas e colunas, 
caracterizando-se por uma matriz, conforme mostra a Figura 4. 
Figura 4. Array bidimensional.
Fonte: Adaptada de Pereira et al. ([201-?], documento on-line).
7Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)
A Figura 4 apresenta uma matriz com três colunas e três linhas. É im-
portante entender que cada célula dessa matriz corresponde a um elemento, 
que é referenciado por dois índices diferentes: um que corresponde à linha, e 
outro, à coluna. Assim, [1,1] refere-se ao elemento da linha 1 com a coluna 1, 
por exemplo. Cabe lembrar que, em Python, a primeira posição de um vetor 
ou lista é enumerada com o índice 0. Então, diferentemente da tabela acima, 
ao executarmos nosso algoritmo em Python para o preenchimento de uma 
matriz que é uma lista bidimensional, o programa vai iniciar no índice M [0,0], 
indicando a primeira linha e a primeira coluna. 
Para nosso teste de mesa, vamos considerar que o preenchimento de uma 
matriz pode ser executado da esquerda para a direita e de cima para baixo, 
ou seja, começando na posição [0,0] e seguindo para a posição [0,1], e assim 
por adiante. Vamos supor que tenhamos construído um algoritmo em Python 
para preencher uma matriz 3 × 3, conforme mostra a Figura 5.
Figura 5. Algoritmo de implementação de uma matriz 3 × 3. 
Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)8
Para simularmos o teste de mesa, temos uma variável com valor inicial igual 
a 10 e uma variável para guardar o incremento igual a 5. O algoritmo inicia 
o for mais externo e, para cada execução desse for, executa o for mais 
interno, em que o valor é armazenado na posição da matriz e é incrementado 
em 5, com a variável de incremento. Realizando o teste de mesa (Quadro 1), 
obtemos:
Posição 0,0 = 10
Posição 0,1 = 15
Posição 0,2 = 20
Posição 1,0 = 25
Posição 1,1 = 30
Posição 1,2 = 35
Posição 2,0 = 40
Posição 2,1 = 45
Posição 2,2 = 50
Iteração
Linha 
de 1 
até 3
Coluna 
de 1 
até 3
Valor_
inicial
M [linha, 
coluna] = 
Valor_inicial
Valor_inicial 
= valor inicial 
+ incremento
1 0 0 10 M [0,0] =10 10 + 5 = 15
2 0 1 15 M [0,1] = 15 15 + 5 = 20
3 0 2 20 M [0,2] = 20 20 + 5 = 25
4 1 0 25 M [1,0] = 25 25 + 5 = 30
5 1 1 30 M [1,1] = 30 30 + 5 = 35
6 1 2 35 M [1,2] = 35 35 + 5 = 40
7 2 0 40 M [2,0] = 40 40 + 5 = 45
8 2 1 45 M [2,1] = 45 45 + 5 = 50
9 2 2 50 M [2,2] = 50 50 + 5 = 55
Quadro 1. Exemplo de teste de mesa
9Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)
Dessa forma, para preencher a matriz, executamos ao todo nove iterações, 
como pode ser visto na execução do programa, mostrada na Figura 6.
Figura 6. Algoritmo de implementação de matriz 3 × 3 e a saída do programa. 
Como é possível perceber, a utilização do teste de mesa possibilitou enten-
der, passo a passo, exatamente como o compilador vai processar cada linha 
de comando do código. Assim, foi possível verificar que o código não deverá 
apresentar comportamento diferente do esperado. Iterar, na computação, 
significa repetir uma instrução ou um conjunto de instruções até que uma 
condição não seja mais aceita. Ou seja, trata-se de executar a série de instruções 
por uma determinada quantidade de vezes, ou até mesmo infinitamente, se a 
cláusula assim permitir.
Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)10
Problemas computacionais solucionados por 
comandos iterativos aninhados
A condição de estruturar blocos aninhados, conforme citado anteriormente, é 
muito usual em cálculos matemáticos. Observe a Figura 7,que ilustra um código 
que implementa comandos while e for aninhados para o cálculo de fatorial. 
O fatorial de um número (n) natural é calculado pela multiplicação desse n 
por todos os seus antecessores, até chegar ao número 1, sendo definido por:
n! = n.(n – 1).(n – 2).(n – 3)!
Por exemplo: 
Fatorial de 0: 0! = 1
Fatorial de 1: 1! = 1
Fatorial de 2: 2! = 2.1 = 2
Fatorial de 3: 3! = 3.2.1 = 6
E assim por diante.
Figura 7. Cálculo de fatorial de 10 números. 
11Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)
O primeiro while itera sobre os números que queremos calcular, ou 
seja, os números de 0 a 10, enquanto o for interno faz a decomposição e a 
multiplicação dos valores, gerando o resultado do fatorial do número.
Vamos acompanhar outro exemplo (Figura 8) com vários for aninhados, 
criando uma espécie de simulador de relógio digital, em que, a cada instante, 
será impressa na tela a informação de hora (variando de 0 a 23) e minuto 
(variando de 0 a 59). Nesse caso, serão usadas duas estruturas for aninhadas, 
em que o for mais externo, o primeiro, realiza a contagem das horas, e o 
segundo, que é o mais interno, conta os minutos, o que é repetido várias vezes. 
Figura 8. Exemplo de comandos for aninhados para o cálculo das horas. 
Observe que esse é o princípio do funcionamento de um relógio, que im-
prime todas as horas e todos os minutos em poucos instantes. Você pode ainda 
adicionar um for e incluir os segundos no seu relógio. 
Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)12
Por último, a Figura 9 ilustra a implementação de um comando for ani-
nhado dentro de outro, para o cálculo da média de notas de uma turma de 
alunos em variadas disciplinas. 
Figura 9. Exemplo de dois comandos iterativos for aninhados, para o cálculo da média 
dos alunos.
13Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)
O programa da Figura 9 é um programa típico de entrada de dados. Ele usa 
um for para percorrer a lista de alunos e, depois, utiliza o for interno para 
perguntar o valor de todas as notas do aluno, para calcular a média. Dessa 
forma, tem-se, ao final, um conjunto de médias por aluno, que pode ser usado 
para calcular a média da turma.
A página Como Pensar Como um Cientista da Computação, que traz a tradução do 
livro How to Think Like a Computer Scientist: Interactive Version, de Brad Miller e David 
Ranum, aborda alguns aspectos sobre os tipos de iteração que existem, especialmente 
em relação à sua duração. Segundo a página, o comando for realiza a iteração em 
determinadas sequências de valores, como uma lista de nomes ou de números que 
utiliza o comando range. Ao utilizar o for, sabe-se quantas vezes será possível iterar 
sobre o conjunto de valores, já que é criado um laço do tipo iteração definida (definite 
iteration), com um término programado. Já no caso do comando while, o término 
do laço depende de uma condição falsa, que não se sabe exatamente quando vai 
ocorrer; trata-se, portanto, de uma iteração indefinida (indefinite iteration). Nesse caso, 
eventualmente, a condição de controle da iteração vai falhar, e a iteração vai parar — 
a não ser que se trate de um laço infinito, o que representa um problema, conforme 
descrito na página. Veja no link a seguir o conteúdo abordado de forma mais completa. 
https://qrgo.page.link/vVtcF
Estruturas aninhadas são ótimas para reaproveitamento de código, pois, 
em vez de se criar uma única estrutura com muitos membros, que nem sempre 
serão acessados, várias estruturas podem ser criadas e reutilizadas em diver-
sas partes do seu projeto. Portanto, as estruturas aninhadas são um recurso 
muito útil para que você consiga resolver o seu problema de forma ainda mais 
eficiente e modularizada.
Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)14
MENEZES, N. N. C. Introdução à programação com Python: algoritmos e lógica de pro-
gramação para iniciantes. 2. ed. São Paulo: Novatec, 2014. 328 p.
MOREIRA DE MATOS, F. J. Loops Aninhados (Laço dentro de laço). Python Progressivo, 
Fortaleza, maio 2018. Disponível em: https://www.pythonprogressivo.net/2018/05/
Loopings-Aninhados-Laco-dentro-Lado.html. Acesso em: 28 ago. 2019.
PEREIRA, F. V. Y. R. et al. Comandos de Repetição (Laços ou Loops). ITAbits, São José dos 
Campos, [201-?]. Disponível em: https://sites.google.com/site/itabits/treinamento/
introducao-a-programacao-em-c/comandos-de-repeticao. Acesso em: 28 ago. 2019.
WAZLAWICK, R. S. Introdução a algoritmos e programação com Python: uma abordagem 
dirigida por testes. Rio de Janeiro: Elsevier, 2017. 232 p.
Leituras recomendadas
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. 2. ed. Rio de Janeiro: Edição do Autor, 2010. 
360 p. Disponível em: https://ark4n.wordpress.com/python/. Acesso em: 24 jul. 2019.
DOWNEY, A. B. Pense em Python: pense como um cientista da computação. São Paulo: 
Novatec, 2016. 312 p. Disponível em: https://penseallen.github.io/PensePython2e/. 
Acesso em: 23 jun. 2019.
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: programação clara, concisa e eficaz. São Paulo: Novatec, 
2015. 800 p.
SLATKIN, B. Python eficaz: 59 maneiras de programar melhor em Python. São Paulo: 
Novatec, 2016. 296 p.
15Aplicações utilizando comandos iterativos aninhados (nível fácil de aninhamento — Python)
Dica do Professor
A necessidade de utilização de comandos iterativos em qualquer linguagem de programação é 
fundamental. Praticamente em qualquer código simples, é necessário realizar algum fluxo de 
controle iterativo. Em casos que exigem uma maior complexidade para resolução de problemas, os 
comandos while e for podem ser utilizados em estruturas aninhadas, permitindo a implementação 
de algoritmos interessantes.
Na Dica do Professor, você vai conhecer a sintaxe dos comandos for e while em estruturas 
aninhadas, utilizando o serviço de nuvem gratuito Google Colab. 
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Exercícios
1) O while é um comando iterativo que repete continuamente um bloco de código enquanto a 
expressão lógica de controle for verdadeira, ou seja, quando o número de repetições não é finito. O 
comando while é suscetível aos loops infinitos, que fazem o programa ficar preso, repetindo o 
mesmo bloco de código eternamente. Essa situação é ainda mais grave quando utilizam-
se comandos while aninhados.
Analise o código abaixo e assinale a alternativa correta:
 
A) O exemplo acima não é considerado grave, pois o Python consegue entender que houve um 
laço repetitivo e gerencia a memória.
B) O interpretador do Python descartará o sistema da memória após algum tempo de execução 
do loop repetitivo.
C) O programa não executa o que deveria ser feito, mas o loop while 1>0, não ter fim causa a não 
execução do sistema.
D) O programa não faz o que deveria ser feito e, após algumas tentativas, o sistema operacional 
irá descartá-lo da memória, gerando erro.
E) O programa não faz o que deveria ser feito e pode entrar em loop infinito, como é chamado.
O conceito de estruturas interativas aninhadas é basicamente a utilização de um comando 
interativo for ou while, no caso do Python dentro de outro, podendo ser combinados ou 
então do mesmo tipo. Esse tipo de estrutura é útil em muitos casos.
2) 
Assinale a seguir a alternativa que exemplifica alguns dos casos que podemos trabalhar com 
estruturas interativas aninhadas:
A) Cálculosmatemáticos mais complexos como operações entre listas bidimensionais. 
B) Inserção de valores em variáveis no código do programa.
C) Concatenação de variáveis para apresentação em tela.
D) Realização de testes condicionais com retorno de valores. 
E) Repetições de blocos de execução de instruções como soma entre dois números.
3) O teste de mesa em comandos interativos é um recurso fundamental a ser utilizado. Por 
meio de sua aplicação, é possível identificarmos problemas de lógica na construção dos 
algoritmos entre outras finalidades.
Acerca da aplicação do teste de mesa, assinale a alternativa correta:
A) O teste de mesa em estruturas interativas aninhadas pode ser utilizado para refatoração de 
código.
B) O teste de mesa é um recurso interessante, mas se aplica somente a estruturas interativas e 
não aninhadas.
C) A utilização de teste de mesa só pode ser aplicada com valores reais das variáveis.
D) A aplicação de teste de mesa utiliza valores fictícios para variaveis e simula comportamento 
em papel.
E) O teste de mesa é um recurso antigo utilizado somente em linguagens estruturadas.
4) A utilização de comandos iterativos ou laços de repetição geram muitas vantagens para o 
código. No Python, temos a possibilidade de trabalhar com os comandos for e while para 
implementar laços iterativos. Em conjuntos, esses comandos podem construir estruturas 
aninhadas onde um laço é repetido dentro do outro.
Sobre a aplicação desses comandos em estruturas condicionais aninhadas, assinale a 
alternativa correta:
A) Os comandos for e while apresentam muitas diferenças entre si, apesar de serem comandos 
iterativos e, por isso, não podem ser combinados.
B) O comando for é empregado em casos onde sabemos quantas iterações queremos executar. 
Podemos utilizá-lo combinando com laços de repetição while e vice-versa. 
C) O comando for é mais utilizado em casos onde sabemos quantas iterações queremos 
executar. Por isso, em comandos iterativos aninhados, só podemos utilizar um comando for 
dentro de outro comando for. 
D) O comando while é mais utilizado quando queremos repetir o laço por um número previsto de 
vezes. Ele pode ser utilizado dentro de um outro comando while ou em um comando 
interativo for.
E) O comando while quando utilizado junto com o comando for não permite a construção de 
laços infinitos, tornando-se mais seguro. 
5) Analise o seguinte algoritmo que implementa comandos interativos aninhados para o controle de 
entrada de pessoas em um estabelecimento:
 
Com base nesse algoritmo, assinale a alternativa correta:
A) O algoritmo ficará preso em um loop infinito
B) O algoritmo vai escrever duas vezes "Você pode entrar".
C) Tem um erro de lógica e ele vai escrever dez vezes a primeira mensagem e a segunda.
D) O algoritmo vai escrever dez vezes "Você deve retornar outro dia".
E) O algoritmo escreverá infinitamente "Você deve retornar outro dia!".
Na prática
A utilização de testes de mesa na programação é um recurso importante para certificação e 
antecipação de possíveis comportamentos inesperados em decorrência de erros de lógica na 
construção de algoritmos. Em estruturas interativas aninhadas, os erros envolvendo lógica podem 
ser difíceis de se prever na criação do algoritmo, aparecendo na prática somente quando em 
execução do programa com erros inesperados e, por isso, a sua aplicação é importante.
Acompanhe, neste Na Prática, o programador Carlos, que utiliza um recurso automatizado de teste 
de mesa para prever o comportamento de algoritmos. 
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
Saiba mais
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
Matriz em Python
Neste vídeo, você verá estruturas for dentro de outra criando matrizes.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Algoritmo de ordenação - Bubble sort
Vídeo interessante sobre como funciona o algoritmo de ordenação bubble sort que implementa o 
conceito de comando iterativo aninhado.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Comandos iterativos aninhados
Veja, nesse tutorial, exemplos de comandos iterativos aninhados, incluindo um código para 
impressão de números primos.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.

Mais conteúdos dessa disciplina