Algoritmos e lp parte 4-vetores matrizes e registros

11,635 views

Published on

vetores, matrizes e registros

Published in: Technology

Algoritmos e lp parte 4-vetores matrizes e registros

  1. 1. Algoritmos e Linguagem de Programação Professor: Mauro Jansen Parte 4 – Vetores, matrizes e registros 03/11/2010
  2. 2. Introdução As variáveis que estudamos até o momento guardavam apenas um único valor Existe um recurso que nos permite guardar e acessar um conjunto de dados agrupados na memória do computador: As ESTRUTURAS DE DADOS Isso nos permite, por exemplo, guardar a nota dos alunos de uma turma usando apenas uma variável Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 2
  3. 3. Estruturas de dados As estruturas de dados são formas agrupar dados na memória do computador, usando variáveis ou outros recursos de armazenamento Tipos de estruturas de dados: Homogêneas: guardam dados do mesmo tipo. Ex: vetores e matrizes Heterogêneas: guardar dados de tipos diferentes. Ex: registros Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 3
  4. 4. Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 4
  5. 5. Conceito de vetor Um vetor, também conhecido como variável homogênea unidimensional, é um conjunto de variáveis do mesmo tipo, que possuem o mesmo identificador e são alocadas sequencialmente na memória. Podemos entender um vetor como uma variável dividida em vários pedaços, onde cada pedaço é identificado através de um número, chamado de índice. O índice representa a posição que um dado ocupa no vetor. Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 5
  6. 6. Estrutura de um vetor Podemos Imaginar que na memória do computador um vetor seja mais ou menos da seguinte forma. Nome do Vetor Índices (Posições) 1 Nomes Conteúdo (Elementos) 2 3 4 João Maria Carlos 5 6 José •Perceba que cada posição do vetor corresponde a uma variável simples. •Para representar o elemento 3, escrevemos Nomes [3]. •O valor de Nomes[2] é “Maria” Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 6
  7. 7. Declaração de vetores Para declarar um vetor procedemos como indicado a seguir: NomeDoVetor[1..<tamanho>]: TipoDeDado Exemplos: Notas[1..10]: Real (vetor chamado Notas com 10 posições para guardar números reais) Codigo[1..12]: Inteiro (vetor chamado Codigo com 12 posições para guardar números inteiros) Nomes[1..10]: String (vetor chamado nomes com 10 posições para guardar strings) Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 7
  8. 8. Usando vetores Para usar um vetor (armazenar dados ou ler dados do mesmo), devemos especificar o nome do vetor e o índice entre colchetes Exemplo 1 (armazenando): Nomes[1] “João” Guarda a string “João” na posição 1 do vetor nomes Exemplo 2 (lendo): Escreva(Nomes[1]) Mostra o conteúdo da posição 1 do vetor nomes Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 8
  9. 9. Usando vetores O número do índice pode ser indicado por uma variável ou expressão A posição a ser acessada depende do valor da variável ou expressão Exemplos: X 4 Escreva(Nomes[x]) Escreva(Nomes[x/2]) Prof. Mauro {mostra posição 4} {mostra posição 2} Algoritmos e Ling.de Programação Vetores, matrizes e registros 9
  10. 10. Usando vetores Podemos usar um vetor diretamente num comando Leia: X 5 Leia(Nomes[x-1]) No exemplo acima, o valor será lido do teclado e guardado na posição 4 do vetor Nomes Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 10
  11. 11. Algoritmo para preencher um vetor Para preencher um vetor inteiro, devemos usar uma estrutura de repetição, pois o vetor tem várias posições e temos que preencher uma a uma Exemplo: Algoritmo “Preenche Vetor” Variaveis numeros[1..4], i: inteiro Inicio Para i de 1 até 4 faca Escreva(“Digite um valor: “) Leia(numeros[i]) FimPara Fim Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros Declaração do vetor com 4 posições A variável i fará o controle da repetição, e assumirá todos os valores possíveis para o índice do vetor. 11
  12. 12. Algoritmo para listar um vetor Para listar ou “percorrer” todos os elementos de um vetor, usamos também uma estrutura de repetição, similar ao usado no preenchimento: Algoritmo “Lista Vetor” Variaveis numeros[1..4], i: inteiro Inicio Para i de 1 até 4 faca Escreva(numeros[i]) FimPara Fim Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 12
  13. 13. Exemplos com vetores Um algoritmo que preenche um vetor com 8 números inteiros, calcula e mostra quantos elementos do vetor são números pares Algoritmo "ContaPares" var vet: vetor[1..8] de inteiro i, pares: Inteiro Inicio Para i de 1 ate 8 faca Escreva("Digite um valor: ") Leia(vet[i]) FimPara pares <- 0 Para i de 1 ate 8 faca Se vet[i] mod 2 = 0 entao pares <- pares +1 FimSe FimPara Escreva("Você digitou ",pares," numeros pares") FimAlgoritmo Algoritmos e Ling.de Programação Prof. Mauro Vetores, matrizes e registros Neste trecho é feito o preenchimento do vetor. A variável pares é inicializada com 0, pois será nosso contador. Neste trecho, o vetor é percorrido, sendo checado para cada posição se o valor ali armazenado é par. Se for par a variável pares é incrementada em uma unidade. 13
  14. 14. Exemplos com vetores Algoritmo que lê dois vetores de seis elementos inteiros, calcula a soma entre os elementos e armazena os resultados em um terceiro vetor: Algoritmo "soma vetores" Var i: inteiro v1, v2, v3: vetor [1..6] de Inteiro Inicio Para i de 1 ate 6 faca Escreva("Digite valor ",i," para vetor 1:") Leia(v1[i]) Escreva("Digite valor ",i," para vetor 2:") Leia(v2[i]) FimPara Para i de 1 ate 6 faca v3[i] <- v1[i]+v2[i] Escreval(v3[i]) FimPara fimalgoritmo Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 14
  15. 15. Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 15
  16. 16. Conceito de matriz Uma matriz, também conhecido como variável homogênea multidimensional, é um conjunto de variáveis do mesmo tipo, que possuem o mesmo identificador e são alocadas sequencialmente na memória. Assim como o vetor, uma matriz pode ser vista como uma variável dividida em vários pedaços No caso da matriz cada pedaço é identificado através DOIS OU MAIS índices (um índice para cada dimensão) Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 16
  17. 17. Estrutura de uma matriz Podemos Imaginar que uma matriz seja mais ou menos da seguinte forma. Índices das Colunas Nome da Matriz 1 1 Mat 2 2 3 4 8 5 3 5 25 12 5 6 10 3 Índices das Linhas Esta é uma matriz bidimensional. Indicamos este elemento como mat[1, 1] Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 17
  18. 18. Declaração de matrizes A sintaxe da declaração de matrizes é a seguinte: NomeDaMatriz[Dim1, Dim2]: TipoDeDado Exemplos: Vendas[10, 12]: Real Uma matriz chamada Vendas com 10 linhas e 12 colunas, para armazenar números reais. Mat[3, 6]: Inteiro Uma matriz chamada Mat com 3 linhas e 6 colunas para armazenar números inteiros Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 18
  19. 19. Usando matrizes Para usar uma matriz (armazenar dados ou ler dados da mesma), devemos especificar o nome da matriz e os índices correspondentes, separados por vírgula Exemplo 1 (armazenando): Mat[2,5] 10 Guarda o valor 10 na posição 2,5 (linha 2, coluna 5) do matriz Mat Exemplo 2 (lendo): Escreva(Mat[1,4]) Mostra o conteúdo da posição 1,4 (linha 1, coluna 4) da matriz Mat Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 19
  20. 20. Usando matrizes Os números dos índices podem ser indicados por variáveis ou expressões A posição a ser acessada depende do valor das variáveis ou expressões Exemplos: X <- 2 Y <- 4 Escreva(Mat[x,y]) Escreva(Mat[x/2,y/2]) Prof. Mauro {mostra posição 2,4} {mostra posição 1,2} Algoritmos e Ling.de Programação Vetores, matrizes e registros 20
  21. 21. Usando matrizes Podemos usar uma matriz diretamente num comando Leia: X <- 2 Y <- 4 Leia(Mat[x,y-1]) No exemplo acima, o valor será lido do teclado e guardado na posição 2,3 da matriz Mat Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 21
  22. 22. Algoritmo para preencher uma matriz Para preencher uma matriz inteira, devemos usar duas estruturas de repetição aninhadas, uma para as linhas e outra para as colunas Exemplo: Algoritmo “Preenche matriz” Variaveis i,j: inteiro Mat: vetor [1..3,1..6] de inteiro Inicio Para i de 1 ate 3 faca Para j de 1 ate 6 faca Escreva(“Digite um valor: “) Leia(mat[i,j]) FimPara FimPara Fim Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros Declaração da matriz com 3 linhas e 6 colunas A variável i fará o controle das linhas A variável i fará o controle das linhas 22
  23. 23. Algoritmo para listar uma matriz Para listar ou “percorrer” todos os elementos de um vetor, usamos também estruturas de repetição anihadas, similar ao usado no preenchimento: Algoritmo “Lista matriz” Variaveis i,j: inteiro Mat: vetor [1..3,1..6] de inteiro Inicio Para i de 1 ate 3 faca Para j de 1 ate 6 faca Escreval(mat[i,j]) FimPara FimPara Fim Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 23
  24. 24. Exercícios Faça algoritmo para ler um vetor de 10 valores inteiros e depois identificar e mostrar o menor valor Altere o algoritmo anterior para procurar um número digitado pelo usuário, informando a sua posição, se ele constar no vetor Faça um algoritmo que inverta a posição dos valores de um vetor de seis posições de inteiros Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 24
  25. 25. Exercícios Crie um algoritmo que crie uma matriz 4 x 4 de inteiros, solicite os valores ao usuário e depois mostre qual o maior e menor valor na matriz Altere o algoritmo anterior para procurar na matriz um valor digitado pelo usuário Faça um algoritmo para guardar os nomes e resultados de jogos da loteria esportiva Faça um algoritmo para multiplicar duas matrizes Faça um algoritmo para calcular o determinante de uma matriz Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 25
  26. 26. Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 26
  27. 27. Conceito Um registro é um conjunto de campos, em que cada campo pode ser de um tipo de dado diferente. Registros são estruturas que podem agregar diferentes informações. São também chamadas de variáveis compostas heterogêneas. Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 27
  28. 28. Estrutura de um registro Um registro é formado por um conjunto de itens de dados (membros da estrutura), que não necessitam ser do mesmo tipo. Exemplo: Dados de uma Conta Bancária ITEM DE DADO VALOR Número: 2245 Tipo: Especial Cliente: José da Silva Saldo: R$5.250,00 Neste registro, representamos uma conta bancária, que tem os seguintes tipos de dados: Inteiro (Número) Real (Saldo e Limite) Literal (Tipo e Cliente) Limite: R$950,00 Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 28
  29. 29. Declaração de um registro Antes de usar um registro é preciso declará-lo, conforme a sintaxe abaixo: NomeDaVariavel: Registro (NomesDosCampos: TiposDosCampos) Exemplo conta: Registro (num: Inteiro, saldo, limite: Real, tipo, cliente: String) Neste exemplo foi declarado um registro chamado conta, cujos campos são num do tipo inteiro, saldo e limite do tipo real e tipo e cliente do tipo string. Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 29
  30. 30. Usando de um registro Como um registro contém vários dados, para acessar um campo individualmente é necessário indicar o nome da variável e o nome do campo, separado por um ponto. Exemplo 1 (armazenando no registro) conta.num ← 12 Coloca o número 12 no campo num da variável registro denominada conta. Exemplo 2 (lendo dado do registro) Escreva conta.saldo Mostra na tela o conteúdo do campo saldo da variável conta. Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 30
  31. 31. Vetor de registros O uso de registros torna-se mais efetivo quando associado a vetores Podemos criar um vetor de registros, podendo guardar dados de vários elementos distintos. Exemplos: 100 registros de contas bancárias 40 registros de alunos de uma turma Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 31
  32. 32. Vetor de registros - declaração Exemplo conta[3]: Registro (num: Inteiro, saldo: Real, cliente: string) Neste exemplo foi declarada uma variável chamada conta. Esta variável é um vetor de três posições. Em cada posição será armazenado um registro, composto por três campos. Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 32
  33. 33. Vetor de registros - uso Acesso aos Campos do Registro Conta[2].num ← 13 O exemplo armazeno o número 13 no campo num da segunda posição da variável registro denominada conta. Leia conta[2].cliente Neste exemplo é lida uma string e armazenada no campo cliente da posição 2 da variável conta. Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 33
  34. 34. Exemplo Uma indústria faz a folha mensal de pagamento de seus 80 empregados baseado numa tabela com os dados de cada funcionário (matrícula, nome e salário bruto); Vamos escrever um algoritmo para ler e processar essa tabela e emitir, para cada funcionário, seu contracheque. Matrícula: Nome: Salário Bruto: Dedução do INSS: Salário Líquido: O desconto do INSS é 11% do salário bruto. O salário líquido é a diferença entre o salário bruto e o valor do INSS. Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 34
  35. 35. Exemplo A estrutura de um funcionário é dada por uma variável do tipo registro. Como são 80, é preciso trabalhar com um vetor de 80 posições. A declaração do registro é a seguinte: func[80]: Registro (mat: Inteiro, nome: String, salBruto, inss, salLiq: Real) O algoritmo consistirá em preencher o vetor com 80 registros para representar os 80 funcionários da empresa. Em seguida, para cada funcionário, calcular e mostrar o contracheque (salário líquido e dedução do INSS) Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 35
  36. 36. Exemplo A primeira parte do algoritmo consiste em preencher os dados de todos os 80 funcionários. Para isso, utilizamos uma estrutura de repetição contada para controlar as posições do vetor de funcionários. Algoritmo ControleFuncionarios Variáveis func[80]: Registro (mat: Inteiro, nome: String, salBruto, inss, salLiq: Real) i: Inteiro Início Para i de 1 até 80 Faça Escreva “Digite a matrícula do funcionário” Leia func[i].mat Escreva “Digite o nome do funcionário” Leia func[i].nome Escreva “Digite o salário bruto do funcionário” Leia func[i].salBruto FimPara ... Algoritmos e Ling.de Programação Prof. Mauro Vetores, matrizes e registros 36
  37. 37. Exemplo Uma vez que os 80 registros estão preenchidos, é preciso calcular o valor do INSS e do salário líquido. Isso é feito dentro de uma estrutura Para-Faça, pois deve ser para os 80 funcionários. ... Para i de 1 até 80 Faça func[i].inss ← func[i].salBruto * 0.11 func[i].salLiq ← func[i].salBruto – func[i].inss FimPara ... Para acessar o campo de cada funcionário, utilizamos o nome da variável mais o índice. A primeira instrução calcula o valor do campo inss, multiplicando o valor do campo salBruto pela taxa de 11%. A segunda instrução calcula o valor do campo salLiq, subtraindo do salário bruto o valor do INSS. Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 37
  38. 38. Exemplo Após realizar todos os cálculos, é preciso imprimir os contracheques na tela. Para isso, utilizamos mais uma vez uma estrutura ParaFaça. ... Para i de 1 até 80 Faça Escreva func[i].mat Escreva func[i].nome Escreva func[i].salBruto Escreva func[i].inss Escreva func[i].salLiq FimPara Fim Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 38
  39. 39. Observação As estruturas estudadas neste capítulo (vetores, matrizes e registros) podem ser implementadas em qualquer linguagem de programação. Devemos conhecer a sintaxe da linguagem em que queremos implementar os algoritmos para escrever os comandos conforme as regras da gramática da linguagem. Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 39
  40. 40. Exercícios Crie um algoritmo para guardar o nome e as duas notas dos 40 alunos de uma turma e depois calcular a média e resultado de cada um deles, sendo que a média para aprovação é 7 Prof. Mauro Algoritmos e Ling.de Programação Vetores, matrizes e registros 40

×