Você está na página 1de 5

Material desenvolvido pela Prof. Cinthia.

MATRIZES
DEFINIO
Uma matriz uma varivel homognea, como um vetor, porm com mais de uma dimenso. Em
grande parte das vezes, trabalha-se com matrizes bidimensionais, ou seja, matrizes compostas por
linhas e colunas. Mas possvel ter uma matriz de dimenso n, onde n representa o nmero de
ndices da matriz.
Uma matriz composta por uma seqncia de variveis (todas do mesmo tipo), que so alocadas
seqencialmente na memria e so referenciadas pelos seus ndices.
Por exemplo: Seja a matriz M abaixo:
M=

34

45

45

33 111 334

124 76

66
99

180
55

Na matemtica, o elemento M[1][3] o elemento que se encontra na 1 linha e 3 coluna da matriz


M, ou seja, M[1][3] = 66.
J em Java, como a 1 linha a linha zero e a 1 coluna tambm, o elemento M[1][3]=334 que o
elemento da linha 1 (2 linha da matriz) e coluna 3 (4 coluna da matriz).

Observe que em JAVA, para se obter um array multidimensional, necessrio declarar um array de
arrays.
DECLARAO
A declarao de uma matriz em JAVA pode ser feita da seguinte maneira:
int[][] matriz; // foi declarada uma matriz de duas dimenses
matriz = new int[3][4];

Ou ainda:
int matriz[][] = new int[3][4];

Observe que possvel manipular matrizes da mesma forma que se manipulava vetores, ou seja,
possvel acessar cada elemento individualmente e realizar operaes compatveis com a tipo de
cada elemento. No exemplo acima, como a matriz de inteiros, possvel realizar qualquer
operao sobre inteiros em cada elemento da matriz.
CARREGANDO UMA MATRIZ
Ainda tomando como exemplo a matriz 3X4 declarada acima, o processo de carregamento (leitura
do teclado) ser semelhante ao carregamento de um vetor, porm com dois comandos de repetio,
um para referenciar a linha e outro para referenciar a coluna em que o elemento se encontra.
for (lin = 0; lin < 3; lin++)
for (col = 0; col < 4; col++)
matriz[lin][col] = InOut.leInt (M[+lin+, +col+] = );

Material desenvolvido pela Prof. Cinthia.


Assim, cada elemento da matriz ser lido e armazenado em seu devido lugar, pois lin varia de 0 a 2
e col varia de 0 a 3.
FORMANDO UMA STRING PARA MOSTRAR OS ELEMENTOS DE UMA MATRIZ
String matriz= ;
int mat[][] = new int[3][4];
int lin, col;
//Entrada de dados
for (lin = 0; lin < 3; lin++)
for (col = 0; col < 4; col++)
matriz[lin][col] = InOut.leInt (M[+lin+, +col+] = );
//Formando uma String
for (lin = 0; lin < 3; lin++) {
for (col = 0; col < 4; col++) {
matriz += | +mat[lin][col]+;
}
matriz += |\n
}

Exemplo:
1. Faa um programa que carregue uma matriz 2X2, calcule e mostre uma nova matriz gerada pela
multiplicao da matriz original pelo seu maior elemento.
package matrizes;
import io.*;
public class Exemplo1 {
public static void main (String[] args){
final int TAM = 2;
int mat[][] = new int[TAM][TAM];
int lin, col, maior;
String novaMatriz;
//Entrada dos dados
for (lin=0; lin < TAM; lin++)
for (col=0; col< TAM; col++)
mat[lin][col] = InOut.leInt("MAT["+lin+","+col+"] = ");
//Busca do maior elemento da matriz
maior = mat[0][0];
for (lin=0; lin < TAM; lin++)
for (col=0; col< TAM; col++)
if (mat[lin][col] > maior)
maior = mat[lin][col];
//Formando a String que representa a nova matriz
novaMatriz = "A nova Matriz ser:\n";
for (lin=0; lin < TAM; lin++){
for (col=0; col< TAM; col++){
novaMatriz += " | " + (mat[lin][col]*maior);
}
novaMatriz += " |\n";
}
//Mostrando na janela a nova matriz
InOut.MsgDeInformao("RESULTADO", novaMatriz);
System.exit(0);
}
}

Material desenvolvido pela Prof. Cinthia.


