ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
Algoritmos e lp parte 4-vetores matrizes e registros
1. Algoritmos e Linguagem
de Programação
Professor: Mauro Jansen
Parte 4 – Vetores, matrizes e registros
03/11/2010
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. 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
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. 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. 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. 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. 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. 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. 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. 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. 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. 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
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. 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. 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. 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. 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. 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. 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. 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. 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. 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
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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