Programação I Aula 12 (Arrays Bidimensionais) Prof. Gilberto Irajá Müller Última atualização 3/6/2009 Arrays Bidimensionais • Um array bidimensional é um arranjo composto de linhas e colunas de valores, nossa velha conhecida matriz da Matemática. Ex.: a matriz “m” abaixo tem 3 linhas e 4 colunas, totalizando 12 números inteiros (notação matemática) -4 m= 1 3 7 0 2 2 6 3 0 -3 -1 Arrays Bidimensionais • Uma das maneiras de criar a matriz acima em Java é int[][] m = {{-4, 7, 2, 0}, {1, 0, 6, -3}, {3, 2, 3, -1}}; Linha 0 Linha 1 Linha 2 • Para o acesso aos elementos de uma matriz, utiliza-se a seguinte sintaxe: m[índice para a linha][índice para a coluna] • Qual o efeito do trecho abaixo? m[2][3] = m[0][0] * 2; System.out.println(m[2][1]); int s = m[1][2]; m[1][2] = m[0][0]; m[0][0] = s; Arrays Bidimensionais • Se não sabemos o conteúdo inicial da matriz, podemos declará-la e criá-la da maneira convencional. Ex.: // Cria uma matriz mat de dimensão linhas x colunas double [][] mat = new double [linhas][colunas]; Exercício 12.1. Preencha a matriz mat com números aleatórios positivos menores que 100. Dica: Ao utilizar arrays bidimensionais, precisaremos trabalhar com dois “fors”. Arrays Bidimensionais • Exercício 12.2. Crie um método que recebe uma matriz bidimensional double e retorna o maior valor da matriz • Exercício 12.3. Crie um método que recebe uma matriz bidimensional inteira e um inteiro que indica uma de suas linhas, e retorna a média dos valores daquela linha Arrays Bidimensionais • Comprimentos de linhas variáveis Usamos, até agora, matrizes bidimensionais com o mesmo comprimento para todas as suas linhas. Podemos declarar matrizes em que o comprimento da linha varia. Para isso, faz-se o trabalho em duas etapas: • Primeiramente, aloca-se espaço para a quantidade de linhas que se deseja, deixando o segundo índice do array vazio; • Depois, aloca-se cada linha individualmente. Arrays Bidimensionais • Ex.: // repare o segundo índice vazio int [][] matriz = new int[4][]; // primeira linha terá quatro elementos matriz[0] = new int[4]; // segunda linha, só dois elementos; matriz[1] = new int[2]; // terceira linha terá cinco elementos; matriz[2] = new int[5]; // quarta linha, três elementos. matriz[3] = new int[3]; Arrays Bidimensionais • Representação gráfica para o array com comprimento de linha variado Arrays Bidimensionais • Exercício 12.4. Escreva um trecho Java para preencher a matriz anterior com valores aleatórios Arrays Bidimensionais • Java admite matrizes multidimensionais, porém, está fora do escopo da disciplina. Ex.: int[][][] a = {{{1, 2, 3}, {1, 2, 3}, {1, 2, 3}}, {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}}, {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}}}; int[][][][] b = {{{{1, 2, 3}, {1, 2, 3}, {1, 2, 3}}, {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}}, {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}}}, {{{1, 2, 3}, {1, 2, 3}, {1, 2, 3}}, {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}}, {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}}}, {{{1, 2, 3}, {1, 2, 3}, {1, 2, 3}}, {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}}, {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}}}}; Métodos • Referências bibliográficas • http://inf.unisinos.br/~anibal