Quanto vale k no fim da execução do seguinte trecho de códig...

Próximas questões
Com base no mesmo assunto
Q2319248 Programação

Quanto vale k no fim da execução do seguinte trecho de código em linguagem C?  


k = 0;

for (i=1; i <= n; i++)

for(j = i; j <= n; j++)

k = k + 1;

 . . . 

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa Correta: D - n(n+1)/2

Vamos explorar esta questão, que aborda um trecho de código em linguagem C. Esse tema é importante em concursos, pois avalia a capacidade do candidato de entender estrutura de laços (loops) e a manipulação de variáveis em iterações aninhadas.

O código dado é:

k = 0;

for (i = 1; i <= n; i++)

for (j = i; j <= n; j++)

k = k + 1;

Para resolver a questão, precisamos analisar quantas vezes o código k = k + 1; é executado.

O for mais externo inicia com i variando de 1 até n. Para cada valor de i, o for mais interno vai de j = i até n. Portanto, a variável k será incrementada um número de vezes que depende dos valores percorridos pelos dois laços.

Vamos entender melhor:

  • Para i = 1, j varia de 1 a n (executa n vezes)
  • Para i = 2, j varia de 2 a n (executa n-1 vezes)
  • Para i = 3, j varia de 3 a n (executa n-2 vezes)
  • ...
  • Para i = n, j varia de n até n (executa 1 vez)

O total de execuções de k = k + 1 é a soma de todas essas iterações:

n + (n-1) + (n-2) + ... + 1

Esta é a soma dos primeiros n números inteiros, que pode ser calculada pela fórmula:

S = n(n + 1)/2

Portanto, ao final do código, o valor de k será n(n + 1)/2, confirmando que a alternativa correta é a alternativa D.

Agora, vamos analisar as alternativas incorretas:

  • A - n−1: Esta alternativa está incorreta porque subestima a quantidade de iterações. A função cresce mais rapidamente que linear.
  • B - n: Também subestima, pois não leva em conta o somatório das iterações do laço interno.
  • C - (n2−n)/2: Embora se aproxime da forma correta, esta alternativa calcula a quantidade de iterações de forma errada.
  • E - n3: Superestima a quantidade de iterações, resultando em um número muito maior que o real.

Com isso, fica claro que a compreensão dos laços aninhados e das fórmulas de somatório é crucial para resolver questões desse tipo. Continue praticando para melhorar sua habilidade em análise de código!

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo