Dado dois trechos de algoritmos em linguagem C e considerand...

Próximas questões
Com base no mesmo assunto
Q1950061 Programação
Dado dois trechos de algoritmos em linguagem C e considerando que o valor de i será lido do usuário
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: 
Alternativas

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