Anda di halaman 1dari 51

BC0505 - Processamento da Informacao

Matrizes
Marcio K. Oikawa (Teoria)

Marco/2015

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

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 Informac


ao

Introducao

Uma matriz pode ser vista como uma generalizacao de vetores (o


vetor e um caso particular de matriz). Exceto por sua estrutura, os
objetivos e caractersticas da matriz sao bem similares aos vetores:
Estruturas de armazenamento que pode guardar varios valores
ao mesmo tempo;
Permite o processamento homogeneo de varios valores ao
mesmo tempo.
Esta ligado a muitas aplicac
oes praticas.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Matrizes

Sao caractersticas de uma matriz:


Armazena varios valores em uma u
nica variavel;
Os valores sao armazenados em posic
oes indexadas, assim
como o vetor, mas temos dois ndices de referencia (linha e
coluna);
Os ndices sao n
umeros inteiros, organizados de forma
crescente 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 Informac


ao

Visao abstrata de uma matriz


Declaracao de uma matriz M
int M[][] = new int [4][5];
0

0
1
2
3

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

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. A
diferenca e que deve-se declarar os dois ndices (quando a matriz
for bidimensional).

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Visao esquematica de uma matriz


Declaracao de V
int M[][] = new int [4][5];

0
1
2
3

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Acessando elementos da matriz


0

-3

-1

11

13

21

-4

-8

int a =
M[0][3]
M[2][2]
M[3][4]

3;
= a;
= M[1][3] + M[0][2];
= 32;

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo 1

Escreva um algoritmo encontra o menor elemento de uma matriz 3


x 4 de n
umeros inteiros. Preencha inicialmente a matriz com
valores aleatorios.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo

Algoritmo 1: Identificacao do menor n


umero inteiro
1: inteiro: M[3][4]
2:
3:
4:
5:
6:
7:
8:
9:

{Primeiro, preencha a matriz...}


para i 0 at
e 3 faca
para j 0 at
e 4 faca
M[i][j] Aleatorio()
fim para
fim para
...

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
Algoritmo 2: Identificacao do menor n
umero inteiro
1: ...
2: {... e depois ache o menor elemento}
3: menor M[0][0]
4:
5:
6:
7:
8:
9:
10:
11:

para i 0 at
e 3 faca
para j 0 at
e 4 faca
se M[i][j] < menor ent
ao
menor M[i][j]
fim se
fim para
fim para

12:
13:
14:

escreva (O menor elemento eh)


escreva (menor)
Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Em Java

Codificando em Java ...

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Em Java
Alguns detalhes sobre matrizes em Java:
O n
umero de elementos e obrigatoriamente um n
umero inteiro
positivo;
Pode-se descobrir a quantidade de elementos do vetor
acessando 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 de
execucao.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Outro exemplo

Escreva um algoritmo que calcula a soma dos elementos de uma


matriz 2 x 3, preenchida com n
umeros inteiros aleatorios.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

M[i][j]

soma

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

i
X

j
X

M[i][j]
X

soma
0

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

i
X
0

j
X
X

M[i][j]
X
X

soma
0
0

