Em um algoritmo que copia uma matriz de registros em que cada registro contém referências a objetos texto…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Explorar e construir a solução de problemas por meio de refinamentos, utilizando diversos níveis de abstração desde a especificação até a implementação.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Em um algoritmo que copia uma matriz de registros em que cada registro contém referências a objetos texto, qual técnica garante que as cópias não compartilhem referências e possam ser modificadas independentemente?
- A) Criar uma matriz vazia, sem copiar registros.
- B) Cópia rasa (shallow copy).
- C) Cópia aleatória dos registros sem uma estratégia definida.
- D) Cópia profunda (deep copy).
- E) Referenciar os objetos originais em vez de copiá-los.
✅ Resposta correta: alternativa D
Resolução passo a passo
- A questão pergunta qual técnica faz com que as cópias não compartilhem referências, ou seja, que alterar uma cópia não afete a outra nem os objetos originais.
- Os registros contêm referências a objetos texto. Ao copiar apenas a estrutura externa (a matriz e os registros), os objetos texto continuam sendo compartilhados entre original e cópia, pois apenas as referências são duplicadas.
- A cópia profunda (deep copy) duplica recursivamente tudo o que é referenciado, incluindo os objetos texto. Assim, cada cópia possui seus próprios objetos independentes, e modificações em uma não afetam as outras. Esta é a alternativa correta.
- A alternativa A está errada, pois uma matriz vazia não copia os dados, então não há cópia do conteúdo a ser modificado. A alternativa B está errada, pois a cópia rasa cria novos registros, mas mantém as mesmas referências aos objetos texto, que continuam compartilhados. A alternativa C está errada, pois copiar registros aleatoriamente não é uma técnica definida e não garante independência. A alternativa E está errada, pois referenciar os objetos originais é justamente o oposto de criar cópias independentes.
- Conclusão: o gabarito oficial D está correto, de acordo com a análise feita de forma independente.
💡 Dica: Considere como as referências internas são tratadas ao copiar os registros.
Alternativa por alternativa
Imagina que não copiar nenhum registro evita o compartilhamento de referências, sem perceber que uma matriz vazia simplesmente não contém os dados que deveriam ser copiados.
Acredita que criar novos registros na matriz já garante objetos independentes, sem perceber que os objetos texto referenciados continuam sendo os mesmos na cópia rasa.
Por que engana: Confundir cópia rasa com cópia profunda e supor que copiar a matriz também duplica automaticamente os objetos referenciados por cada registro.
Supõe que copiar os elementos de forma aleatória já separa as referências, ignorando que a independência depende de um método de duplicação definido e não da ordem da cópia.
A cópia profunda cria cópias dos registros e dos objetos texto referenciados. Assim, as cópias podem ser modificadas sem alterar os objetos da matriz original.
Entende que reaproveitar os objetos originais economiza memória e, por isso, não percebe que isso mantém exatamente o compartilhamento de referências que a questão quer eliminar.
Raio-X da questão
cópia profunda de estruturas
avaliacao
Referências a objetos em estruturas · Diferença entre cópia rasa e profunda
Revise a diferença entre cópia rasa e cópia profunda, especialmente quanto às referências a objetos internos.
Confundir cópia rasa com cópia profunda e supor que copiar a matriz também duplica automaticamente os objetos referenciados por cada registro.
ciencia_tecnologia
tomada_decisao
abstrato
Questões parecidas com resolução
- Para reduzir uso de memória ao armazenar textos repetidos em muitos registros de uma matriz, qual técnica deve ser…
- Qual das alternativas abaixo NÃO corresponde a uma operação típica de matrizes em programação ou à característica de…
- Ao projetar uma função que recebe uma grande matriz de dados para processamento sem duplicar memória, que decisão sobre…
- Em um algoritmo, uma função recebe um vetor chamado dados que não deve ser alterado. Para garantir que a variável…
- Para tornar um algoritmo reutilizável e seguro para execução paralela, qual prática relacionada a variáveis e efeitos…
- Você é programador e precisa desenvolver um sistema que armazene dados de usuários em uma matriz. Como garantir que…
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
