GeraProva GeraProva Provas com IA para professores do Brasil
Computação8º anoBNCC EF69CO02Difícil⏱ medio

Considere uma matriz M[R][C] de registros armazenada em memória no formato row-major. Em um algoritmo que…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF69CO02

Elaborar algoritmos que envolvam instruções sequenciais, de repetição e de seleção usando uma linguagem de programação.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Considere uma matriz M[R][C] de registros armazenada em memória no formato row-major. Em um algoritmo que percorre M com laços aninhados, qual ordem de iteração (linha externa, coluna interna OU coluna externa, linha interna) oferece melhor localidade de dados e por quê?

  1. A) Utilizar um laço único que percorre todos os elementos.
  2. B) Iterar aleatoriamente por linhas e colunas.
  3. C) Laço externo sobre linhas e laço interno sobre colunas (iterar por linha, depois por coluna) para aproveitar a localidade em row-major.
  4. D) Devemos percorrer a matriz na ordem inversa (C[0][0] -> C[R-1][C-1]).
  5. E) Laço interno sobre linhas e externo sobre colunas.

✅ Resposta correta: alternativa C

Resolução passo a passo

  1. Em row-major, os elementos de uma mesma linha ficam em posições consecutivas da memória. Assim, a matriz M[R][C] é guardada como M[0][0], M[0][1], ..., M[0][C-1], depois M[1][0], e assim por diante.
  2. Para aproveitar a localidade espacial (o cache carrega blocos contíguos de memória), o acesso sucessivo deve seguir essa mesma ordem. Isso significa que o laço externo percorre as linhas e o laço interno percorre as colunas, como descrito na alternativa C.
  3. Com essa ordem, cada bloco trazido para o cache é totalmente usado antes de ser substituído, reduzindo falhas de cache (cache misses).
  4. A alternativa A está errada, pois um laço único não define a ordem de acesso às posições de uma matriz bidimensional e não resolve o problema de localidade por si só; além disso, a questão pergunta sobre laços aninhados.
  5. A alternativa B está errada, pois acessos aleatórios destroem a localidade espacial, em vez de melhorá-la.
  6. A alternativa D está errada, pois a ordem inversa ainda percorre a matriz de forma contígua apenas no sentido decrescente; a questão compara linha externa com coluna interna, e a ordem inversa não é a resposta pedida pelo enunciado.
  7. A alternativa E está errada, pois colocar as linhas no laço interno faz o acesso saltar de C em C posições na memória, o que piora a localidade.
  8. Conclusão: a resposta correta é a C, que coincide com o gabarito oficial.

💡 Dica: Considere a estrutura de armazenamento da matriz ao responder.

Alternativa por alternativa

A Erradaerro: Conceitual

O aluno acredita que um único laço simplifica o acesso e garante melhor desempenho, sem perceber que a questão trata da ordem de acesso em laços aninhados sobre a estrutura bidimensional.

B Erradaerro: Senso comuma que mais engana

O aluno supõe que variar aleatoriamente os índices distribui melhor os acessos, sem saber que a localidade depende de acessos sequenciais na memória.

Por que engana: O aluno pode confundir a ordem de iteração, escolhendo a que não aproveita a localidade de dados, como a opção de percorrer aleatoriamente.

C Correta

Em row-major elementos consecutivos da mesma linha são contíguos na memória; variar a coluna no laço interno acessa posições adjacentes, reduzindo faltas de cache.

D Erradaerro: Interpretação

O aluno confunde a ordem de percurso com a questão da localidade, imaginando que inverter o sentido muda o padrão de acesso à memória, quando o que importa é a contiguidade dentro de cada linha.

E Erradaerro: Conceitual

O aluno inverte a relação entre laços e índices, achando que varrer colunas no laço externo e linhas no interno favorece o row-major, quando na verdade faz o acesso pular grandes saltos na memória.

Raio-X da questão

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

localidade de dados

📌 Objetivo

diagnostico

🧱 Pré-requisitos

matrizes em programação · row-major e column-major

📚 Reveja

Revisar conceitos de localidade de dados em matrizes.

⚠️ Erro mais comum

O aluno pode confundir a ordem de iteração, escolhendo a que não aproveita a localidade de dados, como a opção de percorrer aleatoriamente.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

cientifico

Questões parecidas com resolução

Todas as questões de Matrizes e registros

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