CAPÍTULO 7 ­ VETORES

Objetivos da aula (previsão 8 h/aula)

Objetivos da aula
1) (   )  Entender a importância da utilizacão de vetores em um algoritmo 2) (   )  Entender o conceito de índice de vetor e aprender a sua utilizacão. 3) (   )  Aprender a trabalhar com vetores relacionados (associados) 4) (   )  Desenvolver algoritmos para a localizacão de valores em vetores. (1) Totalmente Alcançado (2) Parcialmente Alcançado (3) Não Alcançado

7 Vetores  {texto extraído da apostila do Prof. Wilson Castello Branco Neto – 
UNIPLAC} 7.1 Introdução  Os   vetores   são   variáveis   estruturadas   homogêneas   capazes   de   armazenar   uma   série   de  informações de um mesmo tipo em uma única variável. Sua utilização é importante quando é necessário armazenar várias informações, sobre as  quais,   em   geral,   serão   realizados   os   mesmos   processamentos   dentro   do   programa.   Por  exemplo, para armazenar a média dos vários alunos de uma turma na memória usando  variáveis simples, seriam necessárias “n” variáveis com nomes distintos, o que torna  o  programa mais complexo de ser elaborado e difícil de ser entendido. Neste caso pode­se  criar uma variável única que contenha todas estas informações. Os vetores são a forma mais simples de variáveis estruturadas homogêneas. São estruturas  unidimensionais que armazenam um conjunto de valores de um mesmo tipo. Um vetor é,  na   verdade,   um   conjunto   contínuo   de   posições   de   memória   identificado   por   um   nome  único. Ex. Vetor para armazenar as cinco notas de um aluno
Notas: 7 8 7 6 8

Para ler e/ou escrever informações dentro de um vetor são necessárias duas informações:  1)O nome do mesmo; e 2) A posição dentro dele. Ex: Para cadastrar a última nota do aluno deve ser utilizada o seguinte comando:
Notas[5] <­ 9

Neste comando pode­se observar que inicialmente foi definido o nome da variável.  Como esta variável é um vetor, em seguida foi definida a posição onde o valor deve ser  armazenado, neste caso na posição 5. A definição da posição que está sendo manipulada  dentro do vetor é sempre feita entre colchetes [ ] após o nome da variável. Gerando como resultado o vetor:
Notas: 7 8 7 6 9

Para ler ou escrever alguma informação de um vetor devem ser utilizados os comandos  LEIA e ESCREVA, indicando além da variável a posição do vetor que se deseja ler ou  escrever. A linha de código a seguir faz a leitura conteúdo digitado no teclado pelo usuário e o  armazena na primeira posição do vetor.
Leia(Notas[1])

A linha de código a seguir escreve na tela o conteúdo armazenado na segunda posição do  vetor.
Escreval(Notas[2])

Variáveis podem ser utilizadas como índices de vetores. Por exemplo, o código a seguir  deixará o vetor “Teste” com os seguintes valores.
inicio X <­ 5; Teste[1] <­10 * X; Teste[2] <­ 3; Teste[X­1] <­ 10; Teste[X] <­ X + 10; Fimalgoritmo

Teste 50 3 ? 10 15

O   símbolo   “?”   na   terceira   posição   indica   que   naquela   posição   existe   um   valor  desconhecido. 7.2 Declaração de Vetores Para declarar uma variável do tipo vetor, utilizamos a seguinte sintaxe:
Var Teste : vetor[1..5] de inteiro

A palavra reservada vetor indica que a variável teste será uma variável estruturada  homogênea. O intervalo 1..5, entre colchetes, indica a quantidade de posições do vetor. A  palavra de, indica o tipo de informações que serão armazenadas dentro do vetor, neste caso  números inteiros.  Em geral, os vetores são utilizados com estruturas de repetição, e a variável utilizada como  contador (cont), para fazer o controle do número de repetições, é também utilizado como  índice do vetor. Desta forma, a cada iteração, o valor do contador é incrementado e uma  nova posição do vetor e processada (lida, calculada ou escrita). Exemplo 1 ­  Faça um algoritmo que leia um conjunto de 10 números reais e armazene­os  em um vetor.
algoritmo "exemplo1" var   numeros: vetor[1..10] de real   cont: inteiro inicio   para cont <­ 1 ate 10 faca     escreval("digite um numero real")     leia(numeros[cont])   fimpara fimalgoritmo

Neste caso, inicialmente a variável cont tem o valor 1, assim o primeiro número digitado  será   armazenado   na   primeira   posição  do   vetor.   Na   segunda   iteração,   a   variável  cont  é  incrementada   para   dois   e   o   segundo   número   digitado   será   armazenado   na   posição   de  numero dois dentro do vetor. Este processo é repetido por dez vezes, e como a variável cont  é   utilizada   como   índice   do   vetor   a   cada   nova   iteração   uma   nova   posição   do   vetor   é  preenchida, ficando as dez posições completas ao final do programa.

