Escolar Documentos
Profissional Documentos
Cultura Documentos
COMPUTACIONAL
Introdução
Quando um problema computacional requer a manipulação de estru-
turas de dados compostas de várias dimensões, o programador pode
utilizar o recurso de aninhar comandos em múltiplos níveis para conseguir
endereçar o problema apropriadamente. Ao lidar com situações como
processamento de polígonos 3D em jogos, ou para processar estruturas
de dados que têm conteúdo hierárquico com múltiplos níveis, faz-se
necessário construir algoritmos que percorram todos os níveis/dimensões
da estrutura em questão para realizar cálculos ou extrair informação.
Neste capítulo, você vai estudar sobre o uso de comandos iterativos
aninhados. Você vai verificar como realizar testes de mesa em problemas
que utilizam comandos iterativos aninhados e, por fim, vai analisar a
aplicação desses comandos em problemas computacionais.
2 Aplicações utilizando comandos iterativos aninhados (nível médio de aninhamento — Python)
O comando for
Usa-se o comando for quando é necessário executar uma tarefa mais de uma
vez, um número específico de vezes, tendo um início e um fim bem definidos,
conforme lecionam Mueller e Massaron (2018). O for, cuja tradução do inglês
é “para”, é a estrutura de repetição mais utilizada na linguagem de programação
Python. Trata-se de uma instrução que não é somente aceita em sequências
estáticas, mas também em sequências geradas por iteradores. De forma geral,
a sintaxe do comando for pode ser representada conforme mostra a Figura 1.
Segundo Barry (2012), loops for em Python existem principalmente para processar
estruturas de dados, como listas de qualquer tamanho, e realizar outras iterações.
Por isso, quando você precisar percorrer uma lista, não esqueça de que você deve
utilizar o for.
O comando while
Um loop também pode ser implementado a partir de uma instrução while.
A instrução while executa um código atendendo a uma condição, quando
esta é avaliada como verdadeira. Sua utilização é adequada para o uso quando
não é possível determinar o número de iterações que devem ocorrer, nem
mesmo há uma sequência a ser seguida. Observe um exemplo com sua forma
geral na Figura 2.
4 Aplicações utilizando comandos iterativos aninhados (nível médio de aninhamento — Python)
Figura 3. Código em Python para gerar duas matrizes e realizar a sua soma.
Observe que o algoritmo tem uma variável chamada tam (linha 6), que
foi inicializada com o valor 4. Essa variável afeta os comandos nas linhas 11,
15, 19, 23, 25 e 26, dizendo qual é o valor máximo de cada dimensão. Graças
aos comandos iterativos for aninhados, podemos mudar o tamanho de tam
para calcular a soma de matrizes 4 × 4 para matrizes de qualquer tamanho,
sem mudar nenhuma outra linha de código.
Apesar de muito útil em muitas situações de programação, não é uma boa
prática de programação utilizar muitos níveis de aninhamento de comandos
iterativos, pois isso aumenta a complexidade do algoritmo, o que pode afetar
sua eficiência. À medida que se aprende a programação em Python, percebe-se
que podem ser utilizados comandos que otimizam o código e facilitam sua
execução, evitando-se, assim, o uso indiscriminado de comandos iterativos e
de outras estruturas em Python.
Nas próximas seções deste capítulo, vamos realizar o teste de mesa e
discutir problemas de computação que requerem o aninhamento de comandos
iterativos com níveis superiores a 2.
Podemos observar que o bloco que seria executado para cada valor de i virou uma
expressão, que é retornada o número de vezes que a expressão do for — nesse
caso, range (5) — retornar um elemento. Dessa forma, é possível criar uma lista
de números com apenas uma linha, ao contrário do exemplo apresentado no código
abaixo, que teria uma performance menor:
>>>numeros = []
>>> for i in range(5):
>>><tab>numeros.append(i)
Aplicações utilizando comandos iterativos aninhados (nível médio de aninhamento — Python) 7
Para este teste de mesa, vamos contabilizar, a cada iteração, o valor das
variáveis i, j e k, bem como o valor do contador que é expresso em cada
iteração, conforme apontado abaixo.
Iteração 1:
i = 0, j = 0, k = 0
Iteração 2:
i = 0, j = 0, k = 1
Iteração 3:
i = 0, j = 0, k = 2
Iteração 4:
i = 0, j = 1, k = 0
Iteração 5:
i = 0, j = 1, k = 1
8 Aplicações utilizando comandos iterativos aninhados (nível médio de aninhamento — Python)
Iteração 6:
i = 0, j = 1, k = 2
Iteração 7:
i = 0, j = 2, k = 0
Iteração 8:
i = 0, j = 2, k = 1
Iteração 9:
i = 0, j = 2, k = 2
Iteração 10:
i = 1, j = 0, k = 0
Iteração 11:
i = 1, j = 0, k = 1
Iteração 12:
i = 1, j = 0, k = 2
Iteração 13:
i = 1, j = 1, k = 0
Iteração 14:
i = 1, j = 1, k = 1
Iteração 15:
i = 1, j = 1, k = 2
Iteração 16:
i = 1, j = 2, k = 0
Iteração 17:
i = 1, j = 2, k = 1
Iteração 18:
i = 1, j = 2, k = 2
Aplicações utilizando comandos iterativos aninhados (nível médio de aninhamento — Python) 9
Iteração 19:
i = 2, j = 0, k = 0
Iteração 20:
i = 2, j = 0, k = 1
Iteração 21:
i = 2, j = 0, k = 2
Iteração 22:
i = 2, j = 1, k = 0
Iteração 23:
i = 2, j = 1, k = 1
Iteração 24:
i = 2, j = 1, k = 2
Iteração 25:
i = 2, j = 2, k = 0
Iteração 26:
i = 2, j = 2, k = 1
Iteração 27:
i = 2, j = 2, k = 2
Número de repetições: 27
No site Program Arcade Games With Python And Pygame, você pode conferir exemplos
e códigos animados para entender a execução de programas. Acesse o link a seguir
e acompanhe a criação de uma imagem em formato de diamante, feita a partir de
números e criada a partir de comandos iterativos for aninhados.
https://qrgo.page.link/8N8eb
Esse código usa um loop com comando iterativo while para controlar
qual opção do menu foi selecionada. Todo o restante do programa está contido
dentro desse loop. Caso o usuário selecione a opção 1, entramos em um novo
loop com while, em que o critério de saída é que o usuário digite a pala-
vra fim. Caso não se digite a palavra fim, entraremos em uma sequência de
11 leituras de nomes, que é armazenada em uma lista, por meio de um comando
iterativo for.
Aplicações utilizando comandos iterativos aninhados (nível médio de aninhamento — Python) 13
Esses casos são alguns dos muitos exemplos em que estruturas aninhadas
são importantes para programação. Entretanto, devemos utilizar comandos
aninhados com cautela, pois sempre devemos priorizar o código simples, a
eficácia e a legibilidade, bem como implementar códigos que se utilizem das
boas práticas de programação.
Algumas dessas boas práticas são descritas no Zen do Python, que consiste
em 19 sugestões descritas por Tim Peters em 2004 e que ainda são ampla-
mente utilizadas para orientar programadores em Python, sendo encontradas,
inclusive, na página oficial da linguagem (PETERS, 2004). Códigos baseados
nessas sugestões são conhecidos como códigos pythonicos, e existe um grande
incentivo da comunidade de desenvolvedores Python para que programadores
adotem essas sugestões em seus códigos.
16 Aplicações utilizando comandos iterativos aninhados (nível médio de aninhamento — Python)
BARRY, P. Use a cabeça! Python. Rio de Janeiro: Alta Books, 2012. 492 p.
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.
CRUZ, F. Python: escreva seus primeiros programas. São Paulo: Casa do Código, 2015.
269 p.
MELO, W. IUP —Introdução ao universo da programação com Python: um livro aberto para
aprender programação. Uberlândia: Faculdade de Computação, Universidade Federal
de Uberlândia, 2019. 139 p. Disponível em: http://www.facom.ufu.br/~wendelmelo/
meu_material/introducao_programacao_python_wendel_melo.pdf. Acesso em: 24
jul. 2019.
MUELLER, J.; MASSARON, L. Algoritmos para leigos. Rio de Janeiro: Alta Books, 2018. 432 p.
PETERS, T. PEP 20 -- The Zen of Python. Python Software Foundation, Wilmington, 2004.
Disponível em: https://www.python.org/dev/peps/pep-0020/. Acesso em: 24 jul. 2019.
Leituras recomendadas
CRAVEN, P. V. Program arcade games: with Python and Pygame. 4. ed. New York: Apress,
2016. 392 p. Disponível em: http://programarcadegames.com/. Acesso em: 24 jul. 2019.
MENEZES, N. N. C. Introdução à programação com Python: algoritmos e lógica de pro-
gramação para iniciantes. 3. ed. São Paulo: Novatec, 2019. 328 p.
SLATKIN, B. Python eficaz: 59 maneiras de programar melhor em Python. São Paulo:
Novatec, 2016. 296 p.