aula 10 matrizes computador
DESCRIPTION
aulaTRANSCRIPT
BC0505 - Processamento da InformacaoMatrizes
Marcio K. Oikawa (Teoria)
Marco/2015
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Introducao
Estudaremos nesta aula:
O que sao matrizes?
Qual a relacao entre vetores e matrizes?
Como trabalhar com matrizes e seus algoritmos em Java?
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Introducao
Uma matriz pode ser vista como uma generalizacao de vetores (ovetor e um caso particular de matriz). Exceto por sua estrutura, osobjetivos e caracterısticas da matriz sao bem similares aos vetores:
Estruturas de armazenamento que pode guardar varios valoresao mesmo tempo;
Permite o processamento homogeneo de varios valores aomesmo tempo.
Esta ligado a muitas aplicacoes praticas.
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Matrizes
Sao caracterısticas de uma matriz:
Armazena varios valores em uma unica variavel;
Os valores sao armazenados em posicoes indexadas, assimcomo o vetor, mas temos dois ındices de referencia (linha ecoluna);
Os ındices sao numeros inteiros, organizados de formacrescente a partir de 0, tanto para linhas quanto para colunas;
Todos os valores sao obrigatoriamente do mesmo tipo.
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Visao abstrata de uma matriz
Declaracao de uma matriz M
int M[][] = new int [4][5];
0
1
2
3
0 1 2 3 4
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Declaracao de vetores em Java
Sintaxe:
<tipo> <nome>[][] = new <tipo> [<lin>][<col>];
<tipo>[][] <nome> = new <tipo> [<lin>][<col>];
<tipo>[] <nome>[] = new <tipo> [<lin>][<col>];
Semantica:
A declaracao de uma matriz e similar a um vetor convencional. Adiferenca e que deve-se declarar os dois ındices (quando a matrizfor bidimensional).
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Visao esquematica de uma matriz
Declaracao de V
int M[][] = new int [4][5];
0
1
2
3
0 1 2 3 4
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Acessando elementos da matriz
-3 3 -1 11 9
4 0 3 2 13
21 5 2 5 6
8 -4 -8 7 4
0
1
2
3
0 1 2 3 4
int a = 3;
M[0][3] = a;
M[2][2] = M[1][3] + M[0][2];
M[3][4] = 32;
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo 1
Escreva um algoritmo encontra o menor elemento de uma matriz 3x 4 de numeros inteiros. Preencha inicialmente a matriz comvalores aleatorios.
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
Algoritmo 1: Identificacao do menor numero inteiro
1: inteiro: M[3][4]2:
3: {Primeiro, preencha a matriz...}4: para i ← 0 ate 3 faca5: para j ← 0 ate 4 faca6: M[i][j] ← Aleatorio()7: fim para8: fim para9: ...
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
Algoritmo 2: Identificacao do menor numero inteiro1: ...2: {... e depois ache o menor elemento}3: menor ← M[0][0]4:
5: para i ← 0 ate 3 faca6: para j ← 0 ate 4 faca7: se M[i][j] < menor entao8: menor ← M[i][j]9: fim se
10: fim para11: fim para12:
13: escreva (”O menor elemento eh”)14: escreva (menor)
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Em Java
Codificando em Java ...
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Em Java
Alguns detalhes sobre matrizes em Java:
O numero de elementos e obrigatoriamente um numero inteiropositivo;
Pode-se descobrir a quantidade de elementos do vetoracessando o atributo length;
Descobrindo a dimensao da matriz
int M[][] = new int [10][12];int linhas = M.length;int colunas = M[0].length;
Acesso a celulas nao alocadas do vetor provocam erro deexecucao.
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Outro exemplo
Escreva um algoritmo que calcula a soma dos elementos de umamatriz 2 x 3, preenchida com numeros inteiros aleatorios.
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++){
soma = soma + M[i][j];
}}
i j M[i][j] soma
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++){
soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for ( int i=0 ; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 X X 0
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2 ; i++){for (int j=0; j<3; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 X X 0
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for ( int j=0 ; j<3; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 0
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3 ; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 0
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j] ;
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++ ){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 -2
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3 ; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 -2
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j] ;
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++ ){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3 ; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j] ;
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++ ){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3 ; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++ ){for (int j=0; j<3; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 X X 6
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for ( int j=0 ; j<3; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 0 4 6
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3 ; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 0 4 6
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j] ;
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 0 4 10
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++ ){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 0 4 10
1 1 -1 10
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3 ; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 0 4 10
1 1 -1 10
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j] ;
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 0 4 10
1 1 -1 9
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++ ){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 0 4 10
1 1 -1 9
1 2 3 9
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3 ; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 0 4 10
1 1 -1 9
1 2 3 9
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j] ;
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 0 4 10
1 1 -1 9
1 2 3 12
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++ ){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 0 4 10
1 1 -1 9
1 2 3 12
1 3 X 12
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3 ; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 0 4 10
1 1 -1 9
1 2 3 12
1 3 X 12
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 0 4 10
1 1 -1 9
1 2 3 12
1 3 X 12
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++ ){for (int j=0; j<3; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 0 4 10
1 1 -1 9
1 2 3 12
1 3 X 12
2 X X 12
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2 ; i++){for (int j=0; j<3; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 0 4 10
1 1 -1 9
1 2 3 12
1 3 X 12
2 X X 12
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 0 4 10
1 1 -1 9
1 2 3 12
1 3 X 12
2 X X 12
X X X 12
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exemplo
-2 8 0
4 -1 3
0
1
0 1 2
int soma = 0;
for (int i=0; i<2; i++){for (int j=0; j<3; j++){soma = soma + M[i][j];
}}
i j M[i][j] soma
X X X 0
0 0 -2 -2
0 1 8 6
0 2 0 6
0 3 X 6
1 0 4 10
1 1 -1 9
1 2 3 12
1 3 X 12
2 X X 12
X X X 12
12
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exercıcios
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exercıcio 1
Escreva um algoritmo que calcula a matriz transposta de umamatriz M 4x5, preenchida com numeros inteiros aleatorios.
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exercıcio 2
Dadas duas matrizes A e B (4x5), de numeros inteiros, escreva umalgoritmo que calcula a soma A + B.
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao
Exercıcio 3
Dadas duas matrizes A (2x3) e B (3x4), de numeros inteiros,escreva um algoritmo que calcula a multiplicacao A x B.
Marcio K. Oikawa (Teoria) BC0505 - Processamento da Informacao