Questão nº 34
Questão de Tecnologia da Informação · FCC TRT17 2022 (nº 34)
Considere o programa em linguagem C abaixo, que deve ser executado em condições ideais.
```c
#include <stdio.h>
#define MAX 5
int j=0, vet[MAX] = {7, 5, 8, 15, 10};
int main() {
printf("\nVetor normal\n");
for
I
printf("vet[%i]= %i ", j,vet[j]);
for
II
printf("vet[%i]= %i ", j,vet[j]);
return 0;
}
```
Para que a saída do programa seja:
```
Vetor normal
vet[0]= 7 vet[1]= 5 vet[2]= 8 vet[3]= 15 vet[4]= 10
Vetor invertido
vet[4]= 10 vet[3]= 15 vet[2]= 8 vet[1]= 5 vet[0]= 7
```
As lacunas I e II devem ser preenchidas, correta e respectivamente, por:
- A
(j=1; j <= MAX; j++) e (j=MAX; j >= 1; j--) {printf("\n\nVetor invertido\n"); - B`(, j < MAX, j+=1) e (j=MAX-1, j >= 0, j--; printf("\n\nVetor invertido\n") )`
- C
(j=0; j <= MAX; j++) e (j=MAX; j >= 0; j-=1) { printf("\n\nVetor invertido\n"), - D`(; j < MAX; j+=1) e (; j >= 0, printf("\n\nVetor invertido\n"); j-=1)`
- E
(; j < MAX; j++) e (printf("\n\nVetor invertido\n"), j=MAX-1; j >= 0; j--)(alternativa correta)
Resposta comentada
Gabarito Alternativa E
Um laço for em C é uma estrutura de repetição que permite executar um bloco de código várias vezes, controlando o número de repetições através de uma variável de controle que é inicializada, testada por uma condição e atualizada a cada iteração. Para percorrer um array (uma coleção de elementos do mesmo tipo) de tamanho N, os índices válidos vão de 0 a N-1.
(A) Incorreta: O primeiro laço (I) começa j em 1 (ignorando vet[0]) e a condição j <= MAX tenta acessar vet[MAX], que está fora dos limites do array. O segundo laço (II) começa j em MAX (fora dos limites) e a chamada printf está sintaticamente incorreta na parte de inicialização do for.
(B) Incorreta: O segundo laço (II) tenta colocar a chamada printf na parte de incremento/decremento do for (j--; printf(...)), o que é sintaticamente inválido para o propósito de imprimir uma mensagem única antes do laço.
(C) Incorreta: O primeiro laço (I) tem a condição j <= MAX, o que tenta acessar vet[MAX] (fora dos limites). O segundo laço (II) começa j em MAX (fora dos limites) e a chamada printf está sintaticamente incorreta na parte de inicialização do for.
(D) Incorreta: O segundo laço (II) não inicializa j corretamente para a inversão (deveria ser MAX-1) e tenta colocar a chamada printf na parte da condição do for (j >= 0, printf(...)), o que faria a mensagem ser impressa a cada iteração, além de ser uma construção incomum e confusa para o objetivo.
(E) Correta: O primeiro laço (I) (; j < MAX; j++) está correto: j já é 0 (global), a condição j < MAX (0 a 4) é ideal para percorrer o vetor do início ao fim, e j++ incrementa o índice. O segundo laço (II) (printf("\n\nVetor invertido\n"), j=MAX-1; j >= 0; j--) utiliza o operador vírgula na inicialização para primeiro imprimir a mensagem "Vetor invertido" e depois inicializar j com MAX-1 (4), que é o último índice válido do vetor. A condição j >= 0 e o decremento j-- garantem que o vetor seja percorrido do último ao primeiro elemento, gerando a saída desejada.
Fonte: FCC TRT17 2022 Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.