Construcao de Algoritmos - Aula 10
-
Upload
facema-faculdade-de-ciencias-e-tecnologia-do-maranhao -
Category
Education
-
view
46 -
download
1
Transcript of Construcao de Algoritmos - Aula 10
Disciplina: Constr. de Algoritmos e Prog. de SistemasProfessor: Jeovane Reges
Caxias – MA2016
ACULDADE DE CIÊNCIAS E TECNOLOGIA DO MARANHÃO
2
Link Drive
bit.ly/ads-algoritmos
3
Algoritmos
4
Estruturas Homogêneas<Vetores>
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.
6
• Algoritmos• Estruturas Homogêneas• Sempre que atribuímos um novo valor a
uma variável simples, o valor anterior é perdido.
algoritmo "Problema 01"var x: inteiroinicio 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.
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.
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.
X ← 10X ← 20
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).
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.
algoritmo "Notas"var notas: real i: inteiroinicio para i de 1 ate 5 faca escreva(i, "a. nota: ") leia(notas) fimpara escreval("Notas: ", notas)fimalgoritmo
13
• Algoritmos• Estruturas Homogêneas• Saída:
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.
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.
16
Estruturas de dados homogêneas são estruturas que permitem armazenar um conjuntos de dados do mesmo tipo
em uma única variável.
17
Vetores
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.
19
• Algoritmos• Estruturas Homogêneas• Vetores
Estruturas que armazenam os dados em uma única linha e várias colunas.
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.
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.
<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.
notas : vetor [1..10] de real
Nome do vetor Tipo de dados
Tamanho do vetor (note que são apenas DOIS PONTOS!)
23
Vetores (Atribuição de valores)
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.
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:<identificador>[posição] ← <valor><identificador>[posição] := <valor>
Índice
26
• Algoritmos• Estruturas Homogêneas• Vetores → Atribuição de valores
Exemplo: {1}algoritmo "ExVetores"var notas: vetor [1..5] de realinicio notas[1] ← 7 notas[2] ← 8.5 notas[3] ← 7.2fimalgoritmo
7
1 2 3 4 5
27
• Algoritmos• Estruturas Homogêneas• Vetores → Atribuição de valores
Exemplo: {1}algoritmo "ExVetores"var notas: vetor [1..5] de realinicio notas[1] ← 7 notas[2] ← 8.5 notas[3] ← 7.2fimalgoritmo
7 8.5
1 2 3 4 5
28
• Algoritmos• Estruturas Homogêneas• Vetores → Atribuição de valores
Exemplo: {1}algoritmo "ExVetores"var notas: vetor [1..5] de realinicio notas[1] ← 7 notas[2] ← 8.5 notas[3] ← 7.2fimalgoritmo
7 8.5 7.2
1 2 3 4 5
29
• Algoritmos• Estruturas Homogêneas• Vetores → Atribuição de valores
Exemplo: {1}algoritmo "ExVetores"var notas: vetor [1..5] de realinicio notas[1] ← 7 notas[2] ← 8.5 notas[3] ← 7.2fimalgoritmo
7 8.5 7.2 0 0
1 2 3 4 5
30
• Algoritmos• Estruturas Homogêneas• Vetores → Atribuição de valores
Exemplo: {2}
algoritmo "ExVetores"var notas: vetor [1..5] de realinicio 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}
algoritmo "ExVetores"var notas: vetor [1..5] de real i: inteiroinicio para i de 1 ate 5 faca escreva("Notas: ") leia(notas[i]) fimparafimalgoritmo
32
Vetores (Acessando valores)
33
• Algoritmos• Estruturas Homogêneas• Vetores → Acessando valores
Exemplo: {1}algoritmo "ExVetores"var notas: vetor [1..5] de realinicio notas[1] ← 7 notas[2] ← 8.5 notas[3] ← 7.2
escreval("1a. nota: ", notas[1]) escreval("2a. nota: ", notas[2]) escreval("3a. nota: ", notas[3])fimalgoritmo
34
• Algoritmos• Estruturas Homogêneas• Vetores → Acessando valores
Exemplo: {2}
algoritmo "ExVetores"var notas: vetor [1..5] de real i: inteiroinicio notas[1] ← 7 notas[2] ← 8.5 notas[3] ← 7.2 para i de 1 ate 5 faca escreval(i, "a. nota: ", notas[i]) fimparafimalgoritmo
35
• Algoritmos• Estruturas Homogêneas• Vetores → Acessando valores
Saída: {2}
36
Exemplos Resolvidos
<Vetores>
37
Problema IFaç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
algoritmo "Problema 01"var numeros: vetor [1..5] de inteiro i, j: inteiroinicio 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]) fimparafimalgoritmo
39
Problema IIFaça um algoritmo que dado um vetor inicializado com 5 valores, some estes valores e em seguida
imprima a soma.
40
• Algoritmos
algoritmo "Problema 02"var numeros: vetor [1..5] de inteiro i, soma: inteiroinicio 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
Reso
luçã
o do
Pro
blem
a II
41
Problema IIIFaça um algoritmo que dado um vetor inicializado com 5 valores, apresente a média dos valores
contidos no vetor.
42
• Algoritmos
algoritmo "Problema 03"var numeros: vetor [1..5] de inteiro i, soma: inteiro media: realinicio 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)fimalgoritmoRe
solu
ção
do P
robl
ema
III
43
Problema IVFaç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
algoritmo "Problema 04"var numeros: vetor [1..5] de inteiro i, j: inteiroinicio 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 fimparafimalgoritmo
Reso
luçã
o do
Pro
blem
a IV
45
Problema VFaç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
algoritmo "Problema 05"var numeros: vetor [1..5] de inteiro i, j, conta_par: inteiroinicio 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
Reso
luçã
o do
Pro
blem
a V
47
Problema VIFaç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
algoritmo "Problema 06"var numeros: vetor [1..10] de inteiro i, mv: inteiroinicio // 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
Problema VIIFaç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 VIIalgoritmo "Problema 07"var numeros: vetor [1..10] de inteiro i, j: inteiroinicio 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 fimparafimalgoritmo
51
Problema VIIIFaç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
algoritmo "Problema 08"var numeros: vetor [1..6] de inteiro i, valor: inteiroinicio repita escreva("Digite um valor: ") leia(valor)
se (valor > 0) entao numeros[i] ← valor i ← i + 1 fimse ate(i > 6)fimalgoritmo