int soma = 0;
for ( int i=0 ; i<2; i++){
for (int j=0; j<3; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

i
X
0

j
X
X

M[i][j]
X
X

soma
0
0

int soma = 0;
for (int i=0; i<2 ; i++){
for (int j=0; j<3; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

i
X
0

j
X
0

M[i][j]
X
-2

soma
0
0

int soma = 0;
for (int i=0; i<2; i++){
for ( int j=0 ; j<3; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

i
X
0

j
X
0

M[i][j]
X
-2

soma
0
0

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3 ; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

i
X
0

j
X
0

M[i][j]
X
-2

soma
0
-2

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3; j++){
soma = soma + M[i][j] ;
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

i
X
0
0

j
X
0
1

M[i][j]
X
-2
8

soma
0
-2
-2

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3; j++ ){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

i
X
0
0

j
X
0
1

M[i][j]
X
-2
8

soma
0
-2
-2

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3 ; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

i
X
0
0

j
X
0
1

M[i][j]
X
-2
8

soma
0
-2
6

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3; j++){
soma = soma + M[i][j] ;
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

i
X
0
0
0

j
X
0
1
2

M[i][j]
X
-2
8
0

soma
0
-2
6
6

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3; j++ ){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

i
X
0
0
0

j
X
0
1
2

M[i][j]
X
-2
8
0

soma
0
-2
6
6

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3 ; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

i
X
0
0
0

j
X
0
1
2

M[i][j]
X
-2
8
0

soma
0
-2
6
6

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3; j++){
soma = soma + M[i][j] ;
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

i
X
0
0
0
0

j
X
0
1
2
3

M[i][j]
X
-2
8
0
X

soma
0
-2
6
6
6

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3; j++ ){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

i
X
0
0
0
0

j
X
0
1
2
3

M[i][j]
X
-2
8
0
X

soma
0
-2
6
6
6

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3 ; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

i
X
0
0
0
0

j
X
0
1
2
3

M[i][j]
X
-2
8
0
X

soma
0
-2
6
6
6

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;

i
X
0
0
0
0
1

j
X
0
1
2
3
X

M[i][j]
X
-2
8
0
X
X

soma
0
-2
6
6
6
6

for (int i=0; i<2; i++ ){


for (int j=0; j<3; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;

i
X
0
0
0
0
1

j
X
0
1
2
3
0

M[i][j]
X
-2
8
0
X
4

soma
0
-2
6
6
6
6

for (int i=0; i<2; i++){


for ( int j=0 ; j<3; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;

i
X
0
0
0
0
1

j
X
0
1
2
3
0

M[i][j]
X
-2
8
0
X
4

soma
0
-2
6
6
6
6

for (int i=0; i<2; i++){


for (int j=0; j<3 ; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;

i
X
0
0
0
0
1

j
X
0
1
2
3
0

M[i][j]
X
-2
8
0
X
4

soma
0
-2
6
6
6
10

for (int i=0; i<2; i++){


for (int j=0; j<3; j++){
soma = soma + M[i][j] ;
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;

i
X
0
0
0
0
1
1

j
X
0
1
2
3
0
1

M[i][j]
X
-2
8
0
X
4
-1

soma
0
-2
6
6
6
10
10

for (int i=0; i<2; i++){


for (int j=0; j<3; j++ ){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;

i
X
0
0
0
0
1
1

j
X
0
1
2
3
0
1

M[i][j]
X
-2
8
0
X
4
-1

soma
0
-2
6
6
6
10
10

for (int i=0; i<2; i++){


for (int j=0; j<3 ; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;

i
X
0
0
0
0
1
1

j
X
0
1
2
3
0
1

M[i][j]
X
-2
8
0
X
4
-1

soma
0
-2
6
6
6
10
9

for (int i=0; i<2; i++){


for (int j=0; j<3; j++){
soma = soma + M[i][j] ;
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3; j++ ){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

i
X
0
0
0
0
1
1
1

j
X
0
1
2
3
0
1
2

M[i][j]
X
-2
8
0
X
4
-1
3

soma
0
-2
6
6
6
10
9
9

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3 ; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

i
X
0
0
0
0
1
1
1

j
X
0
1
2
3
0
1
2

M[i][j]
X
-2
8
0
X
4
-1
3

soma
0
-2
6
6
6
10
9
9

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3; j++){
soma = soma + M[i][j] ;
}
}

Marcio K. Oikawa (Teoria)

i
X
0
0
0
0
1
1
1

j
X
0
1
2
3
0
1
2

M[i][j]
X
-2
8
0
X
4
-1
3

soma
0
-2
6
6
6
10
9
12

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3; j++ ){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

i
X
0
0
0
0
1
1
1
1

j
X
0
1
2
3
0
1
2
3

M[i][j]
X
-2
8
0
X
4
-1
3
X

soma
0
-2
6
6
6
10
9
12
12

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3 ; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

i
X
0
0
0
0
1
1
1
1

j
X
0
1
2
3
0
1
2
3

M[i][j]
X
-2
8
0
X
4
-1
3
X

soma
0
-2
6
6
6
10
9
12
12

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

i
X
0
0
0
0
1
1
1
1

j
X
0
1
2
3
0
1
2
3

M[i][j]
X
-2
8
0
X
4
-1
3
X

soma
0
-2
6
6
6
10
9
12
12

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;
for (int i=0; i<2; i++ ){
for (int j=0; j<3; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

i
X
0
0
0
0
1
1
1
1
2

j
X
0
1
2
3
0
1
2
3
X

M[i][j]
X
-2
8
0
X
4
-1
3
X
X

soma
0
-2
6
6
6
10
9
12
12
12

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;
for (int i=0; i<2 ; i++){
for (int j=0; j<3; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

i
X
0
0
0
0
1
1
1
1
2

j
X
0
1
2
3
0
1
2
3
X

M[i][j]
X
-2
8
0
X
4
-1
3
X
X

soma
0
-2
6
6
6
10
9
12
12
12

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

i
X
0
0
0
0
1
1
1
1
2
X

j
X
0
1
2
3
0
1
2
3
X
X

M[i][j]
X
-2
8
0
X
4
-1
3
X
X
X

soma
0
-2
6
6
6
10
9
12
12
12
12

BC0505 - Processamento da Informac


ao

Exemplo
0

-2

-1

int soma = 0;
for (int i=0; i<2; i++){
for (int j=0; j<3; j++){
soma = soma + M[i][j];
}
}

Marcio K. Oikawa (Teoria)

i
X
0
0
0
0
1
1
1
1
2
X

j
X
0
1
2
3
0
1
2
3
X
X

M[i][j]
X
-2
8
0
X
4
-1
3
X
X
X

soma
0
-2
6
6
6
10
9
12
12
12
12
12

BC0505 - Processamento da Informac


ao

Exerccios

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exerccio 1

Escreva um algoritmo que calcula a matriz transposta de uma


matriz M 4x5, preenchida com n
umeros inteiros aleatorios.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exerccio 2

Dadas duas matrizes A e B (4x5), de n


umeros inteiros, escreva um
algoritmo que calcula a soma A + B.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exerccio 3

Dadas duas matrizes A (2x3) e B (3x4), de n


umeros inteiros,
escreva um algoritmo que calcula a multiplicacao A x B.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Anda mungkin juga menyukai