Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Estruturas Compostas 
Homogêneas 
(Matrizes) 
Programação 
 
 
2 
Matrizes 
 Vimos que vetores são utilizados para armazenar dados de uma 
única “fileira”. 
 Porém, existem situações em que a natureza dos dados exige uma 
forma de armazenamento em mais de uma dimensão. 
 Para estas situações, existem as matrizes, que podem ser vistas 
como vetores que possuem mais de uma dimensão (normalmente 
duas). 
 Por ser bidimensional, uma matriz representa uma tabela de valores 
colocados em linhas e colunas. 
 Para identificar um valor é necessário informar a linha e a coluna 
 Conhecidas como tabelas, ou variáveis indexadas bidimensionais 
 Um vetor pode ser visto como uma matriz com uma única linha. 
3 
Matrizes 
 Sintaxe para declaração de uma matriz: 
 
 
 Sintaxe para referenciação de uma posição: 
 
 
 Exemplos: 
 Declaração: 
 
 Referenciação: 
<var> : vetor[<inicio1>..<fim1>,<inicio2>..<fim2>,...] de <tipo>; 
valor : vetor[1..3,1..4] de real; 
valor[1,1] <- 8.50; 
<nome_vetor>[<posicao1>,<posicao2>,...]; 
valor[2,3] <- 7.3; 
4 
Matrizes 
 Exemplo 
 Um distribuidor de refrigerantes vende seu produto em todo o país. 
Em cada trimestre do ano passado ele vendeu uma certa 
quantidade de garrafas em cada região do Brasil. Faça um 
algoritmo para ler as quantidades vendidas e escrever a 
quantidade total vendida em todo o país. 
 Solução 
 Pelo enunciado do problema, vimos que existem 20 dados de 
entrada, pois temos 4 trimestres no ano e cada trimestre teve uma 
venda para cada uma das cinco regiões do Brasil. 
 O enunciado do problema também nos leva a concluir que 
devemos utilizar uma estrutura matricial ao invés de vetorial. 
 Temos vendas para regiões por trimestre. 
5 
Matrizes 
 Solução (cont.) 
 A tabela abaixo mostra uma representação possível para os 
dados do problema: 
150 1150 900 1500 400 
180 980 1100 2300 650 
140 1000 950 2100 500 
210 1600 1400 2600 840 
1 - Norte 2 - Nordeste 3 - Sul 4 - Sudeste 5 – Centro- 
Oeste 
1º Trimestre 
2º Trimestre 
3º Trimestre 
4º Trimestre 
6 
Matrizes 
 Solução (cont.): 
 Então o algoritmo fica assim: 
Variáveis 
 quant : vetor[1..4,1..5] de inteiro; 
 i, j, soma : inteiro; 
Início 
 para i de 1 até 4 faça 
 para j de 1 até 5 faça [[ 
 escrever “Informe a quantidade do “, i, “º trimestre e “, j, “ª região: “; 
 ler quant[i,j]; 
 ]]; 
 soma = 0; 
 para i de 1 até 4 faça 
 para j de 1 até 5 faça 
 soma = soma + quant[i,j]; 
 escrever “O total das quantidades vendidas é ”, soma; 
Fim. 
7 
Matrizes em VisuAlg 
 Acessando os elementos de um array multidimensional: 
 
var 
i , j : inteiro 
a : vetor [1..3, 1..2] de inteiro 
inicio 
para i de 1 ate 3 faca 
 para j de 1 ate 2 faca 
 escrevaL(a[ i , j ] ) 
 fimpara 
fimpara 
fimalgoritmo 
 
8 
Solução Exemplo em VisuAlg 
algoritmo "matriz_vendas" 
 
var 
quant : vetor [1..4, 1..5] de inteiro 
i , j , soma : inteiro 
inicio 
para i de 1 ate 4 faca 
 para j de 1 ate 5 faca 
 escreva("Informe a quantidade do ", i,"º trimestre e ", j, "ª região: ") 
 leia(quant[ i , j ]) 
 fimpara 
fimpara 
soma <- 0 
para i de 1 ate 4 faca 
 para j de 1 ate 5 faca 
 soma <- soma + quant[ i , j ] 
 fimpara 
fimpara 
escrevaL("O total das quantidades vendidas é ", soma) 
 
fimalgoritmo 
 
9 
Matrizes 
 Exercício: 
 
 Faça um programa que solicite ao usuário os 
