Algoritmos e lp parte 4-vetores matrizes e registros

40
Algoritmos e Linguagem de Programação de Programação Professor: Mauro Jansen Parte 4 – Vetores, matrizes e registros 03/11/2010

description

vetores, matrizes e registros

Transcript of Algoritmos e lp parte 4-vetores matrizes e registros

Page 1: Algoritmos e lp parte 4-vetores matrizes e registros

Algoritmos e Linguagem de Programação de Programação

Professor: Mauro Jansen

Parte 4 – Vetores, matrizes e registros

03/11/2010

Page 2: Algoritmos e lp parte 4-vetores matrizes e registros

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

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 2

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

Page 3: Algoritmos e lp parte 4-vetores matrizes e registros

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

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 3

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

Page 4: Algoritmos e lp parte 4-vetores matrizes e registros

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 4

Page 5: Algoritmos e lp parte 4-vetores matrizes e registros

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.

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 5

� 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.

Page 6: Algoritmos e lp parte 4-vetores matrizes e registros

� Podemos Imaginar que na memória do computador um vetor seja mais ou menos da seguinte forma.

1 2 3 4 5 6

Nome do Vetor Índices (Posições)

Estrutura de um vetor

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 6

1 2 3 4 5 6

João Maria Carlos JoséNomes

Conteúdo (Elementos)

•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”

Page 7: Algoritmos e lp parte 4-vetores matrizes e registros

� Para declarar um vetor procedemos como indicado a seguir:

� Exemplos:Notas[1..10]: Real

NomeDoVetor[1..<tamanho>]: TipoDeDado

Declaração de vetores

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 7

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)

Page 8: Algoritmos e lp parte 4-vetores matrizes e registros

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):

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 8

� 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

Page 9: Algoritmos e lp parte 4-vetores matrizes e registros

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

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 9

� Exemplos:

X ���� 4

Escreva(Nomes[x]) {mostra posição 4}

Escreva(Nomes[x/2]) {mostra posição 2}

Page 10: Algoritmos e lp parte 4-vetores matrizes e registros

Usando vetores

� Podemos usar um vetor diretamente num comando Leia:X � 5

Leia(Nomes[x-1])

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 10

Leia(Nomes[x-1])

� No exemplo acima, o valor será lido do teclado e guardado na posição 4 do vetor Nomes

Page 11: Algoritmos e lp parte 4-vetores matrizes e registros

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” Declaração do vetor com 4

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 11

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

A variável i fará o controle da repetição, e assumirá todos os valores possíveis para o índice do vetor.

Declaração do vetor com 4 posições

Page 12: Algoritmos e lp parte 4-vetores matrizes e registros

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”

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 12

Algoritmo “Lista Vetor”

Variaveis

numeros[1..4], i: inteiro

Inicio

Para i de 1 até 4 faca

Escreva(numeros[i])

FimPara

Fim

Page 13: Algoritmos e lp parte 4-vetores matrizes e registros

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

Neste trecho é feito o preenchimento do vetor.

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 13

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

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.

Page 14: Algoritmos e lp parte 4-vetores matrizes e registros

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

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 14

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

Page 15: Algoritmos e lp parte 4-vetores matrizes e registros

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 15

Page 16: Algoritmos e lp parte 4-vetores matrizes e registros

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.

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 16

� 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)

Page 17: Algoritmos e lp parte 4-vetores matrizes e registros

� Podemos Imaginar que uma matriz seja mais ou menos da seguinte forma.

1 2 3 4 5 6

Nome da Matriz

Índices das Colunas

Estrutura de uma matriz

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 17

1 2 3 4 5 6

1 5 8 5

2 25 10

3 12 3

Mat

Índices das Linhas

Esta é uma matriz bidimensional. Indicamos este elemento como mat[1, 1]

Page 18: Algoritmos e lp parte 4-vetores matrizes e registros

Declaração de matrizes

� A sintaxe da declaração de matrizes é a seguinte:

� Exemplos:� Vendas[10, 12]: Real

NomeDaMatriz[Dim1, Dim2]: TipoDeDado

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 18

� 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

Page 19: Algoritmos e lp parte 4-vetores matrizes e registros

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):

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 19

� 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

Page 20: Algoritmos e lp parte 4-vetores matrizes e registros

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

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 20

� Exemplos:

X <- 2

Y <- 4

