2. Matrizes
• Variável
composta
homogênea
multidimensional
• Conjunto de variáveis de mesmo tipo
• Alocadas sequenciamente na memória
• Índice: referencia sua localização dentro da
estrutura. No caso de matrizes, precisamos de
tantos
índices
quantos
forem
seu
dimensionamento.
• Exemplo: matriz de 2dimensões, 2 índices.
Matrizes de 3dimensões, 3 indícesl.
3. Declarando e Inicializando
• Exemplo 1:
float x[ ][ ]; //declarando uma matriz do tipo float com
duas dimensões. O primeiro colchete é referente ao
número de linhas. O segundo colchete é referente ao
número de colunas.
f = new float[2][10]; //definindo o tamanho das
dimensões da matriz
0
0
1
1
2
3
4
5
6
7
8
9
x
4. Declarando e Inicializando
• Exemplo 2:
char [ ][ ]MAT; //declarando uma matriz do tipo
char com duas dimensões;
MAT = new char[4][3]; //definindo o tamanho
das dimensões da matriz
0
0
1
2
3
1
2
MAT
5. Declarando e Inicializando
• Exemplo 3:
int [ ][ ]Y[ ]; //declarando uma matriz do tipo int
com três dimensões
Y = new char[2][4][3]; //definindo o tamanho das
dimensões da matriz, que é multidimensional
Criamos aqui uma variável com duas linhas (0 a 1),
quatro colunas (0 a 3) e três profundidades (0 a 2),
que são capazes de armazenar números inteiros
6. Declarando e Inicializando
Y = new char[2][4][3]; //definindo o tamanho das
dimensões da matriz, que é multidimensional
7. Declarando e Inicializando
• Exemplo 4:
float x[ ][ ] = new float[2][6]; //declarando e
definindo o tamanho da matriz em uma única
linha
• Exemplo 5:
char [ ][ ]MAT = new char[4][3]; //declarando e
definindo o tamanho da matriz em uma única
linha
8. Declarando e Inicializando
• Exemplo 6:
int [ ][ ]Y[ ] = new int[2][4][3]; //eclarando e definindo o
tamanho da matriz em uma única linha
• Exemplo 7:
int y[][]; //matriz bidimensional
y = new int[2][]; //tamanho da primeira dimensão: duas
linhas. Tamanho da segunda dimensão: indefinido
y[0] = new int[5]; //definindo o tamanho da linha zero da
primeira dimensão: 5 posições
y[1] = new int[2]; //definindo o tamanho da linha um da
primeira dimensão: 2 posições
9. Declarando e Inicializando
int y[][]; //matriz bidimensional
y = new int[2][]; //tamanho da primeira dimensão: duas linhas.
Tamanho da segunda dimensão: indefinido
y[0] = new int[5]; //definindo o tamanho da linha zero da
primeira dimensão: 5 posições
y[1] = new int[2]; //definindo o tamanho da linha um da primeira
dimensão: 2 posições
10. Atribuindo valores à matriz
x[ 1 ][ 4 ] = 5; //atribui o valor 5 à posição identificada pelos
índices 1 (2ª linha) e 4 (5ª coluna)
MAT[ 3 ][ 2 ] = ‘D’; //atribui a letra D à posição identificada
pelos índices 3 (4ª linha) e 2 (3ª coluna)
y[ 0 ][ 3 ][ 1 ] = 12; //atribui o valor 12 à posição identificada
pelos índices 0 (1ª linha), 3 (4ª coluna) e 1 (2ª profundidade)
11. Atribuindo valores à matriz
y[ 0 ][ 3 ][ 1 ] = 12; //atribui o valor 12 à posição identificada
pelos índices 0 (1ª linha), 3 (4ª coluna) e 1 (2ª profundidade)
12. Atribuindo valores à matriz
MAT[ 3 ][ 2 ] = ‘D’; //atribui a letra D à posição identificada
pelos índices 3 (4ª linha) e 2 (3ª coluna)
13. Preenchendo uma matriz
• Usar uma estrutura de repetição para cada linha da
matriz!
int x[ ][ ] = new int[7][3];
Scanner e = new Scanner(System.in);
for( i = 0; i<7; i++ ) { //preenche a linha
for( j=0; j<3; j++ ) { //preenche a coluna
x[ i ][ j ] = e.nextInt(); //preenche a célula
}
}
14. Preenchendo uma matriz
int MAT[ ][ ]; //declarando uma matriz bidimensional
MAT = new int[ 3 ][ ] ; //definindo a quantidade de linhas da
primeira dimensão
MAT[ 0 ] = new int[ 2 ]; //defininido 2 como tamanho da linha zero
MAT[ 1 ] = new int[ 5 ]; //definindo 5 como tamanho da linha um
MAT[ 2 ] = new int[ 3 ]; //definindo 3 como tamanho da linha dois
Scanner e = new Scanner(System.in);
for( i = 0; i<MAT.length; i++ ) { //preenche a linha
for( j=0; j<MAT[i].length; j++ ) { //preenche a coluna
x[ i ][ j ] = e.nextInt(); //preenche a célula
}
}
15. Preenchendo uma matriz
int MAT[ ][ ]; //declarando uma matriz bidimensional
MAT = new int[ 3 ][ ] ; //definindo a quantidade de linhas da
LENGTH
primeira dimensão
MAT[ 0 ] = new int[ 2 ]; //defininido 2 como tamanhotamanho zero cada
Recupera o da linha de
dimensão de um array. No
MAT[ 1 ] = new int[ 5 ]; //definindo 5 como tamanho da linha um caso
desse exemplo, cada linha
MAT[ 2 ] = new int[ 3 ]; //definindo 3 como tamanho da linha dois do
array tem uma dimensão
Scanner e = new Scanner(System.in);
diferente!
for( i = 0; i<MAT.length; i++ ) { //preenche a linha
MAT.length = tamanho da
for( j=0; j<MAT[i].length; j++ ) { //preenche a coluna
primeira dimensão
x[ i ][ j ] = e.nextInt(); //preenche a célula
MAT[i].length = tamanho da
}
linha i de MAT
}
16. Imprimindo os valores de uma matriz
• Usar uma estrutura de repetição para cada linha da
matriz!
for( i=0; i<10; i++) {
//obtem índice da linha
for( j=0; j<6; j++) {
//obtem índice da coluna
System.out.println( x[ i ][ j ] );
//imprime o conteúdo da célula que está na
linha/coluna obtida
}
}
17. Imprimindo os valores de uma matriz
for( i=0; i<MAT.length; i++) {
//obtem o tamanho da dimensão
for( j=0; j<MAT[ i ].length; j++) {
//obtem o tamanho da linha
System.out.println( MAT[ i ][ j ] );
//imprime o conteudo da linha/coluna
}
}
18. Percorrendo uma matriz
• Usar uma estrutura de repetição para cada linha da
matriz!
• EXEMPLO1: mostrar todos os elementos gravados em
uma linha
for ( i=0; i<3; i++) {
//quantidade de linhas é 3
System.out.println( “Elementos da linha” + i );
for( j=0; j<4; j++) {
//quantidade de colunas é 4
System.out.println( x[ i , j ] );
}
}
19. Percorrendo uma matriz
• EXEMPLO1: mostrar todos os elementos gravados em
uma coluna
for ( i=0; i<4; i++) {
//quantidade de colunas é 4
System.out.println( “Elementos da coluna” + i );
for( j=0; j<3; j++) {
//quantidade de linhas é 4
System.out.println( x[ j , i ] );
}
}
20. Percorrendo uma matriz
• Observações:
• A mudança nos valores das variáveis i e
j, controlam as estruturas de repetição e
permite a formação de todos os pares
possíveis de linha e coluna que existem na
matriz;
21. Percorrendo uma matriz
• Observações:
• No caso da linha:
– A mudança na variavel i do for externo é mais
lenta que a mudança na variável j no for
interno.
– Neste caso, a variável i indica como será o
percurso, que no caso será horizontal.
– O índice da linha fica parado e somente o
índice da coluna se altera
22. Percorrendo uma matriz
• Observações:
• No caso da coluna:
– A mudança na variavel j do for externo é mais
lenta que a mudança na variável i no for
interno.
– Neste caso, a variável j indica como será o
percurso, que no caso será vertical.
– O índice da coluna fica parado e somente o
índice da linha se altera
23. Percorrendo uma matriz
• Observações:
• No caso da coluna:
– A mudança na variavel j do for externo é mais
lenta que a mudança na variável i no for
interno.
– Neste caso, a variável j indica como será o
percurso, que no caso será vertical.
– O índice da coluna fica parado e somente o
índice da linha se altera