dados de uma matriz com 3 linhas e 4 
colunas de números inteiros. Em seguida, 
exiba a matriz digitada pelo usuário, 
colocando todos os elementos de cada linha 
em uma mesma linha da tela. 
10 
Solução (VisuAlg) 
algoritmo "matriz" 
 
var 
i , j : inteiro 
a : vetor [1..3, 1..4] de inteiro 
inicio 
para i de 1 ate 3 faca 
 para j de 1 ate 4 faca 
 escreva("digite o valor do elemento da ",i,"º linha e ",j,"º coluna: ") 
 leia(a[ i , j ]) 
 fimpara 
fimpara 
escrevaL("A matriz digitada foi:") 
para i de 1 ate 3 faca 
 para j de 1 ate 4 faca 
 escreva(a[ i , j ] ) 
 fimpara 
 escrevaL() 
fimpara 
 
fimalgoritmo 
11 
Matrizes em Java 
 Criadas utilizando arrays multidimensionais. 
 Arrays multidimensionais com duas dimensões 
costumam ser utilizados para representar tabelas de 
valores: 
 Informações dispostas na forma de linhas e colunas. 
 Chamados de arrays bidimensionais pois precisam de dois 
índices para identificação dos elementos. 
 Java não suporta arrays multidimensionais diretamente. 
 É necessário criar um array unidimensional e definir que seus 
elementos também são arrays unidimensionais; 
 Praticamente possuem o mesmo efeito. 
12 
Matrizes em C/C++ 
 Criadas utilizando arrays multidimensionais. 
 
 Arrays multidimensionais com duas dimensões 
costumam ser utilizados para representar tabelas 
de valores: 
 Informações dispostas na forma de linhas e colunas. 
 Chamados de arrays bidimensionais pois precisam de 
dois índices para identificação dos elementos. 
13 
Arrays Multidimensionais 
 Cada elemento do array é identificado por uma 
expressão de acesso da forma 
 nomeArray [ linha ] [ coluna ]. 
a[ 0 ] [ 0 ] a[ 0 ] [ 1 ] a[ 0 ] [ 2 ] a[ 0 ] [ 3 ] 
a[ 1 ] [ 0 ] a[ 1 ] [ 1 ] a[ 1 ] [ 2 ] a[ 1 ] [ 3 ] 
a[ 2 ] [ 0 ] a[ 2 ] [ 1 ] a[ 2 ] [ 2 ] a[ 2 ] [ 3 ] 
14 
Arrays Multidimensionais 
 Declaração (exemplos): 
 
int b[2][2] = { { 1, 2 }, { 3, 4 } }; 
 
 ou 
 
int b[4][5]; 
 
15 
Arrays Multidimensionais 
 Acessando os elementos de um array 
