GeraProva GeraProva Provas com IA para professores do Brasil
Computação5º anoBNCC EF15CO02Difícil⏱ longo

Explique como a escolha entre tipos de dados imutáveis e mutáveis afeta efeitos colaterais em um algoritmo que…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF15CO02

Construir e simular algoritmos, de forma independente ou em colaboração, que resolvam problemas simples e do cotidiano com uso de sequências, seleções condicionais e repetições de instruções.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Explique como a escolha entre tipos de dados imutáveis e mutáveis afeta efeitos colaterais em um algoritmo que atualiza uma agenda compartilhada entre várias threads; forneça pseudocódigo que minimize efeitos colaterais usando tipos imutáveis e explique a estratégia.

✍️ Questão dissertativa: veja abaixo a resposta esperada e a explicação.

Resposta esperada

1) Conceito e impacto: - Tipos mutáveis (por exemplo, lista) permitem que várias partes do programa alterem o mesmo objeto, causando efeitos colaterais e condições de corrida em ambientes concorrentes. - Tipos imutáveis (por exemplo, tupla, registro imutável) não podem ser alterados depois de criados; atualizações criam novos valores, evitando alterações inesperadas e facilitando raciocínio sobre o estado. 2) Estratégia para minimizar efeitos colaterais: - Representar a agenda como uma sequência imutável de compromissos. Em vez de modificar a estrutura, criar e devolver uma nova versão atualizada. - Usar sincronização leve (fila de mensagens ou bloqueio) apenas ao trocar referências imutáveis entre threads. 3) Pseudocódigo (estilo funcional/imperativo misto): fun atualizar_agenda(agenda_imutavel, novo_compromisso): // agenda_imutavel é uma lista imutável (por exemplo, tupla) if conflito(novo_compromisso, agenda_imutavel): return agenda_imutavel // não altera estado novo_lista = concatenar(agenda_imutavel, (novo_compromisso,)) return novo_lista // thread principal mantém referência atualizada de forma segura // troca de referência via mecanismo atômico/fila de mensagens // vantagem: cada atualização gera novo objeto; leitores antigos seguem consistentes 4) Justificativa final: - Usar imutabilidade reduz efeitos colaterais porque não há modificação in-place; facilita testes e evita bugs de concorrência. Quando desempenho ou memória forem críticos, combinar imutabilidade com estratégias de compartilhamento estrutural ou bloqueios bem definidos.

Explicação

A explicação aborda como a escolha entre tipos de dados imutáveis e mutáveis impacta a concorrência, destacando que tipos imutáveis evitam efeitos colaterais indesejados. A estratégia apresentada, que utiliza uma abordagem funcional para atualizar a agenda, minimiza a possibilidade de conflitos entre threads. Além disso, a justificativa final enfatiza os benefícios da imutabilidade em termos de segurança e facilidade de manutenção do código.

Raio-X da questão

Dificuldade Difícil
Bloom Criar
Leitura alto
Discriminação alto
Peso pedagógico alto
Autonomia do enunciado completo
Cobertura da habilidade multipla
🧪 Simulado🩺 Diagnóstico🧮 Exige cálculo🏠 Cotidiano🔗 Interdisciplinar⭐ Representativa✍️ interpretativa🧩 desafio
🎯 Conceito central

tipos de dados imutáveis

📌 Objetivo

avaliacao

🧱 Pré-requisitos

tipos de dados em programação · concorrência em algoritmos

📚 Reveja

Revisar conceitos de programação concorrente e tipos de dados em algoritmos.

⚠️ Erro mais comum

O aluno pode confundir a utilização de tipos mutáveis e imutáveis, não percebendo como isso impacta a segurança e a integridade dos dados em um ambiente concorrente.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

cientifico

Questões parecidas com resolução

Todas as questões de Programação - Tipos de dados

🔎 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

Ocorreu um erro inesperado. Recarregar X

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.