Estruturas de Dados Tópicos Vetores Matrizes Registros Registro de Conjuntos Conjuntos de Registros
Matrizes O que é uma matriz? Uma estrutura de dados que contém várias variáveis do mesmo tipo Também denominadas Estruturas compostas homogêneas multidimensionais Permitem a manipulação de um conjunto de informações de um mesmo tipo primitivo
Matrizes Qual a diferença de vetores para matrizes? Vetores são, na verdade, matrizes de uma única dimensão: Matrizes Vetores 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 1 3 4 6 a maria jota
Vetores: a quantidade de linhas é sempre 1! 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!
Matrizes Notação Como referenciar um elemento específico da matriz? Exemplo: Matriz 3x2 (três linhas e duas colunas) 1 2 As colunas variam de 1 até 2 1 2 As linhas variam de 1 até 3 3
Matrizes Notação Como referenciar um elemento específico da matriz? Exemplo: Matriz 3x2 (três linhas e duas colunas) 1 2 Coluna 1 1 1,1 Para acessar esse elemento, devemos observar qual cruzamento linha x coluna da matriz ele representa 2 3
Matrizes Notação Como referenciar um elemento específico da matriz? Exemplo: Matriz 3x2 (três linhas e duas colunas) 1 2 Linha 1 Coluna 2 1,1 1,2 1 2 3
Matrizes Notação Como referenciar um elemento específico da matriz? Exemplo: Matriz 3x2 (três linhas e duas colunas) 1 2 1,1 1,2 2,1 1 Linha 2 Coluna 1 2 3
Matrizes Notação Como referenciar um elemento específico da matriz? Exemplo: Matriz 3x2 (três linhas e duas colunas) 1 2 1,1 1,2 2,1 2,2 1 Linha 2 Coluna 2 2 3
Matrizes Notação Como referenciar um elemento específico da matriz? Exemplo: Matriz 3x2 (três linhas e duas colunas) 1 2 1,1 1,2 2,1 2,2 3,1 3,2 1 2 Linha 3 Coluna 2 Linha 3 Coluna 1 3
Sintaxe no VisualG Declaração: <nome_variavel>: vetor [li..lf, ci..cf] de <tipo> 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 SALA : vetor [1..4, 1..4] de inteiro; Declaração - Exemplo: Onde: SALA: Nome da variável criada 1: Limite inicial da primeira e da segunda dimensão 4: Limite final da primeira e da segunda dimensão inteiro: Tipo primitivo base da matriz SALA : vetor [1..4, 1..4] de inteiro;
Sintaxe no VisualG Exemplo: Para declarar uma matriz 3x2 de inteiro 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
Sintaxe no VisualG Preenchendo e acessando uma matriz As posições das matrizes são identificados pelos índices das linhas e colunas Atribuição direta: Atribuição pelo teclado: <nome_variavel> [<linha>, <coluna>] <- <valor> leia(<nome_variavel> [<linha>, <coluna>])
Sintaxe no VisualG Exemplo: 1 2 1 2 3 exMatriz algoritmo “exemplo_matriz” var inicio exMatriz[1,1] <- 10 leia(exMatriz[1,2]) exMatriz[3,1] <- 4 fimalgoritmo exMatriz: vetor [1..3, 1..2] de inteiro 1 2 1 2 3 exMatriz
Sintaxe no VisualG Exemplo: 10 1 2 1 2 3 exMatriz 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 1 2 1 2 3 10 exMatriz
Sintaxe no VisualG Exemplo: 1 2 1 2 3 10 7 exMatriz 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 1 2 1 2 3 10 7 exMatriz
Sintaxe no VisualG Exemplo: 1 2 1 2 3 10 7 4 exMatriz 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 1 2 1 2 3 10 7 4 exMatriz
Matrizes - Manipulação VAR SALA : vetor [1..4, 1..4] de inteiro; A, B : inteiro; Início SALA 1 2 3 4 7 12 1 SALA [ 2, 3 ] ¬ 5; 10 5 2 SALA [ 3, 2 ] ¬ 6; 6 11 SALA [ 1, 2 ] ¬ 7; 3 A ¬ 4; B ¬ 3; 9 8 4 SALA [ A, B ] ¬ 8; SALA [ A, B-2 ] ¬ 9; SALA [ A-2, B-2 ] ¬ 10; SALA [ B, A ] ¬ 11; SALA [ B-2, A ] ¬ 12;
Sintaxe no VisualG Preenchendo uma matriz Se quisermos atribuir valores a todas as posições da matriz, podemos fazer: 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 para as linhas a posicao ", i, ", escreva("Digite leia(numeros[i, escreva("Digite leia(numeros[i, valor para 1]) 2]) 1:") a posicao ", i, ", 2:") fimpara fimalgoritmo
Sintaxe no VisualG Preenchendo uma matriz Se quisermos atribuir valores a todas as posições da matriz, podemos fazer:
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!
Sintaxe no VisualG Preenchendo uma matriz Podemos criar um laço de repetição para variar pelas linhas, por exemplo:
Sintaxe no VisualG Preenchendo uma matriz E podemos ainda incluir um laço de repetição para variar pelas colunas também, por exemplo:
Sintaxe no VisualG Preenchendo uma matriz Saída:
Sintaxe no VisualG Exibindo o conteúdo de uma matriz: ... escreva(“O valor que está na posição [1,1] é: ”, numeros[1,1]) [1,2] numeros[1,2]) [2,1] numeros[2,1]) [2,2] numeros[2,2]) [3,1] numeros[3,1]) [3,2] numeros[3,2]) fimalgoritmo
Sintaxe no VisualG Exibindo o conteúdo de uma matriz Exemplo: 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:
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:
Matrizes
Matrizes Exemplo: Cartão da Loteria Esportiva Jg Coluna 1 Ept Coluna 2 Santos Corinthians 2 Flamengo Fluminense 3 Palmeiras São Paulo 4 Vasco Botafogo 5 Portuguesa XV de jaú 6 São Caetano XV de Piracicaba 7 Grêmio Internacional 8 Havaí Figueirense 9 Coritiba Atlético-PR 10 Paysandú Juventude 11 Atlético-MG Cruzeiro 12 Brasiliense Ponte Preta 13 Fortaleza Goiás 14 Esportivo Londrina
Matrizes Algoritmo 4.3 – Loteria Esportiva, jogo mais marcado var loteria : vetor [1..14, 1..3] de caractere; I,J,maisMar,nJogo,marLin : inteiro; inicio maisMar <- 0; para I de 1 ate 14 faca marLin <- 0; para J de 1 ate 3 faca se loteria[ I, J] = “x” entao marLin <- marLin + 1; fimse; fimpara; se marLin > maisMar entao maisMar <- marLin; nJogo <- I; escreva (“Jogo mais marcado: “, nJogo, “com “, maisMar) fimalgoritmo
Matrizes Algoritmo 4.4 – Loteria Esportiva, coluna mais marcada var loteria : vetor [1..14, 1..3] de caractere; I,J,maisMar,nColuna,marCol : inteiro; inicio maisMar <- 0; para J de 1 ate 3 faca marCol <- 0; para I de 1 ate 14 faca se loteria[ I, J] = “x”; então marCol <- marCol + 1; fimse; fimpara; se marCol > maisMar entao maisMar <- marCol; nColuna <- J; escreva (“Coluna mais marcada: “, nColuna, “ com “, maisMar) fimalgoritmo