Em programação, estruturas de controle são estruturas que estabelecem a ordem na qual as instruções de um programa são executadas, utilizando condições que são testadas com o objetivo de determinar o fluxo de execução das instruções que compõem um algoritmo. Sobre as estruturas de controle, analise as afirmativas a seguir. I. A estrutura de repetição enquanto é utilizada para executar um mesmo algoritmo diversas vezes até que uma condição seja satisfeita, sem a necessidade de modificar essa condição, dentro do algoritmo proposto, para que o laço de repetição se encerre. II. A corotina é o mecanismo de programação, no qual uma definição de função ou de outro objeto se refere ao próprio objeto sendo definido. III. As estruturas de repetição enquanto e repita geralmente são utilizadas quando não se conhece o número de vezes que um algoritmo deve ser repetido, sendo que a segunda estrutura sempre executará o algoritmo pelo menos uma vez, já que a condição se encontra no fim. Está correto o que se afirma apenas em
- A)I.
A alternativa afirma que somente a afirmativa I estaria correta, isto é, que o laço enquanto executa repetidamente um bloco até a condição se satisfazer sem precisar alterar nada para encerrar a repetição. O problema é que o while é uma estrutura de pré-teste: a condição é verificada antes de cada iteração e, para o laço terminar, algum valor usado nessa condição precisa mudar no próprio algoritmo ou no estado externo; caso contrário, o fluxo tende a ficar infinito. Além disso, a afirmativa II confunde corotina com recursão, e a III descreve corretamente a repetição com teste no fim.
- B)II.
A alternativa indica que apenas a afirmativa II estaria correta, atribuindo à corotina a ideia de uma função que se refere a si mesma. Isso está conceitualmente errado: essa descrição é de recursão, enquanto corotinas são rotinas que podem suspender e retomar sua execução de forma cooperativa, não uma definição autorreferente. Assim, a alternativa toma um conceito de programação e o associa ao termo errado.
- C)III.
A alternativa diz que somente a afirmativa III está correta. Ela acerta porque while e repita são, de fato, usados quando não se conhece previamente o número de repetições, e o repita...até executa o bloco ao menos uma vez, já que a condição é testada ao final. A afirmativa I erra ao sugerir que o laço pode encerrar sem qualquer ajuste que torne a condição falsa, e a II troca corotina por recursão.
- D)II e III.
A alternativa afirma que as afirmativas II e III estariam corretas. O erro está em II, que define corotina como uma função que faz referência a si mesma, conceito que corresponde à recursão; já III realmente descreve o laço com teste no fim e a garantia de uma execução mínima. Como uma das duas afirmativas indicadas não procede, a combinação proposta não se sustenta.
- E)I, II e III.
A alternativa sustenta que as afirmativas I, II e III estariam corretas. Isso não se confirma porque a I não descreve adequadamente o while, já que algum elemento do algoritmo precisa alterar a condição para evitar repetição infinita, e a II confunde corotina com recursão. Apenas a III está de acordo com a teoria das estruturas de repetição, então não há como admitir as três ao mesmo tempo.
Gabarito: C
Em estruturas de controle, a ideia é simples: elas mandam no caminho do programa, dizendo o que executa, quando executa e quantas vezes executa. Em laços de repetição, você costuma ter duas famílias clássicas: o enquanto, que testa a condição antes de entrar no bloco, e o repita, que testa depois de executar. Isso muda bastante o comportamento do algoritmo, especialmente quando você não sabe de antemão quantas voltas serão necessárias. A afirmativa I está errada porque, no laço enquanto, a condição precisa ser alterada em algum ponto da execução, direta ou indiretamente, para que o laço termine. Se nada mudar, o programa pode entrar em repetição infinita. Então, não basta dizer que ele roda até a condição ser satisfeita sem necessidade de modificar essa condição no algoritmo. A afirmativa II também está errada. O enunciado descreve recursão, que é quando uma função faz referência a si mesma. Corotina é outra coisa: é um mecanismo de execução cooperativa, em que rotinas podem suspender e retomar sua execução. Aqui a banca trocou os conceitos, uma confusão bem típica de prova. Já a afirmativa III está correta. Enquanto e repita são usados quando não se sabe exatamente quantas vezes o processo deve se repetir, e o repita realmente executa pelo menos uma vez porque a condição vem no final. Por isso, a resposta certa é a letra C.