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

Descreva um algoritmo generalizado que receba uma matriz de dados (grid) e um parâmetro função 'valido(p)' que…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF15CO04

Aplicar a estratégia de decomposição para resolver problemas complexos, dividindo esse problema em partes menores, resolvendo-as e combinando suas soluções.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Descreva um algoritmo generalizado que receba uma matriz de dados (grid) e um parâmetro função 'valido(p)' que indica se um ponto pode ser explorado; o algoritmo deve coletar todas as regiões conectadas de pontos válidos. Inclua assinatura, pré-condições, pseudocódigo (iterativo ou recursivo) e explique como o parâmetro altera o comportamento sem mudar o corpo do algoritmo.

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

Resposta esperada

Assinatura: coletarRegioes(grid, valido) Pré-condições: grid é matriz m×n; valido(p) aceita coordenada ou valor; operações de vizinhança definidas (4 ou 8 vizinhos). Pseudocódigo (DFS iterativo): function coletarRegioes(grid, valido): m,n ? dimensões(grid) visitado ? matriz m×n false regioes ? lista vazia for i from 0 to m-1: for j from 0 to n-1: if not visitado[i][j] and valido(grid[i][j]): pilha ? [(i,j)] regiao ? lista vazia while pilha not empty: (r,c) ? pop(pilha) if visitado[r][c]: continue visitado[r][c] ? true if not valido(grid[r][c]): continue append regiao, (r,c) for cada vizinho (nr,nc) de (r,c) dentro dos limites: if not visitado[nr][nc]: push(pilha,(nr,nc)) append regioes, regiao return regioes Observações: - A função 'valido' determina se um ponto pertence a uma região (ex.: valor>limite, tipo específico). - O corpo do algoritmo não muda; basta passar diferentes implementações de 'valido' para alterar critérios (ex.: por cor, altitude, sensor). - Evite variáveis globais: 'visitado' e estruturas são locais à função para garantir reutilização e evitar efeitos colaterais. Expansão: pode usar BFS para ordem diferente ou adaptar vizinhança (4/8) sem modificar lógica principal, apenas a função de vizinhança ou 'valido'.

Explicação

A resposta apresenta um algoritmo claro e estruturado, utilizando uma abordagem de busca em profundidade (DFS) para explorar regiões conectadas em uma matriz. A flexibilidade do parâmetro 'valido' permite que diferentes critérios de validação sejam aplicados sem modificar a lógica central do algoritmo, demonstrando sua adaptabilidade. Além disso, a escolha de evitar variáveis globais e manter estruturas locais contribui para a reutilização e a segurança 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

algoritmo de busca em matriz

📌 Objetivo

avaliacao

🧱 Pré-requisitos

algoritmos e estruturas de dados · funções e parâmetros em programação

📚 Reveja

Revisar conceitos de algoritmos de busca e estruturas de dados.

⚠️ Erro mais comum

O aluno pode descrever um algoritmo que não considera corretamente a função 'valido(p)', resultando em regiões inválidas sendo incluídas.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de Decomposição

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