Buscar

Trabalhando com Vetores em Algoritmos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

VETORES Prof. Cipriano Carneiro
DEFINIÇÃO
Vetores são estruturas estáticas que
armazenam diversas variáveis do mesmo
tipo e sequencialmente em memória. Eles
podem conter variáveis primitivas ou
complexas. E são acessáveis por índices.
(número inteiro que varia de 0 a n ou de
1 a n).
CADA ITEM EM UM VETOR É CHAMADO DE ELEMENTO, E CADA
ELEMENTO É ACESSADO PELA POSIÇÃO NUMÉRICA. COMO NA
ILUSTRAÇÃO ABAIXO AS POSIÇÕES SÃO NUMERADAS A PARTIR
DO 0. O 9O ELEMENTO, POR EXEMPLO, É ACESSADO NA POSIÇÃO
8.
ARRAYS E DIMENSÕES
ARRAYS UNI E BIDIMENSIONAIS
Sabe-se que um array é uma série de
elementos do mesmo tipo (primitivo ou não)
endereçáveis por um índice. Contudo, esse
índice pode ter mais de uma dimensão.
Aumentando, assim, a capacidade de
organização da informação na memória.
Na matemática chamamos de vetor os
arrays unidimensionais e matriz os arrays
bidimensionais.
QUAL A DIMENSÃO MÁXIMA DE UM 
ARRAY?
Arrays multidimensionais podem conter quantos índices forem necessários. Contudo,
a quantidade de memória necessária para armazenar um array multidimensional
cresce em proporção geométrica. Observe o exemplo:
 char seculo[100][365][24][60][60]
O array multidimensional acima armazenaria cada segundo dos próximos 100
anos. Apenas a declaração de tal estrutura consumiria 3 GB de memória!
Arrays multimensionais são apenas abstrações para os programadores, desde que
se obtenha o mesmo resultado, basta organizar o fator entre os índices. Por
Exemplo:
 int x[3][5]; é equivalente a int x[15];
