cap i - matrizes

5
Material desenvolvido pela Prof. Cinthia. MATRIZES DEFINIÇÃO Uma matriz é uma variável homogênea, como um vetor, porém com mais de uma dimensão. Em grande parte das vezes, trabalha-se com matrizes bidimensionais, ou seja, matrizes compostas por linhas e colunas. Mas é possível ter uma matriz de dimensão n, onde n representa o número de índices da matriz. Uma matriz é composta por uma seqüência de variáveis (todas do mesmo tipo), que são alocadas seqüencialmente na memória e são referenciadas pelos seus índices. Por exemplo: Seja a matriz M abaixo: 34 45 66 180 45 33 111 334 124 76 99 55 Na matemática, 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 também, 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, é necessário declarar um array de arrays. DECLARAÇÃO A declaração de uma matriz em JAVA pode ser feita da seguinte maneira: int[][] matriz; // foi declarada uma matriz de duas dimensões matriz = new int[3][4]; Ou ainda: int matriz[][] = new int[3][4]; Observe que é possível manipular matrizes da mesma forma que se manipulava vetores, ou seja, é possível acessar cada elemento individualmente e realizar operações compatíveis com a tipo de cada elemento. No exemplo acima, como a matriz é de inteiros, é possível realizar qualquer operação 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, porém com dois comandos de repetição, 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+”] = “); M =

Upload: xmacaba

Post on 11-Jan-2016

8 views

Category:

Documents


4 download

DESCRIPTION

Cap I - Matrizes

TRANSCRIPT

Page 1: Cap I - Matrizes

Material desenvolvido pela Prof. Cinthia.

MATRIZES

DEFINIÇÃO Uma matriz é uma variável homogênea, como um vetor, porém com mais de uma dimensão. Em grande parte das vezes, trabalha-se com matrizes bidimensionais, ou seja, matrizes compostas por linhas e colunas. Mas é possível ter uma matriz de dimensão n, onde n representa o número de índices da matriz. Uma matriz é composta por uma seqüência de variáveis (todas do mesmo tipo), que são alocadas seqüencialmente na memória e são referenciadas pelos seus índices. Por exemplo: Seja a matriz M abaixo:

34 45 66 180

45 33 111 334

124 76 99 55

Na matemática, 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 também, 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, é necessário declarar um array de arrays.

DECLARAÇÃO A declaração de uma matriz em JAVA pode ser feita da seguinte maneira: int[][] matriz; // foi declarada uma matriz de duas dimensões matriz = new int[3][4];

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

Observe que é possível manipular matrizes da mesma forma que se manipulava vetores, ou seja, é possível acessar cada elemento individualmente e realizar operações compatíveis com a tipo de cada elemento. No exemplo acima, como a matriz é de inteiros, é possível realizar qualquer operação 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, porém com dois comandos de repetição, 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+”] = “);

M =

Page 2: Cap I - Matrizes

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. Faça um programa que carregue uma matriz 2X2, calcule e mostre uma nova matriz gerada pela multiplicação 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.MsgDeInformação("RESULTADO", novaMatriz); System.exit(0); } }

Page 3: Cap I - Matrizes

Material desenvolvido pela Prof. Cinthia.

2. Faça um programa que carregue uma matriz 10X3 com as notas de 10 alunos em três provas. Mostre em uma janela, a média de cada estudante e, depois, em outra janela, a média 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)+":"); //cálculo da média de cada aluno mediaAlunos = ""; for (lin=0; lin < NALUNOS; lin++){ mediaAlunos += "Média do aluno "+(lin+1)+" = "; media = 0; for (col=0; col< NPROVAS; col++) media += notas[lin][col]; media = media / NPROVAS; mediaAlunos = mediaAlunos + media + "\n"; } InOut.MsgDeInformação("MÉDIA DE TODOS OS ALUNOS", mediaAlunos); //cálculo da média da turma em cada prova mediaTurma = ""; for (col=0; col < NPROVAS; col++){ mediaTurma += "Média 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.MsgDeInformação("MÉDIA 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, são declaradas com todas as letras maiúsculas. Ex. final int MAX = 5; Na verdade, constantes são variáveis que, uma vez atribuído um valor para ela, esse valor não pode ser alterado ao longo do programa. Pensando assim, é possível ler um valor inicial para uma constante: final byte LIN = InOut.leByte("QUANTIDADE DE LINHAS");

Page 4: Cap I - Matrizes

Material desenvolvido pela Prof. Cinthia.

Ao declarar uma constante no método 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 método da classe MatrizIdentidade, sem que seja passada por parâmetro. 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){…} }

EXERCÍCIOS: 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, senão ‘NÃO É IDENTIDADE’.

OBS: Exemplos de matriz identidade (somente para matrizes quadradas):

100010001

2. Implemente um programa que leia uma matriz (LxC) de inteiros. Este programa deverá arma-zenar a transposta em uma outra matriz e mostrar a matriz no final bem como sua transposta:

A =

ihgfedcba

, logo, At =

ifchebgda

3. Faça um programa que carregue uma matriz 10X20 com números 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. Faça um programa que carregue uma matriz 7X7 de números inteiros e crie dois vetores de sete posições 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. Faça um programa que carregue uma matriz quadrada (a dimensão deve ser dada pelo usuário) 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 contém vários itens que estão estocados em diversos armazéns de uma companhia. É fornecido também o custo de cada um dos produtos armazenados.

Produto 1 (unidade)

Produto 2 (unidade)

Produto 3 (unidade)

Armazém 1 1200 3700 3737

Armazém 2 1400 4210 4224

Page 5: Cap I - Matrizes

Material desenvolvido pela Prof. Cinthia.

Armazém 3 2000 2240 2444

Custo (R$) 260 420 330

Faça um programa que: a) Leia o estoque inicial b) Determine e imprima quantos itens estão armazenados em cada armazém. c) Determine e imprima qual o armazém que possui a maior quantidade do produto2

armazenado. d) O custo total de:

d.1) cada produto em cada armazém d.2) estoque em cada armazém d.3) cada produto em todos os armazéns

7. Faça um programe que deverá carregar uma matriz 2X12 que representa a temperatura máxima e a mínima na Grande Vitória durante cada mês do ano de 2005. Calcule e imprima o mês em que ocorreu a maior diferença de temperatura e qual foi esta diferença.

8. Faça um programa para controlar dados de alunos. Este programa deverá exibir o seguinte menu: 1 - Cadastrar Aluno 2 - Consultar 3 - Sair Na opção 1 os dados de um aluno deverão ser digitados, estes dados são: nome, nota1 e nota2. Na opcao 2 o usuário digitará o nome de um aluno e sua média será exibida. Na opção 3 o programa será finalizado.

OBS. O número de alunos será de no máximo 100.