Você está na página 1de 15

Matrizes

Programao em Java
Prof. Maurcio Braga

Matrizes

Vimos que vetores so utilizados para armazenar dados de uma


nica fileira.
Porm, existem situaes em que a natureza dos dados exige uma
forma de armazenamento em mais de uma dimenso.
Para estas situaes, existem as matrizes, que podem ser vistas
como vetores que possuem mais de uma dimenso.
No caso de uma matriz bidimensional, essa matriz representa uma
tabela de valores colocados em linhas e colunas.

Para identificar um valor necessrio informar a linha e a coluna


Conhecidas como tabelas, ou variveis indexadas bidimensionais
Um vetor pode ser visto como uma matriz com uma nica linha.

2/14

Matrizes bidimensionais

Sintaxe para declarao de uma matriz bidimensional:


<var> : vetor[<inicio1>..<fim1>,<inicio2>..<fim2>,...] de <tipo>;

Sintaxe para referenciao de uma posio:


<nome_vetor>[<posicao1>,<posicao2>,...];

Exemplos:

Declarao:

Referenciao:

valor : vetor[1..3,1..4] de real;


valor[1,1] = 8.50;
3/14

valor[2,3] = 7.3;

Matrizes em Java

Criadas utilizando arrays multidimensionais.


Arrays multidimensionais com duas dimenses
costumam ser utilizados para representar tabelas de
valores:

Informaes dispostas na forma de linhas e colunas.


Chamados de arrays bidimensionais pois precisam de dois
ndices para identificao dos elementos.

Java no suporta arrays multidimensionais diretamente.

necessrio criar um array unidimensional e definir que seus


elementos tambm so arrays unidimensionais;
Praticamente possuem o mesmo efeito.

4/14

Arrays bidimensionais

Cada elemento do array identificado por uma


expresso de acesso da forma

nomeArray [ linha ] [ coluna ].

a[ 0 ] [ 0 ]

a[ 0 ] [ 1 ]

a[ 0 ] [ 2 ]

a[ 0 ] [ 3 ]

a[ 1 ] [ 0 ]

a[ 1 ] [ 1 ]

a[ 1 ] [ 2 ]

a[ 1 ] [ 3 ]

a[ 2 ] [ 0 ]

a[ 2 ] [ 1 ]

a[ 2 ] [ 2 ]

a[ 2 ] [ 3 ]

5/14

Arrays bidimensionais

Arrays bidimensionais podem ser declarados /


construdos da mesma forma que arrays
unidimensionais:
int b[][]; // declarao da matriz
b = new int[ 2 ][ 3 ]; // construo matriz 2 linhas e
// 3 colunas
Ou
int b[][] = new int[ 2 ][ 3 ];
6/14

Arrays Multidimensionais

Acessando os elementos de um array


multidimensional:
int[ ][ ] a = new int[ 3 ][ 2 ];
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[ i ].length; j++) {
System.out.println(a[ i ][ j ]);
}
}
7/14

Arrays multidimensionais

A declarao, construo e inicializao de uma


matriz pode ser feita de uma vez s:
int[][]

m = {{1,2}, {3,4}};

cdigo equivalente a:
int[][]

m = new int[2][2];
m[0][0] = 1;
m[0][1] = 2;
m[1][0] = 3;
m[1][1] = 4;
8/25

Arrays Multidimensionais

Arrays de arrays unidimensionais no exigem que todas


as linhas tenham a mesma quantidade de elementos.
int b[ ][ ];

b = new int[ 2 ][ ]; // cria 2 linhas


b[ 0 ] = new int[ 5 ]; // cria 5 colunas para linha 0
b[ 1 ] = new int[ 3 ]; // cria 3 colunas para linha 1

9/14

Matrizes

Exemplo

Um distribuidor de refrigerantes vende seu produto em todo o


pas. Em cada trimestre do ano passado ele vendeu uma certa
quantidade de garrafas em cada regio do Brasil. Faa um
programa para ler as quantidades vendidas e escrever a
quantidade total vendida em todo o pas.

Soluo

Pelo enunciado do problema, vimos que existem 20 dados de


entrada, pois temos 4 trimestres no ano e cada trimestre teve
uma venda para cada uma das cinco regies do Brasil.
O enunciado do problema tambm no leva a concluir que
devemos utilizar uma estrutura matricial ao invs de vetorial.

Temos vendas para regies por trimestre.

10/14

Matrizes

Soluo (cont.)

A tabela abaixo mostra uma representao possvel para os dados do


problema:
1 - Norte

2 - Nordeste

3 - Sul

4 - Sudeste

5 CentroOeste

1 Trimestre

150

1150

900

1500

400

2 Trimestre

180

980

1100

2300

650

3 Trimestre

140

1000

950

2100

500

4 Trimestre

210

1600

1400

2600

840

11/14

Matrizes

Soluo (cont.):

Ento o algoritmo fica assim:


Variveis
quant : vetor[1..4,1..5] de inteiro;
i, j, soma : inteiro;
Incio
para i de 1 at 4 faa
para j de 1 at 5 faa [[
escrever Informe a quantidade do , i, trimestre e , j, regio: ;
ler quant[i,j];
]];
soma = 0;
para i de 1 at 4 faa
para j de 1 at 5 faa
soma = soma + quant[i,j];
escrever O total das quantidades vendidas , soma;
Fim.

12/14

Soluo Exemplo em Java


public static void main(String[] args) {
int[ ][ ] quant = new int[ 4 ][ 5 ];
int soma = 0;
Scanner s = new Scanner(System.in);
// l os valores para cada regio e cada trimestre
for (int i = 0; i < quant.length; i++) {
for (int j = 0; j < quant[ i ].length; j++) {
System.out.println("informe a quantidade do "+(i+1)+"
trimestre e " +(j+1)+" regio");
quant[ i ][ j ] = s.nextInt();
}
}
13/14

Soluo Exemplo em Java


// soma todos os valores armazenados na matriz
for (int i = 0; i < quant.length; i++) {
for (int j = 0; j < quant[ i ].length; j++)
soma = soma + quant[ i ][ j ];
}
System.out.println("O total de quantidades vendidas :" + soma);
}

14/14

Matrizes

Programao em Java
Prof. Maurcio Braga