Deve-se avaliar a relevância de arrays multidimensionais com cuidado;
Os mais utilizados são os uni e bidimensionais. Os bidimensionais carregam as
vantagens óbvias das operações com matrizes da matemática;
MATRIZ
A contrapartida clássica de uma matriz é o que
aprendemos na escola. Uma organização
endereçável pelo cruzamento de linhas e colunas.
(No exemplo um matriz (3x4)
0 1 2 3
DECLARANDO UM VETOR
C = Vetor [1..n] de inteiro; ou C = Vetor[n] de inteiro;
N = Vetor [1..n] de real; ou C = Vetor[n] de real;
C = Vetor [1..n] de cadeia; ou C = Vetor[n] de cadeia;
OBS.: algoritmicamente falando n pode ser
indeterminado, mas na prática para se criar um vetor
ele deve ser conhecido previamente. Lembre-se que
vetores são estruturas estáticas;
1. algoritmo "LeituraEscritaVetor"
2. var
3. vetorA : vetor[0..9] de real
4. i:inteiro
5. inicio
6. escreval("Digite 10 números inteiros: ")
7. para i de 0 ate 9 faca
8. escreva("Elemento[",i,"]: ")
9. leia(vetorA[i])
10. escreval()
11.fimpara
12.escreval(" ———- VETOR A ———-")
13.para i de 0 ate 9 faca
14. escreva(vetorA[i]," ")
15.fimpara
16.fimalgoritmo
EXEMPLO
Vamos analisar um algoritmo que leia 3
números inteiros e os coloque em ordem
crescente. A diferença do nosso primeiro
algoritmo, feito apenas considerando o
conhecimento da estrutura de decisão SE, é
que, desta vez, utilizaremos a estrutura de
vetor. E a solução servirá para mais do que
3 elementos. O que antes era inviável.
A IDEIA
TRABALHANDO JUNTOS TROCAMOS 
INFORMAÇÕES
Usam-se dois índices “i” e “j” para se descobrir o
menor de todos os elementos do vetor a medida
que avançamos nos seus valores armazenados.
O índice “j” é usado para garantir que os
números que estão para trás dele estejam em
ordem crescente. O índice “i” é usado para
“varrer” o vetor nesta busca a cada interação.
Mas, primeiro precisamos criar e ler o vetor com
os valores, vamos a primeira parte do algoritmo.
1. algoritmo "OrdemCrescente"
2. var
3. vetorA : vetor[0..2] de inteiro
4. i,j,menor,posmenor,temp:inteiro
5. inicio
6. temp<-0
7. escreval("Digite 3 números inteiros: ")
8. para i de 0 ate 2 faca
9. escreva("Elemento[",i,"]: ")
10. leia(vetorA[i])
11. escreval()
12.fimpara
Além dois índices i e j 
citados e do próprio 
vetor. Temos aqui outras 
variáveis que nos 
auxiliarão nesta solução. 
Basicamente neste 
primeiro trecho são lidos 
os valores do vetor e a 
variável temp é iniciada 
com o valor zero;
13. posmenor<--1
14. menor<-vetorA[j]
15. para j de 0 ate 2 faca
16. para i de j+1 ate 2 faca
17. Se vetorA[i]<menor entao
18. posmenor<-i
19. fimse
20. fimpara
21. se (posmenor>-1) entao
22. menor<-vetorA[posmenor]
23. temp<-vetorA[j]
24. vetorA[j]<-menor
25. vetorA[posmenor]<-temp
26. posmenor<--1
27. fimse
28. fimpara
Este é o coração da solução 
explicada no texto anterior. 
Entretanto, ela precisa de dois 
ajustes para funcionar 
completamente. Vamos descobrir 
que problemas são estes?!! 
Simular é um bom caminho.
A PARTE FINAL DO ALGORITMO
29.escreval(" ———- VETOR em ordem crescente ———-")
30.para i de 0 ate 2 faca
31. escreva(vetorA[i]," ")
32.fimpara
33.escreval()
34.fimalgoritmo
SIMULAÇÃO 1
1 3 2
1 2 3
A primeira sequencia OK. A 
segunda falha. Porque não mudo 
o foco de preocupação depois 
que encontro o menor número na 
primeira rodada. Encontrei o 
menor número. Então não preciso 
e não posso mais me preocupar 
com ele. Pois o foco agora é 
encontrar o segundo menor 
número e assim por diante. 
Basicamente abandono o menor 
número encontrado e passo a 
busca do próximo.
13. posmenor<--1
14. //menor<-vetorA[j]
15. para j de 0 ate 2 faca
16. menor<-vetorA[j]
17. para i de j+1 ate 2 faca
18. Se vetorA[i]<menor entao
19. posmenor<-i
20. fimse
21. fimpara
22. se (posmenor>-1) entao
23. menor<-vetorA[posmenor]
24. temp<-vetorA[j]
25. vetorA[j]<-menor
26. vetorA[posmenor]<-temp
27. posmenor<--1
28. fimse
29. fimpara
Este problema é 
resolvido, 
simplesmente, 
trocando-se a 
posição desta linha. 
Pois o objetivo é 
encontrar o menor 
número da rodada. 
Com esta linha fora 
do laço (e agora 
comentada) o menor 
número de todos vai 
atrapalhar o 
encontro do segundo 
menor, do terceiro 
menor, e assim por 
diante. Observe 
agora a linha 16.
SIMULAÇÃO 2
1 2 3 ok
1 3 2 ok
2 1 3 ok
2 3 1 ok
3 1 2 falha
3 2 1 ok
A solução tem que ser efetiva 
para todos os casos. Sem 
falhas. O que aconteceu com 
a sequencia apontada? 
Simule a sequencia que falha 
e explique. Qual a solução 
para consertarmos o 
algoritmo?
VAMOS FAZER AS ATIVIDADES 
(LISTA 7) FIM

Outros materiais