Baixe o app para aproveitar ainda mais
Prévia do material em texto
VETORES E MATRIZES 1 MATRIZES O que é uma matriz? Uma estrutura de dados que contém várias variáveis do mesmo tipo Qual a diferença de vetores para matrizes? Vetores são, na verdade, matrizes de uma única dimensão: 1 3 4 6 Vetores a maria jota Matrizes 1 3 40 4 6 12 M J K G A C L Z H 1.1 7.5 9.2 8.8 9.0 1.3 5.5 7.9 2 MATRIZES As matrizes são, comumente referenciadas através de suas dimensões (quantidade de linhas e colunas) A notação comum é: MxN, onde M é a dimensão vertical (quantidade de linhas) N é dimensão horizontal (quantidade de colunas) Exemplo: 3x3 3x2 2x3 4x1 1x3 Vetores: a quantidade de linhas é sempre 1! 3 MATRIZES Notação Como referenciar um elemento específico da matriz? Exemplo: Matriz 3x2 (três linhas e duas colunas) 1 2 1 2 3 As linhas variam de 1 até 3 As colunas variam de 1 até 2 4 MATRIZES Notação Como referenciar um elemento específico da matriz? Exemplo: Matriz 3x2 (três linhas e duas colunas) Para acessar esse elemento, devemos observar qual cruzamento linha x coluna da matriz ele representa 1 2 1 1,1 2 3 Linha 1 Coluna 1 5 MATRIZES Notação Como referenciar um elemento específico da matriz? Exemplo: Matriz 3x2 (três linhas e duas colunas) Linha 1 Coluna 2 1 2 1 1,1 1,2 2 3 6 MATRIZES Notação Como referenciar um elemento específico da matriz? Exemplo: Matriz 3x2 (três linhas e duas colunas) Linha 2 Coluna 1 1 2 1 1,1 1,2 2 2,1 3 7 MATRIZES Notação Como referenciar um elemento específico da matriz? Exemplo: Matriz 3x2 (três linhas e duas colunas) Linha 2 Coluna 2 1 2 1 1,1 1,2 2 2,1 2,2 3 8 MATRIZES Notação Como referenciar um elemento específico da matriz? Exemplo: Matriz 3x2 (três linhas e duas colunas) Linha 3 Coluna 2 1 2 1 1,1 1,2 2 2,1 2,2 3 3,1 3,2 Linha 3 Coluna 1 9 Declaração: Onde: li e lf representam, respectivamente o índice inicial e final das linhas e ci e cf representam, respectivamente o índice inicial e final das colunas SINTAXE NO VISUALG <nome_variavel>: vetor [li..lf, ci..cf] de <tipo> 10 Exemplo: Para declarar uma matriz 3x2 de inteiro SINTAXE NO VISUALG algoritmo “exemplo_matriz” var exMatriz: vetor [1..3, 1..2] de inteiro inicio ... Linhas: o índice das linhas varia de 1 até 3 Colunas: o índice das colunas varia de 1 até 2 11 SINTAXE NO VISUALG Preenchendo e acessando uma matriz As posições das matrizes são identificados pelos índices das linhas e colunas Atribuição <nome_variavel> [<linha>, <coluna>] <valor> <nome_variavel> [<linha>, <coluna>] := <valor> leia(<nome_variavel> [<linha>, <coluna>]) 12 SINTAXE NO VISUALG exMatriz: vetor [1..3, 1..2] de inteiro algoritmo “exemplo_matriz” var inicio exMatriz[1,1] 10 leia(exMatriz[1,2]) exMatriz[3,1] := 4 fimalgoritmo Exemplo: 1 2 1 2 3 exMatriz 13 SINTAXE NO VISUALG algoritmo “exemplo_matriz” var exMatriz: vetor [1..3, 1..2] de inteiro inicio exMatriz[1,1] 10 leia(exMatriz[1,2]) exMatriz[3,1] := 4 fimalgoritmo Exemplo: exMatriz 1 2 1 10 2 3 14 SINTAXE NO VISUALG algoritmo “exemplo_matriz” var exMatriz: vetor [1..3, 1..2] de inteiro inicio exMatriz[1,1] 10 leia(exMatriz[1,2]) exMatriz[3,1] := 4 fimalgoritmo Exemplo: exMatriz 1 2 1 10 7 2 3 15 SINTAXE NO VISUALG algoritmo “exemplo_matriz” var exMatriz: vetor [1..3, 1..2] de inteiro inicio exMatriz[1,1] 10 leia(exMatriz[1,2]) exMatriz[3,1] := 4 fimalgoritmo Exemplo: exMatriz 1 2 1 10 7 2 3 4 16 SINTAXE NO VISUALG para as linhas a posicao ”, i, “, 1”:) a posicao ”, i, “, 2”:) algoritmo “preencher_matrizes” var numeros: vetor[1..3, 1..2] de inteiro i: inteiro inicio para i de 1 ate 3 faca //fazer o laço escreva(“Digite leia(numeros[i, escreva(“Digite leia(numeros[i, valor para 1]) valor para 2]) fimpara fimalgoritmo Preenchendo uma matriz Se quisermos atribuir valores a todas as posições da matriz, podemos fazer: 17 SINTAXE NO VISUALG Preenchendo uma matriz Se quisermos atribuir valores a todas as posições da matriz, podemos fazer: 18 SINTAXE NO VISUALG Preenchendo uma matriz Entretanto, à medida que a quantidade de elementos da matriz aumenta, fica complicado fazermos manualmente para todas as posições. O melhor caminho é utilizar laços de repetição! 19 SINTAXE NO VISUALG Preenchendo uma matriz Podemos criar um laço de repetição para variar pelas linhas, por exemplo: 20 SINTAXE NO VISUALG Preenchendo uma matriz E podemos ainda incluir um laço de repetição para variar pelas colunas também, por exemplo: 21 SINTAXE NO VISUALG Preenchendo uma matriz Saída: 22 SINTAXE NO VISUALG ... escreva(“O valor que está na posição [1,1] é: ”, numeros[1,1]) escreva(“O valor que está na posição [1,2] é: ”, numeros[1,2]) escreva(“O valor que está na posição [2,1] é: ”, numeros[2,1]) escreva(“O valor que está na posição [2,2] é: ”, numeros[2,2]) escreva(“O valor que está na posição [3,1] é: ”, numeros[3,1]) escreva(“O valor que está na posição [3,2] é: ”, numeros[3,2]) fimalgoritmo Exibindo o conteúdo de uma matriz: 23 SINTAXE NO VISUALG Exibindo o conteúdo de uma matriz Ou podemos utilizar um laço de repetição para facilitar a exibição dos valores de uma matriz Criando um laço para percorrer as linhas: Exemplo: 24 SINTAXE NO VISUALG Exibindo o conteúdo de uma matriz E podemos ainda incluir um laço de repetição para variar pelas colunas também, por exemplo: 25 EXEMPLO 1 Criar um algoritmo que leia uma matriz 3x3 e exiba a matriz preenchida: 26 EXEMPLO 1 Criar um algoritmo que leia uma matriz 3x3 e exiba a matriz preenchida: 27 EXEMPLO 1 Saída: 28 EXEMPLO 2 Criar um algoritmo que leia uma matrizes 3x3. Em seguida, exiba a soma dos elementos de cada uma das linhas. Ex: 1 2 2 3 2 3 4 1 1 Soma Linha 1 = 5 Soma Linha 2 = 8 Soma Linha 3 = 6 29 EXEMPLO 2 Resolução: 30 EXEMPLO 2 Saída: 31 EXEMPLO 3 Escreva um algoritmo que leia uma matriz 4x3. Em seguida, receba um novo valor do usuário e verifique se este valor se encontra na matriz. Caso o valor se encontre na matriz, escreva a mensagem “O valor se encontra na matriz”. Caso contrário, escreva a mensagem “O valor NÃO se encontra na matriz”. 32 EXEMPLO 3 33 EXEMPLO 3 Saída: 34 Para quem Matriz e Vetor? Vetores e Matrizes são estruturas de dados muito simples que podem nos ajudar muito quando temos muitas variáveis do mesmo tipo em um algoritmo. Imagine o seguinte problema: -> Você precisa criar um algoritmo que lê o nome e as 4 notas de 50 alunos, calcular a média de cada aluno e informar quais foram aprovados e quais foram reprovados. Conseguiu imaginar quantas variáveis você vai precisar? -> Vamos fazer uma conta rápida: 50 variáveis para armazenar os nomes dos alunos, (4 * 50 = ) 200 variáveis para armazenar as 4 notas de cada aluno e por fim, 50 variáveis para armazenar as médias de cada aluno. 300 variáveis no total, sem contar a quantidade de linhas de código que você vai precisar para ler todos os dados do usuário, calcular as médias e apresentar os resultados. 35 Resumo (Matrizes e Vetores) Vetor (array uni-dimensional) é uma variável que armazena várias variáveis do mesmo tipo. No problema apresentado anteriormente, nós podemos utilizar um vetor de 50 posições para armazenar os nomes dos 50 alunos. Matriz (array multi-dimensional) é um vetor de vetores. No nosso problema, imagine uma matriz para armazenar as 4 notas de cada um dos 50 alunos. Ou seja, um vetor de 50 posições, e em cada posição do vetor, há outro vetor com 4 posições. Isso é uma matriz. 36 Resumo (Matrizes e Vetores) 37 EXERCÍCIOS Crie um algoritmo que leia uma matriz 5x5. Em seguida, conte quantos números pares existem na matriz. Crie um algoritmo que leia uma matriz3x3 e calcule a soma dos valores das colunas da matriz. Ex: 1 2 2 3 2 3 4 1 1 Soma Coluna 1 = 8 Soma Coluna 2 = 5 Soma Coluna 3 = 6 38 EXERCÍCIOS Crie um algoritmo que calcule a média dos elementos de uma matriz 5x2. Crie um algoritmo informe qual o maior e qual o menor elemento existente em uma matriz 6x3. Crie um algoritmo que leia uma matriz 3x3 e crie uma segunda matriz que inverta as linhas e colunas da primeira matriz. Ex: 1 2 3 4 5 6 7 8 9 1 4 7 2 5 8 3 6 9 Matriz Matriz Invertida 39 EXERCÍCIOS 1 2 3 2 4 1 5 5 1 2 2 4 5 3 7 7 4 4 1 9 3 6 8 5 11 8 9 9 2 11 6. Crie um algoritmo que leia duas matrizes 2x5 e crie uma terceira matriz também 2x5 com o valor da soma dos elementos de mesmo índice. Ex: Matriz1 + Matriz2 = Matriz3 40 EXERCÍCIOS 7. Uma cooperativa de agricultores coletou a temperatura mínima diária de 05 locais de uma região ao longo do mês de maio de 2017. Digitar esses valores (números reais). Valores válidos: entre –10 e 40. Mostrar para cada um dos 05 locais: as temperaturas fornecidas, a temperatura mínima, a máxima e a média das temperaturas do local. Mostrar também a temperatura mínima geral, a máxima geral e a média geral da região. 41 EXERCÍCIOS 8.No final do semestre, um professor está preparando os conceitos de uma turma com 20 alunos. Foram realizadas duas provas e um trabalho extra-classe, com notas entre 0 e 10, podendo ter decimais. Cada uma das provas vale 40% e o trabalho 20% da nota final. Fornecer: as 3 notas, a nota final e o conceito de cada um dos alunos da turma. Fornecer também a média de cada uma das provas e do trabalho. Tabela para conversão da nota final em conceito: Se NF >= 9,0 conceito A Se NF < 9,0 e MF >= 7,5 conceito B Se NF < 7,5 e MF >= 6,0 conceito C Se NF < 6,0 e MF >= 3,0 conceito R (prova de recuperação) Se NF < 3,0 conceito D 42 EXERCÍCIOS 7. Crie um algoritmo que calcule a soma dos valores da diagonal principal de uma matriz 5x5. Veja a diagonal principal da matriz destacada no exemplo abaixo: SOMA = 10 1 2 5 1 4 3 2 4 2 3 4 1 2 3 7 5 5 2 4 9 1 2 4 5 1 43 EXERCÍCIOS 8. Crie um algoritmo que verifique se uma matriz é triangular superior. Uma matriz é triangular superior se todos os elementos abaixo da diagonal principal são iguais a 0. 1 2 5 1 4 0 2 4 2 3 0 0 2 3 7 0 0 0 4 9 0 0 0 0 1 44 EXERCÍCIOS 9. Crie um algoritmo que verifique se uma matriz é triangular inferior. Uma matriz é triangular inferior se todos os elementos abaixo da diagonal principal são iguais a 0. 1 0 0 0 0 3 2 0 0 0 4 1 2 0 0 5 5 2 4 0 1 2 4 5 1 45 VETORES E MATRIZES 46
Compartilhar