multidimensional: 
int a [ 3 ][ 2 ]; 
for (int i = 0; i < 3; i++) { 
 for (int j = 0; j < 2; j++) { 
 printf(“%d\n”, a[ i ][ j ]); 
 } 
} 
16 
Solução Exemplo em C/C++ 
int main { 
 int quant [ 4 ][ 5 ]; 
 int soma = 0, valor = 0; 
 
 // lê os valores para cada região e cada trimestre 
 for (int i = 0; i < 4 ; i++) { 
 for (int j = 0; j < 5 ; j++) { 
 printf("informe a quantidade do %dº trimestre e %dª região“, 
(i+1),(j+1)); 
 scanf(“%d”, &quant[ i ][ j ] ); 
 } 
 } 
17 
Solução Exemplo em C/C++ 
 // soma todos os valores armazenados na matriz 
 for (int i = 0; i < 4 ; i++) { 
 for (int j = 0; j < 5 ; j++) 
 soma = soma + quant[ i ][ j ]; 
 } 
 printf("O total de quantidades vendidas é: %d" , soma); 
 
 return 0; 
} 
18 
Solução Exemplo em Java 
public static void main(String[] args) { 
 int[ ][ ] quant = new int[ 4 ][ 5 ]; 
 int soma = 0, valor = 0; 
 
 // lê os valores para cada região e cada trimestre 
 for (int i = 0; i < quant.length; i++) { 
 for (int j = 0; j < quant[ i ].length; j++) { 
 System.out.println("informe a quantidade do "+(i+1)+"º 
trimestre e " +(j+1)+"ª região"); 
 valor = leia(valor); 
 quant[ i ][ j ] = valor; 
 } 
 } 
19 
Solução Exemplo em Java 
 // soma todos os valores armazenados na matriz 
 for (int i = 0; i < quant.length; i++) { 
 for (int j = 0; j < quant[ i ].length; j++) 
 soma = soma + quant[ i ][ j ]; 
 } 
 System.out.println("O total de quantidades vendidas é:" + soma); 
20 
Matrizes 
 Exercício (1) 
Faça um programa que solicite ao usuário o 
tamanho em linhas e colunas de uma matriz, 
bem como os dados da mesma. Em seguida, 
exiba a matriz digitada pelo usuário, 
colocando todos os elementos de cada linha 
em uma mesma linha do console. 
21 
Solução (1) (C/C++) 
int main() 
{ 
 int num_linha=0, num_coluna=0; 
 
 printf("Digite o número de linhas da matriz: "); 
 scanf("%d", &num_linha); 
 printf("Digite o número de colunas da matriz: "); 
 scanf("%d", &num_coluna); 
 
 int a[num_linha][num_coluna] ; 
 
 for (int i = 0; i < num_linha; i++) { 
 for (int j = 0; j < num_coluna; j++) { 
 printf("Digite o elemento da %dº linha e %dº coluna: ", (i+1), (j+1)); 
 scanf("%d", &a[i][j] ); 
 } 
 }22 
Solução (1) (C/C++) 
 
 printf("A matriz digitada foi: \n"); 
 
 for (int i = 0; i < num_linha; i++) { 
 for (int j = 0; j < num_coluna; j++) 
 printf("%d ", a[i][j]); 
 printf("\n"); 
 } 
 
 return 0; 
} 
23 
Solução (Java) 
public static void main(String[] args) { 
 int num_linha=0, num_coluna=0, valor = 0; 
 System.out.println("Digite o número de linhas da matriz"); 
 num_linha = leia(num_linha); 
 System.out.println("Digite o número de colunas da matriz"); 
 num_coluna = leia(num_coluna); 
 int[ ][ ] a = new int[ num_linha ][ num_coluna ]; 
 for (int i = 0; i < a.length; i++) { 
 for (int j = 0; j < a[ i ].length; j++) { 
 System.out.println("digite o valor do elemento da "+(i+1)+"º 
linha e " +(j+1)+"º coluna"); 
 valor = leia(valor); 
 a[ i ][ j ] = valor; 
 } 
24 
Solução (Java) 
 } 
 System.out.println("A matriz digitada foi:"); 
 for (int i = 0; i < a.length; i++) { 
 for (int j = 0; j < a[ i ].length; j++) 
 System.out.print(a[ i ][ j ]+ " "); 
 System.out.println(); 
 } 
} 
25 
Matrizes 
 Exercícios (2 e 3) 
Faça um programa que leia uma matriz e exiba 
o menor valor, o maior valor e a média dos 
elementos presentes nesta matriz. 
 
Crie uma matriz 7x8 onde cada elemento é a 
soma dos índices de sua posição dentro da 
matriz. 
26 
Solução (2) (C/C++) 
int main() 
{ 
 // Leitura da matriz - solução (1) 
 int menor, maior; 
 float soma, media; 
 menor = a[0][0]; 
 maior = a[0][0]; 
 soma = 0; 
 for (int i = 0; i < num_linha; i++) 
 for (int j = 0; j < num_coluna; j++){ 
 if (a[i][j]>maior) maior = a[i][j]; 
 if (a[i][j]<menor) menor = a[i][j]; 
 soma = soma + a[i][j]; 
 } 
 media = soma / (num_linha*num_coluna); 
 printf("Maior = %d \n", maior); 
 printf("Menor = %d \n", menor); 
 printf("Media = %f \n\n", media); 
} 
27 
Solução (3) (C/C++) 
int main() 
{ 
 // Leitura da matriz - solução (1) 
 
 int m[7][8]; 
 for (int i = 0; i < 7; i++) 
 for (int j = 0; j < 8; j++) 
 m[i][j] = i + j; 
 
 printf("A matriz gerada foi: \n"); 
 for (int i = 0; i < 7; i++) { 
 for (int j = 0; j < 8; j++) 
 printf("%d ", m[i][j]); 
 printf("\n"); 
 } 
 
 return 0; 
} 
Dúvidas ?

Mais conteúdos dessa disciplina