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.