Pular para o conteúdo principal

Questão de Programação — .Net — FUNDATEC 2023

Programação.Net
Código
qq890181
Banca
FUNDATEC
Órgão
BRDE
Ano
2023
Nível
Superior
Cargo
Analista de Sistemas - Desenvolvimento de Sistemas
A plataforma .NET permite escrever aplicativos em linguagens como C#, F# ou Visual Basic. A Figura 3, abaixo, apresenta um trecho de código-fonte escrito na linguagem C#. 36.png 584×137 Figura 3 – Código-fonte em C# Qual das alternativas apresenta uma alteração em uma das linhas do código-fonte da Figura 1 que fará com que sejam impressos todos os elementos do array "nomes"?
  1. Astring[5] nomes = {"João", "Maria", "Paulo", "Silvia", "Vitor"};
  2. Bfor (int cont = 1; cont < 4; cont++)
  3. Cfor (int cont = 0; cont <= 4; cont++)
  4. DConsole.WriteLine("{cont}", nomes[cont]);
  5. EConsole.WriteLine("{5}", nomes[cont]);
Revelar gabarito e comentário

GabaritoC — for (int cont = 0; cont <= 4; cont++)

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Arrays e laços em C#

Gabarito: letra C. Para imprimir todos os 5 elementos do array nomes, o laço for deve percorrer os índices de 0 a 4, ou seja, cont = 0; cont <= 4; cont++. A alternativa C é a única que faz exatamente isso, garantindo que todos os elementos sejam acessados e impressos.

O que está em jogo

A questão testa dois conceitos fundamentais de programação em C#: indexação de arrays e estrutura de repetição for. Em C#, arrays são indexados a partir de 0, ou seja, o primeiro elemento está na posição 0, o segundo na posição 1, e assim por diante. Um array com 5 elementos (string[5]) tem índices válidos de 0 a 4. Qualquer tentativa de acessar o índice 5 resultaria em uma exceção IndexOutOfRangeException, pois esse índice não existe.

O laço for é uma estrutura de repetição que executa um bloco de código enquanto uma condição for verdadeira. Sua sintaxe é for (inicialização; condição; incremento). A inicialização define o valor inicial da variável de controle, a condição é avaliada antes de cada iteração (se verdadeira, o bloco executa; se falsa, o laço termina), e o incremento é executado ao final de cada iteração.

Para percorrer todos os elementos de um array de tamanho 5, o laço deve começar em 0 e continuar enquanto o índice for menor ou igual a 4 (ou menor que 5). Isso garante que os índices 0, 1, 2, 3 e 4 sejam visitados, imprimindo todos os elementos.

Exemplo prático

Considere o array string[] nomes = {"João", "Maria", "Paulo", "Silvia", "Vitor"};. Para imprimir todos os nomes, o laço correto seria:

for (int cont = 0; cont <= 4; cont++)
{
    Console.WriteLine(nomes[cont]);
}

Esse laço imprime:

João
Maria
Paulo
Silvia
Vitor

Se usássemos cont < 4, apenas os índices 0, 1, 2 e 3 seriam visitados, deixando de imprimir "Vitor". Se usássemos cont <= 5, o programa tentaria acessar o índice 5, que não existe, causando um erro.

A pegadinha da banca

A banca explora a confusão entre o tamanho do array e o último índice válido. Muitos candidatos, ao verem um array de 5 elementos, pensam que o laço deve ir até 5 (cont <= 5), mas isso está errado, pois o último índice é 4. A alternativa B (cont < 4) também é uma armadilha, pois faz o laço parar antes do último elemento. A alternativa C (cont <= 4) é a única que percorre todos os índices corretamente.

NÃO CAIA NESSA!

A banca troca o limite do laço para confundir. Lembre-se: um array de tamanho N tem índices de 0 a N-1. Para percorrê-lo completamente, use cont < N ou cont <= N-1. Aqui, N=5, então cont <= 4 é o correto.

  1. 1Array: índices 0 a 4
  2. 2Laço: cont = 0
  3. 3Condição: cont <= 4
  4. 4Imprime nomes[cont]
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

A declaração string[5] nomes = {"João", "Maria", "Paulo", "Silvia", "Vitor"}; está incorreta em C#. A sintaxe correta para declarar e inicializar um array é string[] nomes = {...} ou string[] nomes = new string[5] {...}. A forma string[5] nomes não é válida na declaração com inicialização. Além disso, mesmo que a declaração estivesse correta, ela não altera o laço, que é o que precisa ser corrigido para imprimir todos os elementos.

Alternativa B — ❌ Incorreta

O laço for (int cont = 1; cont < 4; cont++) começa em 1 e vai até 3 (pois cont < 4). Isso significa que ele acessaria apenas os índices 1, 2 e 3, imprimindo "Maria", "Paulo" e "Silvia", mas deixando de fora "João" (índice 0) e "Vitor" (índice 4). Portanto, não imprime todos os elementos.

Alternativa C — ✅ Correta ⟵ GABARITO

O laço for (int cont = 0; cont <= 4; cont++) começa em 0 e vai até 4, inclusive. Isso percorre exatamente os índices 0, 1, 2, 3 e 4, que são todos os índices válidos do array de 5 elementos. Assim, todos os elementos são impressos.

Alternativa D — ❌ Incorreta

A instrução Console.WriteLine("{cont}", nomes[cont]); está incorreta porque a sintaxe de interpolação de strings em C# usa $ antes da string, como em $"{cont}". Sem o $, o texto {cont} é tratado como literal, e o segundo argumento nomes[cont] é ignorado. O correto seria Console.WriteLine($"{cont}"); ou Console.WriteLine(nomes[cont]);. Além disso, mesmo corrigindo a interpolação, essa linha apenas imprime o índice, não o elemento do array.

Alternativa E — ❌ Incorreta

A instrução Console.WriteLine("{5}", nomes[cont]); está incorreta por dois motivos. Primeiro, a sintaxe de interpolação está errada (falta o $). Segundo, mesmo que estivesse correta, {5} se referiria ao sexto argumento, que não existe, causando um erro em tempo de execução. O correto seria Console.WriteLine($"{nomes[cont]}"); para imprimir o elemento na posição cont.

Gabarito: letra C

Link permanente: /questoes/qq890181