Módulo 4 - Matrizes: tabelas, grades e tabuleiros

A matriz: uma lista de listas

8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 08/07/2026

O que você vai aprender

  • Entender a matriz como uma lista de listas (linhas empilhadas).
  • Acessar um valor da matriz pelas coordenadas linha e coluna.
  • Diferenciar a lista de uma dimensão da matriz de duas dimensões.
  • Ler o valor de uma célula a partir de dois índices.

Quando a fila não basta

A lista do curso básico é uma fila: os nomes da chamada, os preços do carrinho, uma coisa atrás da outra. Ela resolve muito, mas empaca quando o dado tem duas dimensões. Pense num boletim: cada aluno tem quatro notas, uma por bimestre. Você poderia jogar tudo numa lista gigante, mas como saber onde termina um aluno e começa o outro? E num tabuleiro de jogo da velha, com três linhas e três colunas, uma lista de nove posições esconde a estrutura de grade que dá sentido ao jogo. Para esses casos, a informação pede uma tabela de verdade, e a estrutura que representa uma tabela é a matriz.

A sacada da matriz é simples e elegante: em vez de uma lista de valores, uma lista de listas. Cada linha da tabela vira uma lista pequena, e a matriz é a lista que guarda essas linhas. Assim, o boletim vira uma lista em que cada item é a lista de notas de um aluno; o tabuleiro vira uma lista em que cada item é uma linha de três casas. A grade que você enxerga no papel existe de verdade dentro do programa, com as linhas empilhadas uma sobre a outra. E, como toda lista, cada nível tem posições numeradas, o que leva às coordenadas.

Uma grade 3 por 3 com as linhas numeradas 0, 1, 2 à esquerda e as colunas numeradas 0, 1, 2 no topo. A célula da linha 1 e coluna 2 está destacada, com um rótulo matriz[1][2] apontando para ela. Ao lado, a mesma matriz aparece desmontada como três listas empilhadas, deixando claro que é uma lista de listas.
A matriz é uma grade de linhas e colunas, e por dentro é uma lista de listas. matriz[1][2] aponta a célula destacada.

Duas coordenadas para cada valor

Na lista, um índice bastava: nomes[0] é o primeiro nome. Na matriz, você precisa de dois, porque o valor mora num cruzamento de linha e coluna. A convenção universal é linha primeiro, coluna depois: matriz[linha][coluna]. É a mesma lógica de achar a cadeira no cinema pela fila e pelo número, ou de dar um xeque-mate dizendo a casa pela coluna e pela linha. O primeiro colchete escolhe qual das listas internas (qual linha), e o segundo escolhe a posição dentro dela (qual coluna). Como nas listas do curso básico, a contagem nas linguagens reais começa em zero, então a primeira linha é a linha 0 e a primeira coluna é a coluna 0.

boletim <- [
  [8, 7, 9, 6],   // aluno 0
  [5, 6, 4, 7],   // aluno 1
  [10, 9, 8, 9]   // aluno 2
]
// nota do aluno 1 no 3º bimestre (coluna 2):
escreva(boletim[1][2])   // mostra 4
// nota do aluno 2 no 1º bimestre (coluna 0):
escreva(boletim[2][0])   // mostra 10

Cada linha é a lista de notas de um aluno. boletim[1][2] é a linha 1 (segundo aluno), coluna 2 (terceiro bimestre).

🎮 Jogo da aula

Leia a célula certa

Use as coordenadas linha e coluna (começando em 0) para descobrir o valor que o programa mostra.

grade <- [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]
escreva(grade[2][1])

Linha e coluna não se invertem impunemente

O erro mais comum com matrizes é trocar a ordem das coordenadas. Escrever matriz[coluna][linha] quando queria matriz[linha][coluna] costuma não gerar erro nenhum, porque o cruzamento invertido ainda é uma célula válida da grade, só que a errada. Num boletim 3 por 4 (três alunos, quatro notas), pedir a nota[3][1] em vez de nota[1][3] estoura os limites e quebra, mas num quadrado, como um tabuleiro 3 por 3, o programa devolve um valor plausível e errado, o pior tipo de bug. A regra mental que não falha: primeiro em qual fileira, depois em qual posição da fileira. Linha antes, coluna depois, sempre.

Teste rápido

Por que uma matriz é descrita como uma lista de listas?

Perguntas frequentes

Matriz e lista são a mesma coisa?
Não. A lista tem uma dimensão (uma fila de valores, um índice) e a matriz tem duas (linhas e colunas, dois índices). A matriz é construída a partir de listas (é uma lista de listas), mas representa uma tabela, algo que a lista simples não faz bem. Cada uma serve a um tipo de dado.
Por que a contagem começa em zero?
É a convenção da maioria das linguagens, herdada das listas: a primeira posição é a de índice 0. Então numa matriz a primeira linha é a 0 e a primeira coluna é a 0. Pode parecer estranho no começo, mas vira automático com a prática, e é bom acostumar desde o pseudocódigo.
A ordem é sempre linha antes de coluna?
Sim, é a convenção padrão: matriz[linha][coluna]. Assim como cadeira de cinema é fila e número, e endereço de célula é linha e coluna. Trocar a ordem devolve a célula errada e é fonte de bug, principalmente em matrizes quadradas, onde o valor invertido existe e não dá erro.
Todas as linhas precisam ter o mesmo tamanho?
Nas matrizes retangulares clássicas, sim: toda linha tem o mesmo número de colunas, formando uma grade perfeita. Algumas linguagens permitem linhas de tamanhos diferentes (as chamadas listas irregulares), mas para tabelas, tabuleiros e planilhas o normal e o mais previsível é manter todas as linhas iguais.
Dá para ter matriz de três dimensões?
Dá: uma lista de matrizes vira uma estrutura 3D, útil para coisas como um cubo de dados ou vários tabuleiros. O acesso ganha um terceiro índice. Na prática do dia a dia, duas dimensões cobrem a maioria dos casos; três ou mais aparecem em áreas específicas, como gráficos e ciência de dados.
Como isso aparece nas linguagens reais?
Em Python, a forma mais comum é uma lista de listas, exatamente como no pseudocódigo. Outras linguagens têm arrays bidimensionais nativos. Bibliotecas especializadas oferecem matrizes otimizadas para cálculo. A ideia central de linhas, colunas e dois índices é a mesma em todas.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.