Lendo uma matriz multidimensional é o tema do tutorial de hoje. E há um importante detalhe que distingue a leitura de um array multidimensional de um array de uma única dimensão – vetores. E embora sigam o mesmo princípio, compreender esta diferença é primordial para o seu sucesso no uso das matrizes.

Uma matriz é uma estrutura de dados de duas ou mais dimensões utilizadas para alocar dados do mesmo tipo. Dessa forma, a disposição estrutural de uma matriz é formada por dois elementos identificadores, ou dois índices. Estes índices representam linhas e colunas, necessariamente nesta ordem. Desse modo, temos abaixo a declaração de uma matriz 2×3.

int[][] notas = new int[2][3];

A declaração de uma matriz dois por três significa uma array multidimensional de duas linhas e três colunas. A lógica da alocação de dados segue o seguinte raciocínio, primeiro alocam-se todos os dados da primeira linha, para só então seguir para o armazenamento dos dados na segunda linha.

LENDO ELEMENTOS DE UMA MATRIZ

Certamente você há de se lembrar que para percorrer um vetor precisávamos da estrutura de repetição for. Este é o princípio que se mantém, porém, para ler uma matriz será necessário a implementação de laços de repetição aninhados, ou seja, um for dentro de outro for.

A necessidade de utilizarmos duas estruturas de repetição se justifica quando entendemos a estrutura multidimensional da matriz em contraposição a única dimensão do vetor.

Se antes precisávamos de um for para percorrer um vetor, o que significa uma linha em uma matriz. É justo que precisemos de um segundo for, para ler as colunas. E é isso o que vamos implementar agora.

~\\~

ATENÇÃO: A implementação do primeiro for é tal como já estamos habituados a implementar, isto é, a posição de continuação do loop é enquanto a variável de controle for menor quem a quantidade de linhas, e para obter o comprimento do vetor utilizamos o length.

Dessa forma para percorremos as colunas devemos pegar o comprimento da linha, ou seja, enquanto houver elementos na linha, ele varrerá as colunas.

~\\~

No momento da impressão a informação a ser passada deverá incluir a linha que está sendo lida junto a coluna corrente que está sendo percorrida. Dentro do escopo do primeiro for e antes da implementação do segundo, adicione um System.out.println(), para podermos separar uma linha da outra. Assim dentro do escopo do segundo for faça como exemplificado abaixo:

System.out.print(notas[linha][col] + “ ”); 

Observe que utilizamos o print no lugar do habitual println, para imprimir na primeira linha, uma nota ao lado da outra, e assim também com a segunda. É apenas um detalhe, mas visualmente possibilita que enxerguemos melhor a estrutura de uma matriz.

EM POUCAS PALAVRAS

Uma vez compreendido os arrays de uma dimensão, compreender matrizes se torna um processo natural. O princípio é o mesmo, o que os arrays multidimensionais trazem de novo é utilização de dois índices de identificação e a forma de percorrê-los, onde recorremos a laços de repetição aninhados.

Agora dentro do contexto de um sistema escolar as matrizes poderiam ser aplicadas representando cada bimestre uma linha, e cada coluna uma nota, ou uma disciplina. Elas também são amplamente utilizadas no desenvolvimento de jogos, ou na manipulação de elementos de uma interface gráfica. Eu fico por aqui, e nos vemos no próximo tutorial.