Questão nº 46

Questão de Tecnologia da Informação · CESGRANRIO BASA 02/2021 (nº 46)

CESGRANRIO2021Técnico Científico - Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Bver comentário ↓

Um programador teve por tarefa escrever uma função Javascript que receba uma string como parâmetro e retorne outra
string. A string retornada deve conter os mesmos caracteres que a string recebida, sem espaços em branco.
Exemplo:
String recebida: `' B r a s il '` (total de 14 caracteres e 8 espaços em branco)
String retornada: `'Brasil'` (total de 6 caracteres e nenhum espaço em branco)

Considere que, na função a ser escrita, duas aspas simples seguidas (`''`) representam uma string vazia, e duas aspas
simples com um espaço entre elas (`' '`) representam um caracter de espaço em branco.

Qual função realiza o que foi pedido a esse programador?

Resposta comentada

Gabarito Alternativa B

Conceito-chave: A função precisa remover os espaços em branco, ou seja, construir uma nova string só com os caracteres que não são espaço. A alternativa B faz isso com recursão: ela pega o primeiro caractere e, se ele não for espaço, mantém; se for, descarta; e chama a função de novo para o resto da string.

  • (A) Incorreta: A lógica aux=aux+str.slice(i+1,str.length) dentro do while duplica trechos da string a cada espaço encontrado, e não remove nada; o resultado final é uma string maior e bagunçada, não a original sem espaços.
  • (B) Correta: É o gabarito. A recursão percorre a string caractere por caractere: se o primeiro é espaço, descarta e chama para o resto; se não é espaço, concatena esse caractere com o resultado da chamada recursiva. Quando a string fica vazia (length===0), retorna ''. Isso remove todos os espaços.
  • (C) Incorreta: Esta função faz o oposto: ela só concatena os caracteres que são espaços (if(str[i]===' ') aux=aux+str[i]), retornando uma string com todos os espaços e nenhuma letra.
  • (D) Incorreta: A pegadinha está no for(let c in str): em JavaScript, for...in itera sobre os índices (números), não sobre os caracteres. Então c é um número (ex: 0, 1, 2), e c!==' ' é sempre verdadeiro, resultando em uma string com os números dos índices (ex: "012345"), não os caracteres.
  • (E) Incorreta: O erro está em str.slice(str.length) — isso retorna uma string vazia (pois slice do fim até o fim). A recursão nunca avança, então a função entra em loop infinito (ou estoura a pilha), pois str nunca diminui de tamanho.

Fonte: CESGRANRIO BASA 02/2021 Técnico Científico - Tecnologia da Informação. Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho