Dado dois trechos de algoritmos em linguagem C e considerand...
Algoritmo A a= 0; for (; i != 10; i+=2){ a= a+1; }
Algoritmo B a= 0; do { a= a+1; i= i+2; }while (i <10);
.O valor de a será o mesmo em ambos os algoritmos para qualquer valor de i. .Para i=2, o valor final de a será 4 para ambos os algoritmos. .Os algoritmos funcionam corretamente para i inicializado com valor negativo.
É CORRETO apenas o que se afirma em:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: B - Apenas II.
Para entender por que a alternativa II é a correta, precisamos analisar os algoritmos A e B dados e como eles alteram o valor de a para um valor inicial de i igual a 2. O Algoritmo A é um laço for que aumenta o valor de i em 2 a cada iteração e incrementa a em 1 até que i seja diferente de 10. Já o Algoritmo B é um laço do-while que também incrementa a em 1 e i em 2, mas o teste de continuação é feito no final do laço, garantindo que o bloco de código seja executado pelo menos uma vez.
Começamos com i = 2, e no Algoritmo A, o laço for incrementará i para 4, 6, 8 e então para 10, mas nesse ponto a condição i != 10 falhará e o laço terminará. Portanto, a será incrementado 4 vezes, resultando em a = 4.
No Algoritmo B, temos um comportamento similar com o laço do-while. Iniciando com i = 2, o laço executará e incrementará a enquanto incrementa i por 2. Quando i atingir 10, a condição i < 10 não será mais verdadeira e o laço terminará. Igual ao Algoritmo A, a é incrementado 4 vezes, resultando em a = 4.
Agora, vamos analisar as outras afirmações:
I. "O valor de a será o mesmo em ambos os algoritmos para qualquer valor de i." Esta afirmação é incorreta pois o Algoritmo A não executa o corpo do laço se iniciarmos com i = 10, já que a condição é verificada antes da execução do corpo do laço. Isso resultaria em a = 0. No entanto, o Algoritmo B executará o corpo do laço pelo menos uma vez devido à natureza do laço do-while, incrementando a para 1. Os valores de a serão diferentes nesse caso.
III. "Os algoritmos funcionam corretamente para i inicializado com valor negativo." Esta afirmação também é incorreta. O Algoritmo A funciona corretamente porque continua incrementando i até que não seja mais diferente de 10. No entanto, no Algoritmo B, se começarmos com um valor de i negativo, o laço do-while funcionará indefinidamente porque a condição i < 10 será sempre verdadeira e i nunca alcançará o valor 10, pois está sempre incrementando.
Portanto, a única afirmação correta é a II, que afirma que para i = 2, o valor final de a será 4 para ambos os algoritmos, o que é verdadeiro conforme explicado acima. Por isso, a alternativa B é a única correta.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Testei ambos os códigos com valores negativos para i, e mesmo assim o código mencionado do laço do-while funcionou normalmente.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo