Algoritmos e lp parte 4-vetores matrizes e registros
-
Upload
mauro-jansen -
Category
Technology
-
view
7.160 -
download
6
description
Transcript of 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
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
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
Prof. MauroAlgoritmos e Ling.de Programação
Vetores, matrizes e registros 4
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.
� 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”
� 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)
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
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}
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
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
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
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.
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
Prof. MauroAlgoritmos e Ling.de Programação
Vetores, matrizes e registros 15
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)
� 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]
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
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
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}
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
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
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
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
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
Prof. MauroAlgoritmos e Ling.de Programação
Vetores, matrizes e registros 26
� 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.
� 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)
� 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.
� 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.
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
� 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.
� 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.
� 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:
� 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)
� 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
...
� 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
...
� 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
� 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.
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