Vetores (2) Continuação Caso 1: Qual o menor valor ? Início TIPO vcu = vetor [1..10] de inteiros; //variável composta uniforme vcu : vetor; Inteiro: min, i, n, pos; Ler (n); PARA i DE 1 ATÉ n PASSO 1 FAÇA Ler ( vetor[i] ) ; FIM PARA Min = vetor[1]; PARA i DE 2 ATÉ n PASSO 1 FAÇA SE min < vetor[i] ENTAO inicio min vetor[i]; pos i ; // a posição que se encontra fim FIM SE FIM PARA Escreve ( ‘menor valor: ‘, min, ‘ na posicao : ‘ , pos); FIM Ordenar vetor 99 6 8 3 10 9 1 aux 21 33 14 Estratégia • Usar uma variável simples como “recipiente” de troca : inteiro aux • Descobrir o menor valor do vetor e sua posição • Armazenar esse “primeiro” menor em aux • Trocar : valor do vetor[1] vai para posição do menor • Copiar valor de Aux para vetor[1] ... • O menor valor está na posição 1 !!! Ordenar vetor ... aux 99 6 8 3 10 9 1 pos 21 33 14 Usando o algoritmo do caso 1, descobriu-se que o menor valor é 1 !!! E está na posição 7... Ordenar vetor ... 99 6 8 3 10 9 1 [7] 21 33 14 aux pos Ordenar vetor ... 99 6 8 3 10 9 1 21 33 14 aux 1 ???? pos 7 Falta colocar o menor valor na primeira posição ( ou índice ) do vetor. Mas será trocado o valor que lá está , pois não se quer perdê-lo. Ordenar vetor ... 99 6 8 3 10 9 1 21 33 14 aux 1 pos 7 !!!! Vai ser trocado o valor que está na primeira posição para que o menor valor do vetor esteja em primeiro. Ordenar vetor ... [pos] 99 6 8 3 10 9 1 21 33 14 aux 1 pos 7 O valor da primeira posição do vetor é atribuído para a posição 7 !!!! Ordenar vetor ... 99 6 8 3 10 9 99 21 33 14 aux 1 pos 7 O valor da primeira posição do vetor para para a posição 7 !!!! Ordenar vetor ... 1 6 8 3 10 9 99 21 33 14 aux 1 pos 7 Agora, o menor valor vai para o seu lugar ( a primeira posição do vetor ). Próximo passo ... Ordenar os demais ... Ordenar vetor ... 1 6 8 3 10 9 99 21 33 14 aux pos Usar o algoritmo de encontrar o menor novamente, mas ignorar a primeira posição ( já é o menor ) Agora, o menor valor vai para o seu lugar ( a primeira posição do vetor ). Ordenar vetor ... 1 6 8 3 [4] 10 9 99 21 33 14 aux pos Usar o algoritmo de encontrar o menor novamente, mas ignorar a primeira posição ( já é o menor ) Agora, o menor valor vai para o seu lugar ( a primeira posição do vetor ). Ordenar vetor ... 1 6 8 3 [4] 10 9 99 21 33 14 aux 3 pos 4 Usar o algoritmo de encontrar o menor novamente, mas ignorar a primeira posição ( já é o menor ) Agora, o menor valor vai para o seu lugar ( a primeira posição do vetor ). Ordenar vetor ... 1 6 8 3 ???? 10 9 99 21 33 14 aux 3 pos 4 Usar o algoritmo de encontrar o menor novamente, mas ignorar a primeira posição ( já é o menor ) Agora, o SEGUNDO menor valor vai para o seu lugar ( a SEGUNDA posição do vetor ). Antes deve-se mover o conteúdo da segunda posição para ONDE pos indicar ... Ordenar vetor ... 1 6 8 [pos] 3 10 9 99 21 33 14 aux 3 pos 4 Usar o algoritmo de encontrar o menor novamente, mas ignorar a primeira posição ( já é o menor ) Agora, o SEGUNDO menor valor vai para o seu lugar ( a SEGUNDA posição do vetor ). Antes deve-se mover o conteúdo da segunda posição para ONDE pos indicar ... Ordenar vetor ... 1 6 8 [pos] 6 10 9 99 21 33 14 aux 3 pos 4 Agora, falta apenas transferir o SEGUNDO menor valor ( em aux) para a SEGUNDA posição do vetor Ordenar vetor ... 1 6 8 [pos] 6 10 9 99 21 33 14 aux 3 pos 4 Agora, falta apenas transferir o SEGUNDO menor valor ( em aux) para a SEGUNDA posição do vetor Ordenar vetor ... 1 3 8 [pos] 6 10 9 99 21 33 14 aux 3 pos 4 Agora, falta apenas transferir o SEGUNDO menor valor ( em aux) para a SEGUNDA posição do vetor Ordenar vetor ... 1 3 8 6 10 9 99 21 33 14 aux pos Agora, repetir o processo com os demais elementos ... E começar a partir da terceira posição, já que se ordenou o primeiro e segundo menor elemento ... E assim sucessivamente, até o penúltimo elemento ser processado... Sugestão de exercício 1. 2. Faça o procedimento para encontrar o maior elemento. Use esse procedimento para ordenar o vetor ( encontrar o maior , trocar , colocar o maior elemento na última posição do vetor ) ... Crie 2 vetores de mesmo tamanho e com mesmo tipo. Atribua valores diferentes entre esses vetores. Realize com eles: 3. • • • • 4. Soma Subtração Multiplicação Divisão Tome um dos vetores do exercício 3 e, para cada elemento, com seja K lido pelo usuário, faça – – – – Somar o valor k Subtrair o valor k Multiplicar por k Dividir por k Sugestão de exercício 5. Dado o vetor 2 1 8 6 10 9 99 21 33 14 •Escreva todos os elementos ímpares do vetor •Escreva todos os elementos de índice/posição ímpar Fortran •Vetores = Arrays ( conjuntos ) inicio program testeVetor; TIPO vreal = vetor[1..6] de real; vreal : vmedia; real vmedia(6) Inteiro: i ; integer i Para i DE 1 ATÉ 6 PASSO 1 Faça vmedia[i] i do i=1,6,1 escrever( i, vmedia[i] ); vmedia(i) = i FIM PARA print*, i, vmedia(i) FIM end do end •Dimension inicio Fortran TIPO vreal = vetor[1..6] de real; vreal : vmedia; Inteiro: i ; Para i DE 1 ATÉ 6 PASSO 1 Faça vmedia[i] i escrever( i, vmedia[i] ); FIM PARA FIM program testeVetor; real vmedia Dimension vmedia(1:6); do i=1,6,1 vmedia(i) = i print*, i, vmedia(i) end do end