Buscar

Estrutura de Dados Aula 4

Prévia do material em texto

Estrutura de Dados -Aula 4 1 
 
 
TÓPICOS DO PLANO DE ENSINO VISTOS NESTA AULA 
 
 Estrutura de Dados 
 Armazenamento sequencial 
 Array: instanciar, popular, percorrer e exibir 
 
 
 
Arrays Bidimensionais (ou Matrizes) 
A linguagem Java não fornece vetores multidimensionais, mas como um vetor pode 
ser declarado e ter qualquer tipo de base, é possível criar vetores de vetores (de 
vetores etc.), alcançando assim o mesmo efeito. 
A declaração de um vetor bidimensional para inteiros, de nome "m" em Java: 
int m[][] = new int[2][4]; // matriz com 2 linhas X 4 colunas 
Representação interna: 
m[0][0] m[0][1] m[0][2] m[0][3] 
m[1][0] m[1][1] m[1][2] m[1][3] 
 
Fazendo referência a um elemento do vetor bidimensional: 
m[0][2] = 
0; 
// elemento da primeira linha, terceira coluna 
 
// ou ainda, terceiro elemento do primeiro 
vetor 
m[i][j] // elemento da i-ésima linha, j-ésima coluna 
 
Declarando vetores bidimensionais: 
1) Com expressões de criação de vetores: 
int m[][] = new int[3][3]; // matriz quadrada: 3 linhas X 3 colunas 
2) Declarando e inicializando: 
int m[][] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; 
 
equivale as seguintes atribuições: 
// 1ª linha: 
m[0][0] = 1; 
m[0][1] = 2; 
m[0][2] = 3; 
 
// 2ª linha: 
Estrutura de Dados -Aula 4 2 
 
 
m[1][0] = 4; 
m[1][1] = 5; 
m[1][2] = 6; 
 
// 3ª linha: 
m[2][0] = 7; 
m[2][1] = 8; 
m[2][2] = 9; 
3) Com linhas de diferentes tamanhos: 
int m[][] = new int[2][]; // cria 2 linhas 
 
m[0] = new int[5]; // cria 5 colunas para a linha 0 
m[1] = new int[3]; // cria 3 colunas para a linha 1 
4) Declarando e inicializando linhas de diferentes tamanhos: 
int m[][] = { {1, 2}, {4, 5, 6, 7, 8}, {9, 10, 11} }; 
 
equivale as seguintes atribuições: 
// 1ª linha com duas colunas: 
m[0][0] = 1; 
m[0][1] = 2; 
 
// 2ª linha com 5 colunas: 
m[1][0] = 4; 
m[1][1] = 5; 
m[1][2] = 6; 
m[1][3] = 7; 
m[1][4] = 8; 
 
// 3ª linha com 3 colunas: 
m[2][0] = 9; 
m[2][1] = 10; 
m[2][2] = 11; 
 
Para conhecer os tamanhos dos vetores deve-se utilizar o campo length: 
a) m.length determina o número de linhas 
b) m[i].length determina o número de colunas da i-ésima linha 
 
Percorrendo vetores bidimensionais com linhas de diferentes tamanhos: 
int m1[][] = { {1, 2, 3, 4}, {5, 6} }; 
int m2[][] = { {1, 2}, {3}, {4, 5, 6} }; 
 
m.length 
m[i].length 
determina o número de linhas 
determina o número de colunas da i-ésima linha 
 
int i, j; 
for (i=0; i<m.length; i++) { 
 System.out.printf("%da. linha: ", (i+1)); 
 for (j=0; j<m[i].length; j++) { 
 System.out.printf("%d ", m[i][j]); 
 } 
 System.out.printf("\n"); 
Estrutura de Dados -Aula 4 3 
 
 
} 
 
Resultado com "m1": 
1a. linha: 1 2 3 4 
2a. linha: 5 6 
 
Resultado com "m2": 
1a. linha: 1 2 
2a. linha: 3 
3a. linha: 4 5 6 
 
Exemplos de aplicações Java utilizando vetores bidimensionais ou matrizes: 
 
import java.util.Scanner; 
 
public class Matriz1 { 
 public static void main(String[] args) { 
 Scanner ler = new Scanner(System.in); 
 int i, j, m[][] = new int[2][4]; 
 
 for (i=0; i<2; i++) { 
 System.out.printf("Informe os elementos %da. linha:\n", (i+1)); 
 for (j=0; j<4; j++) { 
 System.out.printf("m[%d][%d] = ", i, j); 
 m[i][j] = ler.nextInt(); 
 } 
 System.out.printf("\n"); 
 } 
 
 System.out.printf("\n"); 
 for (i=0; i<2; i++) { 
 System.out.printf("%da. linha: ", (i+1)); 
 for (j=0; j<4; j++) { 
 System.out.printf("%d ", m[i][j]); 
 } 
 System.out.printf("\n"); 
 } 
 } 
} 
 
Listagem 1- Alimentando e mostrando os valores de uma matriz 2 X 4. 
 
 
public class Matriz2 { 
 public static void main(String[] args) { 
 int n = 6; 
 int i, j, m[][] = new int[n][n]; 
 
 for (i=0; i<n; i++) { 
 for (j=0; j<n; j++) { 
 if (i == j) // diagonal principal 
 m[i][j] = 0; 
 else if ((i+j) == (n-1)) // diagonal secundária 
 m[i][j] = 1; 
// sorteia um número aleatório no intervalo de 2 até 5 
Estrutura de Dados -Aula 4 4 
 
 
 else m[i][j] = (int)(Math.round(Math.random() * 2) + 3); // 
 } 
 } 
 
 for (i=0; i<n; i++) { 
 System.out.printf("%da. linha: ", (i+1)); 
 for (j=0; j<n; j++) { 
 System.out.printf("%d ", m[i][j]); 
 } 
 System.out.printf("\n"); 
 } 
 } 
} 
 
Listagem 2- Matriz quadrada: diagonal principal e diagonal secundária. 
 
Ilustrando a execução das aplicações: 
Listagem 1: Listagem 2: 
 
 
Referência: 
Peter Jandl Junior. Introdução ao Java. São Paulo: Berkeley - 2002. 
Este material foi extraído de: http://www.devmedia.com.br/matrizes-vetores-em-
java-parte-3/21573.

Continue navegando