2. Faa um programa que carregue uma matriz 10X3 com as notas de 10 alunos em trs provas.
Mostre em uma janela, a mdia de cada estudante e, depois, em outra janela, a mdia da turma em
cada prova.
package matrizes;
import io.InOut;
public class Exemplo2 {
public static void main (String[] args){
final int NALUNOS = 10;
final int NPROVAS = 3;
float notas[][] = new float[NALUNOS][NPROVAS];
int lin, col;
double media;
String mediaAlunos, mediaTurma;
for (lin=0; lin < NALUNOS; lin++)
for (col=0; col< NPROVAS; col++)
notas[lin][col] = InOut.leFloat("Digite a nota "+(col+1)+
" do aluno "+ (lin+1)+":");
//clculo da mdia de cada aluno
mediaAlunos = "";
for (lin=0; lin < NALUNOS; lin++){
mediaAlunos += "Mdia do aluno "+(lin+1)+" = ";
media = 0;
for (col=0; col< NPROVAS; col++)
media += notas[lin][col];
media = media / NPROVAS;
mediaAlunos = mediaAlunos + media + "\n";
}
InOut.MsgDeInformao("MDIA DE TODOS OS ALUNOS", mediaAlunos);
//clculo da mdia da turma em cada prova
mediaTurma = "";
for (col=0; col < NPROVAS; col++){
mediaTurma += "Mdia da turma da prova "+(col+1)+
" = ";
media = 0;
for (lin=0; lin< NALUNOS; lin++)
media += notas[lin][col];
media = media / NALUNOS;
mediaTurma += media + "\n";
}
InOut.MsgDeInformao("MDIA DA TURMA EM CADA PROVA ",
mediaTurma);
System.exit(0);
}
}

COMO DECLARAR CONSTANTES


Constantes em Java devem ser declaradas com a palavra chave final, e, em geral, so declaradas
com todas as letras maisculas.
Ex.
final int MAX = 5;

Na verdade, constantes so variveis que, uma vez atribudo um valor para ela, esse valor no pode
ser alterado ao longo do programa. Pensando assim, possvel ler um valor inicial para uma
constante:
final byte LIN = InOut.leByte("QUANTIDADE DE LINHAS");

Material desenvolvido pela Prof. Cinthia.


Ao declarar uma constante no mtodo main, ela s poder ser acessada internamente. Mas, se ela
for declarada fora do main e com a palavra static na frente, ela poder ser acessada em qualquer
mtodo da classe MatrizIdentidade, sem que seja passada por parmetro. Ou seja, ela passa a ter
escopo global.
public class Matriz Identidade{
static final byte LIN = InOut.leByte("QUANTIDADE DE LINHAS");
static final byte COL = InOut.leByte("QUANTIDADE DE COLUNAS");
public static void main (String[] args){}
}

EXERCCIOS:
1. Implemente um programa que leia uma matriz (LxC) de inteiros. O programa dever verificar se
a matriz identidade. Se for a mensagem: MATRIZ IDENTIDADE deve ser exibida, seno NO
IDENTIDADE.
OBS: Exemplos de matriz identidade (somente para matrizes quadradas):

1 0 0

0 1 0
0 0 1

2. Implemente um programa que leia uma matriz (LxC) de inteiros. Este programa dever armazenar a transposta em uma outra matriz e mostrar a matriz no final bem como sua transposta:
a b c
a d g

t
A = d e f , logo, A = b e h

g h i
c f i
3. Faa um programa que carregue uma matriz 10X20 com nmeros inteiros e some cada uma das
linhas, armazenando o resultado das somas em um vetor. A seguir, multiplique cada elemento da
matriz pela soma da linha, armazenando este resultado em uma segunda matriz e mostre a matriz
resultante.
4. Faa um programa que carregue uma matriz 7X7 de nmeros inteiros e crie dois vetores de sete
posies cada um e que contenham, respectivamente, o maior elemento de cada uma das linhas e o
menor elemento de cada uma das colunas. Escreva, no final, a matriz e os dois vetores.
5. Faa um programa que carregue uma matriz quadrada (a dimenso deve ser dada pelo usurio) e,
em seguida, some os elementos da diagonal principal, os elementos abaixo da diagonal principal e
os elementos acima da diagonal principal e mostre todos esses resultados.
6. A tabela a seguir contm vrios itens que esto estocados em diversos armazns de uma
companhia. fornecido tambm o custo de cada um dos produtos armazenados.
Produto 1
(unidade)

Produto 2
(unidade)

Produto 3
(unidade)

Armazm 1

1200

3700

3737

Armazm 2

1400

4210

4224

Material desenvolvido pela Prof. Cinthia.


Armazm 3

2000

2240

2444

Custo (R$)

260

420

330

Faa um programa que:


a) Leia o estoque inicial
b) Determine e imprima quantos itens esto armazenados em cada armazm.
c) Determine e imprima qual o armazm que possui a maior quantidade do produto2
armazenado.
d) O custo total de:
d.1) cada produto em cada armazm
d.2) estoque em cada armazm
d.3) cada produto em todos os armazns
7. Faa um programe que dever carregar uma matriz 2X12 que representa a temperatura mxima e
a mnima na Grande Vitria durante cada ms do ano de 2005. Calcule e imprima o ms em que
ocorreu a maior diferena de temperatura e qual foi esta diferena.
8. Faa um programa para controlar dados de alunos. Este programa dever exibir o seguinte menu:
1 - Cadastrar Aluno
2 - Consultar
3 - Sair
Na opo 1 os dados de um aluno devero ser digitados, estes dados so: nome, nota1 e nota2.
Na opcao 2 o usurio digitar o nome de um aluno e sua mdia ser exibida.
Na opo 3 o programa ser finalizado.
OBS. O nmero de alunos ser de no mximo 100.