💻

Estrutura de Dados - Matriz




1 - O que é uma matriz

Uma matriz é uma variável composta homogênea e multidimensional. Todos elementos de uma matriz são de mesmo tipo, com o mesmo identificador (mesmo nome), e alocadas sequencialmente na memória. Uma vez que as variáveis têm o mesmo nome, o que as distingue são índices que referenciam sua localização dentro da estrutura. A diferença da matriz para o vetor é que o vetor possui apenas uma dimensão, e a matriz pode possuir várias dimensões, porém o mais comum são duas dimensões como ocorre nas planilhas eletrônicas utilizadas em aplicativos de escritórios.

→ Características de uma matriz

→ Por que matriz é uma estrutura de dados?

→ Diferença entre variável simples, vetor e matriz

EstruturaDimensãoTipo de dado armazenadoIdentificaçãoExemplo práticoExemplo de acesso
Variável simples0 DApenas 1 valor do mesmo tipoNome únicoA nota de um alunonota
Vetor1 DVários valores do mesmo tipoMesmo nome + 1 índiceNotas de um alunonota[3] (3ª posição)
Matriz2D (ou mais)Vários valores do mesmo tipoMesmo nome + 2 ou mais índicesTabela de Notas de vários alunos nota[2,4] (2º aluno, Nota 4)
💡

Acessibilidade Visual

A tabela apresenta três colunas, sendo uma com informações referentes à variável simples, outra com o vetor e a terceira com a matriz. Esta serve para realizar um comparativo entre essas estruturas.

A variável simples armazena apenas um valor por vez, enquanto o vetor armazena vários valores do mesmo tipo em uma única dimensão. Já a matriz armazena vários valores do mesmo tipo em duas ou mais dimensões, geralmente representados em forma de tabela.

Exemplo:

  • Variável simples: idade: inteiro → significa que a variável armazena apenas uma idade por vez.
  • Vetor: idades: vetor[1..5] de inteiro → significa que a variável idades, do tipo inteiro, terá cinco posições, ou seja, poderá armazenar cinco valores de idades.
  • Matriz: notas: matriz[1..5, 1..4] de real → significa que a variável notas, do tipo real, terá duas dimensões: 5 linhas e 4 colunas, podendo armazenar, por exemplo, as notas de 5 alunos em 4 disciplinas.

Enquanto a variável simples não utiliza índices, o vetor precisa de um índice para acessar cada posição, como em idades[3], que representa a terceira idade armazenada. Já a matriz precisa de dois índices (ou mais, dependendo da dimensão) para identificar um valor específico, como em notas[2,4], que representa a nota do segundo aluno na quarta disciplina.

Exemplos comparativos das diferenças entre as estruturas simples e compostas

var
  nota: real         // variável simples
  notas: vetor[1..4] de real  // vetor
  notas: matriz[1..3, 1..4] de real

3 - Declaração de uma matriz

➜ Sintaxe em Portugol / VisualG

Para declarar uma matriz, é necessário:

Exemplo de declaração:

var
  notas: matriz[1..3, 1..4] de real

Neste exemplo:


4 - Acesso aos elementos

→ Índice e posições

Exemplo de acesso conforme mencionado acima

notas[1,1] <- 7.5
notas[1,2] <- 8.0
notas[1,3] <- 9.0
notas[1,4] <- 6.0

notas[2,1] <- 6.0
notas[2,2] <- 9.5
notas[2,3] <- 7.0
notas[2,4] <- 4.0

notas[3,1] <- 5.0
notas[3,2] <- 3.0
notas[3,3] <- 3.0
notas[3,4] <- 9.0

Contexto:

💡

Observação:

Para o VisualG não existe posição zero, diferente das linguagens como C ou Python.


5 - Exemplos leitura e escrita em matrizes

Para preencher ou exibir os valores de uma matriz, é muito comum utilizarmos um laço de repetição, igual no vetor, porém é necessário o laço externo (para i) que irá controlar as linhas, e o laço interno (para j) para controlar as colunas.

Exemplo — Ler valores 4 notas de 3 alunos e apresentar na tela

Algoritmo "matriz"
// Disciplina   : [Lógica de Programação]
// Professor   : Mauro Borges França
// Descrição   : Algoritmo para apresentar os conceitos de vetor
// Data atual  : 20/08/2025

Var
   // Seção de Declarações das variáveis
   notas: vetor[1..3,1..4] de real
   i,j: inteiro
Inicio

   // Seção de entrada de dados
   Para i de 1 ate 3 faca
      escreval("Forneça as notas do ",i,"º aluno")
      Para j de 1 ate 4 faca
          escreva("Digite a ",j,"ª nota: ")
          leia(notas[i,j])
      Fimpara
   Fimpara

   // Seção para apresentar os dados
   para i de 1 ate 3 faca
      escreval("O ",i,"º aluno, tirou as notas")
      para j de 1 ate 4 faca
          escreval(j,"ª nota:",notas[i,j])
      fimpara
   fimpara
Fimalgoritmo
💡

Observação: A necessidade de dois laços se dá porque a matriz possui duas dimensões, uma para as linhas e outra para as colunas. O laço externo, que geralmente usa a variável i, controla as linhas. Já o laço interno, que usa a variável j, controla as colunas. Essa combinação nos permite percorrer cada célula da matriz, acessando-a pela sua posição [i,j].

💡

Área de visualização (tela)

Forneça as notas do 1º aluno
Digite a 1ª nota: 10
Digite a 2ª nota: 9
Digite a 3ª nota: 8
Digite a 4ª nota: 7
Forneça as notas do 2º aluno
Digite a 1ª nota: 7
Digite a 2ª nota: 9
Digite a 3ª nota: 8
Digite a 4ª nota: 7
Forneça as notas do 3º aluno
Digite a 1ª nota: 10
Digite a 2ª nota: 8
Digite a 3ª nota: 9
Digite a 4ª nota: 7
O 1º aluno, tirou as notas
1ª nota: 10
2ª nota: 9
3ª nota: 8
4ª nota: 7
O 2º aluno, tirou as notas
1ª nota: 7
2ª nota: 9
3ª nota: 8
4ª nota: 7
O 3º aluno, tirou as notas
1ª nota: 10
2ª nota: 8
3ª nota: 9
4ª nota: 7

Fim da execução.

💡

Memória

notas[1,1] = 10

notas[1,2] = 9

notas[1,3] = 8

notas[1,4] = 7

notas[2,1] = 7

notas[2,2] = 9

notas[2,3] = 8

notas[2,4] = 7

notas[3,1] = 10

notas[3,2] = 8

notas[3,3] = 9

notas[3,4] = 7

i = 3

j = 4


Copyleft 🄯 2025 - Professor Mauro Borges França.