5. • Algoritmos
• Estruturas Homogêneas
• Introdução
• Para resolução dos problemas propostos até
então, utilizamos:
Tipos de dados básicos;
• <real, inteiro, literal, caractere e lógico>
Comandos de controle;
• <decisão e repetição>
Variáveis simples, que "armazenam um único"
valor por vez.
5
6. • Algoritmos
• Estruturas Homogêneas
• Sempre que atribuímos um novo valor a uma
variável simples, o valor anterior é perdido.
6
algoritmo "Problema 01"
var
x: inteiro
inicio
x ← 10
escreval("Valor de x: ", x)
x ← 20
escreval("Valor de x: ", x)
fimalgoritmo
7. • Algoritmos
• Estruturas Homogêneas
• Vetores
• Representação da memória ao criar uma
variável simples.
7
X
8. • Algoritmos
• Estruturas Homogêneas
• Vetores
• Representação da memória ao criar uma
variável simples.
Atribuição do valor 10 a variável x.
8
XX ← 10
9. • Algoritmos
• Estruturas Homogêneas
• Vetores
• Representação da memória ao criar uma
variável simples.
Atribuição do valor 20 a variável x.
// O valor 20 sobescreve o valor anterior que era 10.
9
X ← 10X ← 20
10. 10
Isso ocorre porque cada variável está
associada a uma única posição de
memória, e dentro dela é possível
armazenar apenas um único valor.
11. • Algoritmos
• Estruturas Homogêneas
• Vetores
• Existem problemas em que as variáveis simples
NÃO são suficientes.
• Para atingir a solução de tais problemas,
utilizamos as estruturas de dados homogêneas.
Armazenam diversos dados de um mesmo tipo em
uma única variável.
Vetores (unidimensionais); e
Matrizes (bidimensionais).
11
12. • Algoritmos
• Estruturas Homogêneas
• Exemplo:
Solicitar ao usuário as notas de 5 alunos de uma
turma e no "final" apresentar as notas digitadas.
12
algoritmo "Notas"
var
notas: real
i: inteiro
inicio
para i de 1 ate 5 faca
escreva(i, "a. nota: ")
leia(notas)
fimpara
escreval("Notas: ", notas)
fimalgoritmo
14. • Algoritmos
• Estruturas Homogêneas
• Vetores
• Mas, se quisermos "armazenar" todos as notas
em uma única variável?
• Se quiséssemos acessar tais valores
individualmente a qualquer momento?
• Com o que foi visto até então, não é possível
"alcançar" esse comportamento.
14
15. • Algoritmos
• Estruturas Homogêneas
• Vetores
• Em casos como esse que é útil a utilização das
estruturas de dados homogêneas (vetores).
• Vetores são variáveis que permitem armazenar
vários valores do mesmo tipo.
• Funciona como uma caixa, na qual você pode
guardar o conteúdo que desejar.
15
16. 16
Estruturas de dados homogêneas são
estruturas que permitem armazenar um
conjuntos de dados do mesmo tipo em
uma única variável.
18. • Algoritmos
• Estruturas Homogêneas
• Vetores
• Tal como as variáveis simples, os vetores
precisam ser declarados antes de utilizados.
• Por se tratar de uma variável indexada a
maneira como a declaramos é diferente.
• A ideia geral é que estamos declarando diversas
variáveis dentro de uma só.
Diferenciadas por um índice.
18
19. • Algoritmos
• Estruturas Homogêneas
• Vetores
Estruturas que armazenam os dados em uma
única linha e várias colunas.
19
1 2 3 4 5
índexes
V[1..5] =
20. • Algoritmos
• Estruturas Homogêneas
• Vetores
Estruturas que armazenam os dados em uma
única linha e várias colunas.
20
1 2 3 4 5
índexes
V[1..5] =
7 8.5 7.2 9.2 7.1
21. • Algoritmos
• Estruturas Homogêneas
• Vetores
Sintaxe:
• Tamanho = [Vi..Vf],
Vi = valor inicial; e
Vf = valor final.
21
<identificador> : vetor [tamanho] de <tipo>
22. • Algoritmos
• Estruturas Homogêneas
• Vetores
Exemplo:
• Declaração de um vetor com 10 posições.
Devem ser declarados dentro da sessão var.
22
notas : vetor [1..10] de real
Nome do vetor Tipo de dados
Tamanho do vetor (note que são apenas DOIS PONTOS!)
24. • Algoritmos
• Estruturas Homogêneas
• Vetores
• Vimos que vetores são "variáveis".
• A declaração de um vetor apenas reserva
espaço na memória e não associa valores a ele.
• Porém, em algumas situações é necessário
iniciar os vetores com algum valor predefinido.
Ou iniciar todo o vetor, dependendo do problema.
24
25. • Algoritmos
• Estruturas Homogêneas
• Vetores → Atribuição de valores
• Assim como as variáveis comuns, os valores de
um vetor também podem ser inicializados.
• Sintaxe:
25
<identificador>[posição] ← <valor>
<identificador>[posição] := <valor>
Índice
30. • Algoritmos
• Estruturas Homogêneas
• Vetores → Atribuição de valores
Exemplo: {2}
30
algoritmo "ExVetores"
var
notas: vetor [1..5] de real
inicio
escreva("Nota do 1o. Aluno: ")
leia(notas[1])
escreva("Nota do 2o. Aluno: ")
leia(notas[2])
escreva("Nota do 3o. Aluno: ")
leia(notas[3])
fimalgoritmo
31. • Algoritmos
• Estruturas Homogêneas
• Vetores → Atribuição de valores
Exemplo: {3}
31
algoritmo "ExVetores"
var
notas: vetor [1..5] de real
i: inteiro
inicio
para i de 1 ate 5 faca
escreva("Notas: ")
leia(notas[i])
fimpara
fimalgoritmo
37. 37
Problema I
Faça um algoritmo que leia 5 números inteiro
fornecidos pelo teclado e "armazene-os" em um
vetor. Em seguida, imprima-os na ordem em
que foram "digitados".
38. • Algoritmos
Resolução do Problema I
38
algoritmo "Problema 01"
var
numeros: vetor [1..5] de inteiro
i, j: inteiro
inicio
para i de 1 ate 5 faca
escreva("Digite um valor: ")
leia(numeros[i])
fimpara
para j de 1 ate 5 faca
escreva(numeros[j])
fimpara
fimalgoritmo
39. 39
Problema II
Faça um algoritmo que dado um vetor
inicializado com 5 valores, some estes
valores e em seguida imprima a soma.
40. • Algoritmos
40
algoritmo "Problema 02"
var
numeros: vetor [1..5] de inteiro
i, soma: inteiro
inicio
numeros[1] ← 7
numeros[2] ← 8
numeros[3] ← 2
numeros[4] ← 5
numeros[5] ← 3
para i de 1 ate 5 faca
soma ← soma + numeros[i]
fimpara
escreval("Soma: ", soma)
fimalgoritmo
ResoluçãodoProblemaII
41. 41
Problema III
Faça um algoritmo que dado um vetor
inicializado com 5 valores, apresente a
média dos valores contidos no vetor.
42. • Algoritmos
42
algoritmo "Problema 03"
var
numeros: vetor [1..5] de inteiro
i, soma: inteiro
media: real
inicio
numeros[1] ← 7
numeros[2] ← 8
numeros[3] ← 2
numeros[4] ← 5
numeros[5] ← 3
para i de 1 ate 5 faca
soma ← soma + numeros[i]
fimpara
media ← soma / 5
escreval("Media: ", media)
fimalgoritmo
ResoluçãodoProblemaIII
43. 43
Problema IV
Faça um algoritmo que leia 5 números
inteiros e "armazene-os" em um vetor. Em
seguida, "imprima" somente os números
pares que se encontram no vetor.
44. • Algoritmos
44
algoritmo "Problema 04"
var
numeros: vetor [1..5] de inteiro
i, j: inteiro
inicio
para i de 1 ate 5 faca
escreva("Digite um valor: ")
leia(numeros[i])
fimpara
para j de 1 ate 5 faca
se (numeros[j] % 2 = 0) entao
escreval(numeros[j])
fimse
fimpara
fimalgoritmo
ResoluçãodoProblemaIV
45. 45
Problema V
Faça um algoritmo que leia um vetor com
5 posições de números inteiros. Em
seguida, "imprima" a quantidade de
números pares existentes no vetor.
46. • Algoritmos
46
algoritmo "Problema 05"
var
numeros: vetor [1..5] de inteiro
i, j, conta_par: inteiro
inicio
para i de 1 ate 5 faca
escreva("Digite um valor: ")
leia(numeros[i])
fimpara
para j de 1 ate 5 faca
se (numeros[j] % 2 = 0) entao
conta_par ← conta_par + 1
fimse
fimpara
escreval(conta_par)
fimalgoritmo
ResoluçãodoProblemaV
47. 47
Problema VI
Faça um algoritmo que dado um vetor de
inteiro com 10 elementos, retorne o
"maior" valor que se encontra no vetor.
48. • Algoritmos
Resolução do Problema VI
48
algoritmo "Problema 06"
var
numeros: vetor [1..10] de inteiro
i, mv: inteiro
inicio
// Suponha que o vetor já preenchido
mv ← numeros[1]
para i de 2 ate 10 faca
se (numeros[i] > mv) entao
mv ← números[i]
fimse
fimpara
escreval(mv)
fimalgoritmo
49. 49
Problema VII
Faça um algoritmo que dado um vetor
de números inteiros e positivos com 10
elementos, apresente os índices dos
"números ímpares".
50. • Algoritmos
Resolução do Problema VII
50
algoritmo "Problema 07"
var
numeros: vetor [1..10] de inteiro
i, j: inteiro
inicio
para i de 1 ate 10 faca
escreva("Digite um valor: ")
leia(numeros[i])
fimpara
para j de 1 ate 10 faca
se (numeros[j] % 2 <> 0) entao
escreval("Valor ímpar na posição: ", i)
fimse
fimpara
fimalgoritmo
51. 51
Problema VIII
Faça um algoritmo que dados um conjunto
de valores inteiros armazene os seis
primeiros números maiores do que ZERO
em um vetor.
52. • Algoritmos
Resolução do Problema VIII
52
algoritmo "Problema 08"
var
numeros: vetor [1..6] de inteiro
i, valor: inteiro
inicio
repita
escreva("Digite um valor: ")
leia(valor)
se (valor > 0) entao
numeros[i] ← valor
i ← i + 1
fimse
ate(i > 6)
fimalgoritmo