Cursos / Jogos Digitais / Programação Estruturada / Aula

arrow_back Aula 06 - Vetores e Matrizes

4. Matrizes

Você lembra o que são matrizes?

Se ainda tiver dúvida ou não lembra, revise a disciplina de Matemática Aplicada para entender melhor o que você vai aprender aqui.

Comecemos o assunto falando que um vetor pode ter mais de uma dimensão. Os vetores que vimos anteriormente são unidimensionais, ou seja, possuem apenas uma dimensão. Isso quer dizer que para percorrer o conteúdo do vetor você precisa fazer uso de apenas um índice. Se o vetor é bidimensional, são necessários dois índices para percorrer seu conteúdo. Se ele for tridimensional, você precisará de três índices e assim por diante.

Além dos vetores unidimensionais, é comum você precisar usar em certos momentos vetores bidimensionais. Esses tipos de vetores são chamados de matrizes. Imagine um programa para armazenar os nomes dos proprietários dos apartamentos do prédio onde você mora. Considerando que fosse um prédio com 10 andares, 3 apartamentos por andar, como você faria para armazenar os nomes dos 30 proprietários de apartamentos? Com certeza você não criaria mais 30 variáveis! Se você usasse um vetor, teríamos algo como:

Esse vetor aí consegue armazenar 30 nomes, já que ele tem 30 posições do tipo String. Entretanto, onde estará armazenado o apartamento 402, ou seja, o segundo apartamento do quarto andar? Isso depende de como utilizaremos o nosso índice. Como organizaremos os proprietários dentro desse vetor? Iremos organizar por andar, colocando nas três primeiras posições os nomes dos proprietários do primeiro andar? Ou iremos organizar por numeração de apartamento, colocando primeiro os 10 proprietários de apartamentos com terminação 1 e assim por diante?

Veja que existem várias possibilidades de organizarmos o conteúdo desse vetor. Isso porque estamos usando um vetor unidirecional (indexado por apenas uma dimensão), mas estamos trabalhando com um problema que tem duas dimensões. Cada apartamento é identificado pela dimensão andar (1 a 10) e posição do apartamento no andar (1 a 3), correto? Nessas situações, fazemos uso das matrizes. Veja a seguir como declarar o vetor nomes de forma bidimensional, ou seja, como uma matriz:

Observe o uso de [][]. A ocorrência do [] em duas vezes indica que o vetor tem duas dimensões. Se o vetor tivesse três dimensões, o [] ocorreria três vezes, uma para cada dimensão. Note também que, no lado direito da atribuição, temos dois tamanhos. O primeiro é o tamanho da primeira dimensão, no caso, da quantidade de andares. Já o segundo valor é o tamanho da segunda dimensão, que no caso é a quantidade de apartamentos por andar.

Relembrando o conceito de matrizes na matemática, olhe a figura 1. Perceba que as informações dentro de uma matriz são indexadas por duas dimensões e que a quantidade de elementos que cabem na matriz é dada pela multiplicação do tamanho de cada dimensão. No caso da matriz nomes, temos 10 x 3 que é igual aos 30 apartamentos do prédio.

Matrizes na matemática

A forma geral da declaração de uma matriz é muito parecida com a declaração de uma matriz unidimensional:

Quando trabalhamos com matriz, é comum chamarmos os índices de linhas e colunas. No caso, usualmente consideramos que o índice da esquerda indexa as linhas e o da direita indexa as colunas. Assim como no vetor unidirecional, os índices variam de 0 ao tamanho da dimensão menos um. Veja isso exemplificado na matriz mostrada na Figura 3, cuja declaração é mostrada a seguir.

Indexação de matrizes.

A manipulação de uma matriz é feita de forma equivalente à manipulação de vetores unidimensionais, só que agora você fará uso de duas variáveis de indexação. Veja o seguinte código:

O código mostrado declara um leitor (Scanner) e uma matriz para armazenar os nomes dos proprietários dos 30 apartamentos. Em seguida, temos um primeiro bloco de código responsável por ler os nomes dos 30 proprietários. Note que o fato de termos dois índices (andar e posição do apartamento no andar) requer que você use dois laços for, um para cada dimensão. O primeiro está variando os valores do índice andar. Já o segundo, varia o valor do índice posição. Dentro do laço mais interno, temos uma mensagem sendo impressa com o número do apartamento, e o leitor sendo utilizado para ler o nome do proprietário. Note que os índices estão variando no for de 1 ao tamanho de cada dimensão, e não de 0 até o tamanho -1. Isso foi proposital, pois como os andares começam do 1 (101, 102, 103, 201, …), na hora de imprimir o valor do índice, podemos fazer de forma direta se eles começarem com o valor 1. Entretanto, a indexação da matriz requer o valor do índice -1, para fazer com que ele comece do 0 e vá até o tamanho da dimensão -1.

Já a segunda parte do programa imprime os nomes dos proprietários dos apartamentos, fazendo, porém, o uso de índices que variam de 0 ao tamanho da dimensão -1. Isso faz com que essas variáveis possam ter seus valores usados diretamente para indexar a matriz. Porém, na hora de imprimir na tela o número do apartamento, você precisa usar o valor da variável + 1, entendeu? As duas abordagens são válidas, você pode escolher e usar aquela que você acha mais simples de entender.

Versão 5.3 - Todos os Direitos reservados