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.