Escreva(Mat[x,y]) {mostra posição 2,4}

Escreva(Mat[x/2,y/2]) {mostra posição 1,2}

Page 21: Algoritmos e lp parte 4-vetores matrizes e registros

Usando matrizes

� Podemos usar uma matriz diretamente num comando Leia:X <- 2

Y <- 4

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 21

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

Page 22: Algoritmos e lp parte 4-vetores matrizes e registros

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 Declaração da matriz com 3

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 22

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

A variável i fará o controle das linhas

Declaração da matriz com 3 linhas e 6 colunas

A variável i fará o controle das linhas

Page 23: Algoritmos e lp parte 4-vetores matrizes e registros

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

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 23

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

Page 24: Algoritmos e lp parte 4-vetores matrizes e registros

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

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 24

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

Page 25: Algoritmos e lp parte 4-vetores matrizes e registros

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

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 25

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

Page 26: Algoritmos e lp parte 4-vetores matrizes e registros

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 26

Page 27: Algoritmos e lp parte 4-vetores matrizes e registros

� Registros são estruturas que podem agregar

Um registro é um conjunto de campos, em que cada campo pode ser de um tipo de dado

diferente.

Conceito

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 27

� Registros são estruturas que podem agregar diferentes informações.

� São também chamadas de variáveis compostas heterogêneas.

Page 28: Algoritmos e lp parte 4-vetores matrizes e registros

� 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

Estrutura de um registro

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 28

Dados de uma Conta Bancária

ITEM DE DADO VALOR

Número: 2245

Tipo: Especial

Cliente: José da Silva

Saldo: R$5.250,00

Limite: R$950,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)

Page 29: Algoritmos e lp parte 4-vetores matrizes e registros

� Antes de usar um registro é preciso declará-lo, conforme a sintaxe abaixo:

� Exemplo

NomeDaVariavel: Registro (NomesDosCampos: TiposDosCampos)

Declaração de um registro

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 29

� Exemploconta: 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.

Page 30: Algoritmos e lp parte 4-vetores matrizes e registros

� 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)

Usando de um registro

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 30

� 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.

Page 31: Algoritmos e lp parte 4-vetores matrizes e registros

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

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 31

podendo guardar dados de vários elementos distintos. Exemplos:

� 100 registros de contas bancárias

� 40 registros de alunos de uma turma

Page 32: Algoritmos e lp parte 4-vetores matrizes e registros

� Exemplo

conta[3]: Registro (num: Inteiro,

saldo: Real, cliente: string)

Vetor de registros - declaração

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 32

� 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.

Page 33: Algoritmos e lp parte 4-vetores matrizes e registros

� 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.

Vetor de registros - uso

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 33

Leia conta[2].cliente

� Neste exemplo é lida uma string e armazenada no campo cliente da posição 2 da variável conta.

Page 34: Algoritmos e lp parte 4-vetores matrizes e registros

� 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.

Exemplo

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 34

� 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.

Matrícula:

Nome:

Salário Bruto:

Dedução do INSS:

Salário Líquido:

Page 35: Algoritmos e lp parte 4-vetores matrizes e registros

� 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,

Exemplo

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 35

� 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)

func[80]: Registro (mat: Inteiro, nome: String,

salBruto, inss, salLiq: Real)

Page 36: Algoritmos e lp parte 4-vetores matrizes e registros

� 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,

Exemplo

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 36

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

...

Page 37: Algoritmos e lp parte 4-vetores matrizes e registros

� 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

Exemplo

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 37

� 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.

func[i].salLiq ← func[i].salBruto – func[i].inss

FimPara

...

Page 38: Algoritmos e lp parte 4-vetores matrizes e registros

� Após realizar todos os cálculos, é preciso imprimir os contracheques na tela. Para isso, utilizamos mais uma vez uma estrutura Para-Faça.

...

Para i de 1 até 80 Faça

Exemplo

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 38

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

Page 39: Algoritmos e lp parte 4-vetores matrizes e registros

� 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

Observação

Prof. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 39

� Devemos conhecer a sintaxe da linguagem em que queremos implementar os algoritmos para escrever os comandos conforme as regras da gramática da linguagem.

Page 40: Algoritmos e lp parte 4-vetores matrizes e registros

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. MauroAlgoritmos e Ling.de Programação

Vetores, matrizes e registros 40

aprovação é 7