7.3 Utilização de Vários Vetores Relacionados Mais de um vetor pode ser utilizado em um mesmo programa para armazenar informações  de diferentes tipos mas que se referem a uma mesma entidade. Por exemplo, supondo que se  deseja armazenar o nome, a idade e o sexo de 100 pessoas. Para isto devem ser criados três  vetores distintos, um para os nomes, outro para as idades e, por fim, outro para os sexos,  conforme código abaixo:
Var Nomes : vetor[1..100] de caracter Idades : vetor[1..100] de inteiro Sexos : vetor[1..100] de caracter 4   5 ............................  100

Nomes    1     2       3 João Maria José

Idades    1     2       3 25 32 19 Sexos    1     2       3 M F M

4

  5

............................  100

4

  5

............................  100

Apesar dos vetores serem armazenados na memória como três variáveis independentes, eles  estão   logicamente   relacionados   pelo   índice.     A   pessoa   cujo   nome   está   armazenado   na  posição   1   do   vetor   “nomes”,   tem   sua   idade   armazenada   na   primeira   posição   do   vetor  “idades” e o sexo na posição 1 do vetor “sexos”. Esta associação é facilmente implementada  quando se utiliza o contador de uma estrutura de repetição como índice dos três vetores ao  mesmo tempo. O trecho de código abaixo é responsável por fazer a leitura dos dados das  100 pessoas e por armazená­los nos vetores. Exemplo 2 – Leitura e armazenamento do nome, idade e sexo de 100 pessoas em três  vetores distintos.
para cont<­ 1 ate 100 faca   escreval(‘Digite o nome da pessoa : `)      leia(nomes[cont])   escreval(‘Digite a idade da pessoa : `)      leia(idades[cont])   escreval(‘Digite o sexo da pessoa : `)      leia(sexos[cont]) fimpara

O relacionamento entre os diferentes vetores para a recuperação de informações também é  feito através dos índices dos mesmos. Por exemplo, para imprimir, o nome da pessoa mais  jovem, deve­se inicialmente procurar a menor idade no vetor idades. Em seguida, de posse  da   posição   onde  estava   armazenada  a   menor   idade,   é   possível   recuperar   o  nome   desta  pessoa, já que ele estará armazenado nesta mesma posição no vetor nomes. Exemplo 3 – Código para encontrar o nome da pessoa mais jovem.
{Código para encontrar a menor idade} MenorIdade <­ Idades[1] para cont <­ 2 to 100 faca se Idades[cont] < MenorIdade entao MenorIdade <­ Idades[cont] PosicaoMenorIdade <­ cont             fimse       fimpara Escreval(’Pessoa mais jovem : ‘, nomes[PosicaoMenorIdade])

  Neste   código,   inicialmente,   é   buscada   a   menor   idade   no   vetor   de   “idades”.   Além   de  armazenar o valor da menor idade na variável “MenorIdade”, o programa guarda a posição  que está esta idade na variável “PosicãoMenorIdade”. Se a menor idade está na posição  “PosicãoMenorIdade” no vetor idade, então o nome desta pessoa estará na mesma posição  do vetor nomes, como mostrado no último comando do código acima.

7.1 Exercícios 1) Faça o teste de mesa para os algoritmos abaixo. a.
Algoritmo "dez_nomes" var   nomes: vetor[1..10] de caracter   i: inteiro inicio   para i:= 1 ate 10 faca     nomes[i]<­ "Joao"   fimpara      para i:= 1 ate 10 faca     escreva(nomes[i], " na posicao ", i)   fimpara fimalgoritmo

b.
algoritmo "t" var   t: vetor[1..10] de inteiro   i, n: inteiro inicio   escreva("digite um numero")   leia(n)   para i<­ 1 ate 10 faca     t[i]<­ i * n   fimpara      para i<­ 1 ate 10 faca     escreval(i ," X ", n , " = " ,  t[i])   fimpara    fimalgoritmo

c.
algoritmo "varias_notas" var   notas: vetor[1..5] de real   cont: inteiro inicio   para cont<­ 1 ate 5 faca     escreva("digite a nota do aluno ", cont)     leia(notas[cont])   fimpara   para cont<­ 1 ate 5 faca     escreval("o aluno " , cont , " tirou nota " , notas[cont])   fimpara fimalgoritmo

2) Implemente os algoritmos do exercício anterior no Visualg e observe a execução dos  mesmos. 3)  Implemente um algoritmo que leia as notas de 10 alunos armazenando­as em um vetor  (matriz) de 10 posições. Ao final escreva na tela somente as notas maiores que 5.0. 4)   Implemente um algoritmo que leia as notas e os nomes de 5 alunos armazenando os  dados em vetores (matriz) de 5 posições, sendo que as notas serão armazenadas em um  vetor de reais e os nomes em um outro vetor do tipo caractere. Ao final o algoritmo deve  escrever na tela somente os nomes dos alunos que tiraram nota maior que 5.0. 5) Desenvolva um algoritmo que leia um conjunto de 15 números inteiros e armazene­os  em um vetor A. Após a leitura dos dados o algoritmo deve multiplicar todos os números  do vetor A por 3 e armazenar o resultado em um segundo vetor B. 6) Construa um algoritmo que solicite ao usuário o sexo de várias pessoas armazenando os  dados em um vetor. Ao final o algoritmo deve imprimir quantas pessoas são do sexo  masculino e quantas são do sexo feminino. O algoritmo deve parar de solicitar o sexo  quando o número de pessoas chegar a 30. 7.2 Exercícios Desenvolva   os   algoritmos   abaixo,   observando   as   gradativas   alterações   nos   códigos   à  medida que são solicitadas novas características ao problema. 1) Algoritmo para fazer a leitura da idade de dez pessoas e armazená­las em um vetor 2) Algoritmo para localizar a menor idade entre as 10 idades que estão armazenadas em  um vetor de idades. 3) Algoritmo que leia o nome e a idade de dez pessoas  armazenando os dados em vetores. 4) Algoritmo que leia o nome e a idade de dez pessoas  armazenando os dados em vetores  e que localize o nome da pessoa de menor idade. 5) Algoritmo que leia o nome, a idade, e o sexo de dez pessoas  armazenando os dados em  vetores. 6) Algoritmo que leia o nome, a idade, e o sexo de dez pessoas  armazenando os dados em  vetores e que localize o nome e o sexo da pessoa de menor idade. 7) Algoritmo que leia o nome, a idade, e o sexo de dez pessoas  armazenando os dados em  vetores e que faca a contagem do numero de pessoas do sexo masculino e do sexo  feminino que possuem idade maior que 18.

8) Algoritmo que leia o nome, a idade, e o sexo de dez pessoas  armazenando os dados em  vetores e que imprima o nome das pessoas do sexo masculino que possuem idade maior  que 18.  7.3 Exercícios 1) Elabore um algoritmo que leia a nota de 80 alunos e que imprima ao final a nota de  cada aluno e a média da turma (utilize a estrutura de repetição enquanto faca). 2) Elabore um algoritmo que leia a nota de 80 alunos e que imprima ao final a nota de  cada aluno e a média da turma (utilize a estrutura de repetição para faca). 3) Elabore um algoritmo que armazene o nome e duas notas de 5 alunos e imprima uma  listagem contendo nome, as duas notas e a média de cada aluno. 4) Elabore   um   algoritmo   que   armazene   números   em   dois   vetores   inteiros   de   cinco  elementos cada, gere e imprima o vetor soma. 5) Um   armazém   trabalha   com   100   mercadorias   diferentes   identificadas   pelos   números  inteiros de 1 a 100. O dono do armazém anota a quantidade de cada mercadoria vendida  durante o mês. Ele tem uma tabela que indica para cada mercadoria o preço de venda.  Elabore um algoritmo para calcular o faturamento mensal do armazém, ou seja: faturamento = ∑ (quantidadei * preçoi); Exemplo Quantidade Preço Subtotal (R$) 1 20,00 20,00 4 10,00 40,00 6 15,00 90,00 150,00 Faturamento 6) Elabore um algoritmo que leia um conjunto X com 10 números e calcule a diferença  entre o maior e o menor elemento existente. 7) Elabore um algoritmo que leia um conjunto X com 10 números e calcule a diferença  entre as posições que maior e o menor elemento existentes ocupam. 8) Dada uma coleção de N números, imprimir o índice do primeiro número negativo, se  houver.

9) Elabore um algoritmo que leia nome e salário de 20 pessoas. Calcular e armazenar o  novo  salário  sabendo­se  que  o  reajuste  foi   de  8%.  Ao  final   imprimir   uma  listagem  numerada com nome e novo salário. 10) Elabore um algoritmo que leia o nome, a idade e o sexo de 10 pessoas e imprima (Caso  preferir, desenvolva algoritmos separados para cada item): a) média de idade das pessoas b) nome da pessoa mais jovem c) nome da pessoa mais idosa d) nome e a idade do homem mais jovem e) nome e idade da mulher mais idosa