Pular para o conteúdo principal

Questão de Programação — Frameworks em Programação — FUNDATEC 2023

ProgramaçãoFrameworks em Programação
Código
qq897134
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2023
Nível
Superior
Cargo
ANC - Analista em Computação - Ênfase em Desenvolvimento Front-End
Verifique o código a seguir que roda na tecnologia NodeJS:Imagem associada para resolução da questãoSobre esse trecho, é INCORRETO afirmar que:
  1. ANa linha 02, o valor "csv-parser" como parâmetro da função "require()" diz respeito ao uso de uma biblioteca para leitura e interpretação de um arquivo em formato CSV.
  2. BNa linha 06, a função "createReadStream()" abre o fluxo de leitura do arquivo "dados.txt".
  3. CNa linha 07, a função pipe() recebe a função csv() que converte os dados do formato CSV para o formato de string.
  4. DNa linha 09, ocorre a leitura de cada linha do arquivo e o conteúdo é inserido numa posição do array "res".
  5. ENa linha 12, ocorre a soma dos valores da coluna "valor" em todas as linhas do arquivo usando a função "reduce()".
Revelar gabarito e comentário

GabaritoC — Na linha 07, a função pipe() recebe a função csv() que converte os dados do formato CSV para o formato de string.

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”.

Node.js: fluxo de leitura de arquivos com csv-parser

Gabarito: letra C. A afirmação incorreta é a que diz que a função pipe() recebe a função csv() que converte os dados do formato CSV para o formato de string. Na verdade, o csv() do pacote csv-parser converte os dados CSV em objetos JavaScript (linhas como objetos), não em strings — e é exatamente essa troca de conceito que a banca explora.

O trecho de código apresentado é um exemplo clássico de processamento de arquivos CSV em Node.js. Vamos entender o que cada parte faz, porque é isso que a questão cobra: o candidato precisa conhecer o funcionamento das funções require(), createReadStream(), pipe(), csv() e reduce() dentro do ecossistema Node.js.

Primeiro, o require('csv-parser') carrega o módulo csv-parser, uma biblioteca que transforma dados CSV em objetos JavaScript. O createReadStream('dados.txt') abre um fluxo de leitura do arquivo, ou seja, começa a ler o arquivo em pedaços (chunks), sem carregar tudo na memória de uma vez — isso é eficiente para arquivos grandes. O método pipe() conecta esse fluxo de leitura a outro fluxo, permitindo que os dados fluam de um para o outro. No caso, o pipe(csv()) conecta o fluxo de leitura ao parser CSV, que interpreta cada linha do arquivo e a transforma em um objeto JavaScript com as colunas como propriedades.

A linha 09, com o evento 'data', é onde cada linha já convertida em objeto é processada: o código pega esse objeto e o insere no array res. Por fim, a linha 12 usa reduce() para somar os valores da coluna valor de todos os objetos do array, acumulando o total.

A pegadinha está justamente na alternativa C: o csv() não converte para string — ele converte para objeto. O csv-parser lê o arquivo linha por linha e, para cada linha, emite um objeto com as colunas como chaves. É um erro comum confundir a saída do parser com uma string, mas a biblioteca trabalha com objetos JavaScript.

Guarde essa distinção: fluxo de leitura (createReadStream) → parser (csv()) → evento de dados ('data') → acumulação (reduce). É nessa cadeia que as alternativas se dividem.

  1. 1require('csv-parser')
  2. 2createReadStream()
  3. 3pipe(csv())
  4. 4Evento 'data'
  5. 5reduce()
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta

A afirmação está correta. O require('csv-parser') carrega a biblioteca csv-parser, que é usada para ler e interpretar arquivos CSV. O require() é a função do Node.js que importa módulos, e o argumento 'csv-parser' é o nome do pacote instalado via npm. A biblioteca transforma o conteúdo CSV em objetos JavaScript, facilitando o processamento.

Alternativa B — ✅ Correta

A afirmação está correta. createReadStream('dados.txt') é um método do módulo fs (file system) do Node.js que abre um fluxo de leitura do arquivo especificado. Isso significa que o arquivo é lido em partes, de forma assíncrona, sem bloquear a execução do programa. É a forma recomendada para ler arquivos grandes.

Alternativa C — ❌ Incorreta ⟵ GABARITO

A afirmação está incorreta. O pipe() recebe a função csv(), mas essa função não converte os dados para string. O csv() do pacote csv-parser converte cada linha do arquivo CSV em um objeto JavaScript, onde as colunas viram propriedades. Por exemplo, uma linha nome,idade\nJoão,30 vira o objeto { nome: 'João', idade: '30' }. A conversão para string não é o papel do parser — ele estrutura os dados em objetos para facilitar o acesso.

Alternativa D — ✅ Correta

A afirmação está correta. Na linha 09, o evento 'data' é disparado para cada linha do arquivo que foi convertida em objeto pelo parser. O código dentro do callback recebe esse objeto (geralmente chamado de row ou data) e o insere no array res usando res.push(). Assim, ao final, res contém todos os objetos representando as linhas do arquivo.

Alternativa E — ✅ Correta

A afirmação está correta. Na linha 12, a função reduce() é usada para somar os valores da coluna valor de todos os objetos do array res. O reduce() percorre o array e acumula um resultado, começando com um valor inicial (geralmente 0) e somando item.valor a cada iteração. O resultado final é a soma total dos valores.

NÃO CAIA NESSA!

A banca troca o tipo de saída do csv(). O candidato que sabe que o parser transforma CSV em objetos acerta na hora; quem imagina que vira string cai na alternativa C. Lembre-se: csv-parser emite objetos JavaScript, não strings.

Gabarito: letra C — a única afirmação incorreta é a que diz que o csv() converte para string.

Link permanente: /questoes/qq897134