Algoritmos Escher Agenda • Estruturas Homogêneas; • Matrizes; • Exercícios. Matrizes Estrutura Homogênea - Matriz: Uma matriz é uma coleção homogênea bidimensional, cujos elementos são distribuídos em linhas (m) e colunas (n). Se A é uma matriz mn, então suas linhas são indexadas de 0 a m1 e suas colunas de 0 a n1. 0 Amxn = 1 2 ... m-1 1 2 ... n-1 Matrizes Estrutura Homogênea - Matriz: Uma Matriz é um conjunto que contém um número fixo de elementos. Todos elementos da matriz devem ser do mesmo tipo. Armazenam vários elementos (valores) de uma só vez. – Significa dizer: • Em uma mesma estrutura de dados, é possível ter diversas variáveis de tipos de dados simples do mesmo tipo agrupadas. linha Matrizes coluna A[1][3] A[0][0] A3x4 10 = 5 8 8 7 0 5 7 0 1 7 10 Para acessar um elemento particular de A, escrevemos Aij, sendo i o número da linha e j o número da coluna que o elemento ocupa. A [i][j] NOME ÍNDICES Matrizes Estrutura Homogênea - Matriz: Sintaxe: tipo nomematriz [linhas] [colunas]; onde: deve ser especificado o tipo dos elementos do conjunto, ou seja, int, string, real, etc. O nomematriz é o nome da variável, em linhas deve ser especificado o número máximo de linhas do conjunto e em colunas deve ser especificado o número máximo de colunas do conjunto. Matrizes Estrutura Homogênea - Matriz: Exemplo: Nome da Variável int Número máximo de linhas do conjunto MAT [200][300]; Tipo dos elementos do conjunto Número máximo de colunas do conjunto Matrizes Estrutura Homogênea - Matriz: Cada variável indexada é associada à uma posição de memória, como acontece com variáveis simples. Exemplo: real A[2][2]; MP A[0][0] A[0][1] A[1][0] A[1][1] Matrizes Estrutura Homogênea - Matriz: Atribuição: - Além do nome da variável deve-se fornecer os índices do componente onde será armazenado o valor da expressão. Exemplos: NUMEROS[2][2] 10; strcopia (NOME[10][20], “Joao”); SALARIOS[3][5] 100.00; Matrizes Estrutura Homogênea - Matriz: Leitura utilizando uma Matriz: - Feita passo a passo, um componente por vez. Sempre informando o nome da variável e o índice da linha e coluna a ser lido. Exemplo: int mat[10][5], i, j; para (i <- 0 ; i < 10; i ++ ) { para (j <- 0 ; j < 5; j ++) { imprima “numero: "; leia mat[i][j]; } } Matrizes Estrutura Homogênea - Matriz: Escrita utilizando uma Matriz: - Semelhante a leitura, feita passo a passo, um componente por vez. Sempre informando o nome da variável e os índices para manipular o elemento. Exemplo: int mat[10][5], i, j; para (i <- 0 ; i < 10; i ++) { para (j<- 0 ; j < 5; j ++) { imprima "num: ", mat[i][j], "\n"; } } Matrizes Estrutura Homogênea - Matriz: Analogia: Matrizes Estrutura Homogênea - Matriz: Exemplo 1: Ler uma matriz, TAB, de valores inteiros com 3 linhas e 3 colunas. prog matriz1 int I, J, TAB[4][3]; MATRIZ - Exemplo 1 para (I <- 0; I < 4; I++) para (J <- 0; J < 3; J++) leia TAB[I][J]; fimprog I J Teste de mesa, em relação a I e J. 0 0 leia TAB[0][0]; 1 leia TAB[0][1]; 2 leia TAB[0][2]; 1 0 leia TAB[1][0]; 1 leia TAB[1][1]; 2 leia TAB[1][2]; ... 3 0 leia TAB[3][0]; 1 leia TAB[3][1]; 2 leia TAB[3][2]; 14 Matrizes Estrutura Homogênea - Matriz: Exemplo 2: Ler uma tabela de M linhas e N colunas, o M e N deverão ser informados pelo usuário, armazenando-as em uma matriz A. Calcular a soma de todos os elementos da matriz A Número de máx. linhas prog matriz2 int S, I ,J, M, N, A[100][100]; imprima “Digite o nr de linhas e colunas:”; leia M; #recebe qtd linhas leia N; #recebe qtd colunas para (I <- 0; I < M; I++) { para (J <- 0; J < N; J++) { leia A[I][J]; } } S <- 0; para (I <- 0; I < M; I++) { para (J <- 0; J < N; J++) { S <- S + A[I][J]; } } imprima “TOTAL: ”, S; fimprog MATRIZ - Exemplo 2 Número de máx. colunas Leitura da Tabela Calculo da soma dos elementos Impressão da soma dos elementos Matrizes Estrutura Homogênea - Matriz: Exemplo 3: Ler uma matriz M3x4 e mostrar a soma da 2ª linha da matriz. A3x4 = 10 5 8 8 7 0 5 7 0 1 7 10 S = 26 prog matriz3 int I,J,LINHA,COLUNA, M[100][100], S; LINHA <- 3; COLUNA <- 4; Declarações para(I <- 0; I < LINHA; I++) { para (J <- 0; J < COLUNA; J++) { imprima "FORNECA O ", I+1, " ", J+1, ": "; leia M[I][J]; imprima "\n"; } } imprima "\n"; Leitura da matriz S <- 0; para(J <- 0; J < COLUNA; J++) { S <- S + M[1][J]; } imprima "Soma da linha 2: ",S, "\n"; fimprog Cálculo da soma da 2ª linha Escrita da Soma Referências Lopes, A. & Garcia, G. – Introdução a Programação. Schildt – C Completo e Total. Obrigado E Agora??? Exercícios!!! Exercícios Propostos 1 - Faça o programa para preencher os elementos de uma matriz (5 x 3) com o valor 6. Imprimir a matriz. 2 - Faça um programa para ler uma matriz (3 x 4) e multiplique os elementos pares por 3 (três) e os elementos ímpares por 2 (dois). Imprimir a matriz resultado. 3 - Faça o programa para preencher os elementos de uma matriz quadrada (6 x 6) com o valor 0 quando o valor da linha é igual ao valor da coluna, e com 1 para os demais elementos. Imprimir a matriz. Matrizes Estrutura Homogênea - Matriz: Exercício 4: Ler uma matriz M3x4 e gerar um vetor V cujos elementos são a soma de cada uma das linhas da matriz. Escrever o vetor V. A3x4 = 10 5 8 8 7 0 5 7 0 1 7 10 V = ( 24, 26, 18 ) prog matriz4 int I,J,LINHA,COLUNA, M[100][100], V[100]; LINHA <- 3; COLUNA <- 4; Declarações para(I <- 0; I < LINHA; I++) { para (J <- 0; J < COLUNA; J++) { imprima "FORNECA O ", I+1, " ", J+1, ": "; leia M[I][J]; imprima "\n"; } } imprima "\n"; Leitura da matriz para(I <- 0; I < LINHA; I++) { V[I] <- 0; para (J <-0; J < COLUNA; J++) { V[I] <- V[I] + M[I][J]; } } imprima "Vetor Resultante\n”; para (I <- 0; I < LINHA; I++) { imprima "Vetor Soma[", I+1,"]: ", V[I], "\n";} fimprog Cálculo do vetor soma das linhas Escrita do vetor MATRIZ - Exemplo FIM