O que são matrizes
Entenda como matrizes organizam dados em linhas e colunas, aprenda a usar duas coordenadas e diferencie estruturas retangulares de coleções irregulares.

Uma matriz organiza elementos em linhas e colunas
Uma matriz é uma organização bidimensional de elementos: cada valor ocupa o encontro entre uma linha e uma coluna. Enquanto um vetor usa uma posição para localizar um elemento, uma matriz usa duas coordenadas.
Considere temperaturas registradas em três dias e quatro horários:
temperaturas = [
[18, 20, 21, 19],
[17, 19, 23, 20],
[16, 18, 22, 21]
]
Cada linha representa um dia. Cada coluna representa um horário fixo. O valor 23 pertence ao segundo dia e ao terceiro horário.
Esse arranjo é uma matriz 3 × 4: três linhas e quatro colunas. A ordem importa — 3 × 4 não descreve a mesma forma que 4 × 3.
Vetor e matriz respondem a perguntas espaciais diferentes
Um vetor organiza elementos em uma sequência. Uma posição basta para responder “qual elemento está no índice 2?”.
Uma matriz organiza elementos em uma grade. São necessárias duas informações: “qual linha?” e “qual coluna?”.
Imagine doze assentos. Um vetor pode numerá-los de 0 a 11. Uma matriz pode organizá-los em três fileiras e quatro lugares por fileira. A segunda representação torna natural perguntar pelo assento da linha 1, coluna 2, ou pelos assentos vizinhos na mesma fileira.
Escolha a matriz quando as duas dimensões fazem parte do significado dos dados, não apenas para deixar a impressão visual de uma tabela.
Linha, coluna, célula e dimensão têm papéis distintos
Na matriz de temperaturas:
- linha reúne valores do mesmo dia;
- coluna reúne valores do mesmo horário em dias diferentes;
- célula é a posição formada pelo encontro de uma linha com uma coluna;
- elemento é o valor armazenado na célula;
- dimensão descreve quantas linhas e colunas existem;
- coordenadas identificam uma célula específica.
Quando a indexação começa em zero, uma matriz com três linhas e quatro colunas possui:
índices de linha válidos: 0, 1, 2
índices de coluna válidos: 0, 1, 2, 3
quantidade de elementos: 3 × 4 = 12
temperaturas[1][2], a primeira coordenada escolhe a linha e a segunda escolhe a coluna.Não confunda quantidade com último índice. Três linhas produzem o último índice de linha 2; quatro colunas produzem o último índice de coluna 3.
Acesse uma célula com duas coordenadas
Em uma representação por coleções aninhadas, o acesso acontece em duas etapas:
temperaturas[1] -> [17, 19, 23, 20]
temperaturas[1][2] -> 23
Primeiro, [1] seleciona a segunda linha. Depois, [2] seleciona o terceiro elemento daquela linha.
Uma forma genérica de expressar o acesso é:
valor <- matriz[indiceLinha][indiceColuna]
Para que a coordenada seja válida em uma matriz retangular:
0 <= indiceLinha < quantidadeLinhas
0 <= indiceColuna < quantidadeColunas
As duas condições são necessárias. Uma linha válida não torna automaticamente a coluna válida.
Leia e altere valores sem mudar a forma
Em JavaScript:
const temperaturas = [
[18, 20, 21, 19],
[17, 19, 23, 20],
[16, 18, 22, 21],
];
const leitura = temperaturas[1][2];
temperaturas[2][0] = 17;
console.log(leitura); // 23
console.log(temperaturas[2]); // [17, 18, 22, 21]
Em Python:
temperaturas = [
[18, 20, 21, 19],
[17, 19, 23, 20],
[16, 18, 22, 21],
]
leitura = temperaturas[1][2]
temperaturas[2][0] = 17
print(leitura) # 23
print(temperaturas[2]) # [17, 18, 22, 21]
Nos dois casos, alterar [2][0] substitui o primeiro valor da terceira linha. A quantidade de linhas e colunas permanece igual.
C# possui uma sintaxe própria para um array multidimensional retangular:
int[,] temperaturas =
{
{ 18, 20, 21, 19 },
{ 17, 19, 23, 20 },
{ 16, 18, 22, 21 }
};
int leitura = temperaturas[1, 2];
temperaturas[2, 0] = 17;
Console.WriteLine(leitura); // 23
Observe a diferença de sintaxe: coleções aninhadas usam frequentemente [linha][coluna]; o array retangular de C# usa [linha, coluna]. O modelo de duas coordenadas é o mesmo, mas a estrutura da linguagem não é idêntica.
Dimensão não significa quantidade total
Na linguagem cotidiana, “matriz de tamanho 3 por 4” descreve a forma. Em programação, convém registrar separadamente:
quantidadeLinhas = 3
quantidadeColunas = 4
quantidadeElementos = quantidadeLinhas * quantidadeColunas = 12
Uma matriz 1 × 4 possui uma linha e quatro elementos. Uma matriz 4 × 1 possui quatro linhas e uma coluna. Ambas contêm quatro elementos, mas preservam organizações diferentes.
O termo dimensão também pode gerar ambiguidade. “Duas dimensões” significa que cada elemento precisa de duas coordenadas. Já “dimensões 3 × 4” informa os comprimentos dessas duas direções. Em C#, a especificação usa rank para o número de índices associados a cada elemento: um array 3 × 4 tem rank 2.
Uma matriz retangular não é qualquer lista de listas
JavaScript e Python permitem criar linhas com comprimentos diferentes:
const irregular = [
[10, 20, 30],
[40],
[50, 60],
];
Essa estrutura é uma coleção aninhada ou serrilhada: a primeira linha tem três elementos, a segunda tem um e a terceira tem dois. Ela pode ser útil para dados naturalmente irregulares, mas não satisfaz o contrato de uma matriz retangular com o mesmo número de colunas em todas as linhas.
Java representa arrays multidimensionais como arrays cujos elementos também são arrays, permitindo comprimentos diferentes. C# distingue int[,], retangular, de int[][], um array de arrays possivelmente serrilhado.
Antes de usar matriz[linha][coluna], confirme qual contrato sua estrutura garante. Consultar apenas o tamanho da primeira linha não prova que as demais possuem a mesma quantidade de colunas.
Crie cada linha como uma coleção independente
Ao inicializar coleções aninhadas mutáveis, linhas diferentes não devem apontar para a mesma lista interna.
Em Python, esta forma repete a mesma referência:
grade_incorreta = [[0] * 4] * 3
grade_incorreta[0][1] = 9
print(grade_incorreta)
# [[0, 9, 0, 0], [0, 9, 0, 0], [0, 9, 0, 0]]
Alterar uma célula aparenta alterar três porque as linhas não são objetos independentes. Crie uma lista nova por linha:
grade = [[0] * 4 for _ in range(3)]
grade[0][1] = 9
print(grade)
# [[0, 9, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
Em JavaScript, o mesmo cuidado se aplica a fill() quando o valor repetido é um array:
const grade = Array.from(
{ length: 3 },
() => Array(4).fill(0),
);
A função cria uma linha nova a cada passagem. Esse problema não pertence à matemática da matriz, mas à forma como referências mutáveis são criadas na linguagem.
Use matrizes quando as duas coordenadas têm significado
Matrizes são adequadas para representar:
- pixels de uma imagem por linha e coluna;
- assentos de uma sala por fileira e lugar;
- casas de um tabuleiro;
- medições por dia e horário;
- planilhas com linhas e colunas estáveis;
- mapas pequenos em forma de grade;
- relações entre pares de itens, quando linhas e colunas identificam entidades.
Nem toda tabela visual precisa virar matriz. Uma lista de pessoas com campos nome, idade e email possui registros com propriedades diferentes. Objetos nomeados costumam comunicar melhor do que decorar que a coluna 0 significa nome e a coluna 2 significa email.
Pergunte:
- todas as células representam o mesmo tipo de medida ou estado?
- linha e coluna possuem significados consistentes?
- cada coordenada identifica naturalmente uma posição?
- todas as linhas deveriam ter o mesmo comprimento?
Se as respostas forem positivas, o modelo matricial provavelmente é coerente.
Evite confusões comuns
Trocar linha e coluna
Se o contrato é [linha][coluna], matriz[2][0] não é equivalente a matriz[0][2]. Nomeie as variáveis como indiceLinha e indiceColuna, não apenas i e j, enquanto estiver formando o modelo mental.
Usar quantidade como último índice
Em três linhas, matriz[3] pede uma quarta linha. O último índice é quantidadeLinhas - 1.
Declarar 3 × 4 e desenhar 4 × 3
Leia sempre “linhas por colunas”. Esboce a grade e conte primeiro na vertical, depois na horizontal.
Presumir retangularidade
Em arrays de arrays, valide o comprimento de cada linha quando os dados vêm de arquivo, API ou entrada externa.
Guardar registros heterogêneos por posição
Se cada coluna tem um significado e tipo completamente diferente, um objeto ou registro nomeado pode ser mais legível e seguro.
Pratique com ocupação de salas
Modele a ocupação de três salas em quatro horários:
ocupacao = [
[true, true, false, false],
[false, true, true, false],
[true, false, true, true ]
]
Execute o roteiro sem percorrer a matriz inteira:
- identifique quantidade de linhas, colunas e elementos;
- explique o significado de cada dimensão;
- leia a ocupação da segunda sala no terceiro horário;
- altere a primeira sala no quarto horário para
true; - informe os índices da última célula;
- teste as coordenadas
[0][0],[2][3],[3][0]e[1][4]; - transforme a última linha em
[true, false]e explique qual contrato foi quebrado; - escolha nomes de variáveis que deixem a ordem das coordenadas evidente.
O exercício está completo quando você consegue distinguir forma, quantidade total, coordenada e valor sem depender apenas do desenho.
O que você deve guardar
Uma matriz organiza elementos em duas dimensões. Cada célula é localizada por linha e coluna; em uma matriz indexada a partir de zero, uma forma L × C usa linhas de 0 a L - 1, colunas de 0 a C - 1 e contém L × C elementos.
O modelo retangular pressupõe o mesmo número de colunas em todas as linhas. Algumas linguagens oferecem arrays multidimensionais próprios; outras usam coleções aninhadas, que podem ficar serrilhadas e compartilhar referências se forem inicializadas incorretamente. Primeiro defina o contrato da grade, depois escolha a representação da linguagem. Em seguida, aprenda como percorrer linhas e colunas de uma matriz respeitando as duas dimensões.
Referências
- Wolfram MathWorld — Matrix. Acesso em 22 set. 2026.
- Microsoft Learn — C# language specification: Arrays. Acesso em 22 set. 2026.
- MDN Web Docs — Indexed collections: Multi-dimensional arrays. Acesso em 22 set. 2026.
- Oracle — Arrays: multidimensional arrays. Acesso em 22 set. 2026.
- Python 3 Documentation — Nested list comprehensions. Acesso em 22 set. 2026.
- Python 3 Documentation — How do I create a multidimensional list?. Acesso em 22 set. 2026.