alg1 capitulo7 vetores

Preview:

Citation preview

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.

inicioX <­ 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:

VarTeste : 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: inteiroinicio  para cont <­ 1 ate 10 faca    escreval("digite um numero real")    leia(numeros[cont])  fimparafimalgoritmo

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:

VarNomes : vetor[1..100] de caracterIdades : vetor[1..100] de inteiroSexos : vetor[1..100] de caracter

Nomes   1     2       3 4   5 ............................  100João Maria José

Idades   1     2       3 4   5 ............................  100

25 32 19

Sexos   1     2       3 4   5 ............................  100

M F M

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 entaoMenorIdade <­ 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: inteiroinicio  para i:= 1 ate 10 faca    nomes[i]<­ "Joao"  fimpara    para i:= 1 ate 10 faca    escreva(nomes[i], " na posicao ", i)  fimparafimalgoritmo

b.algoritmo "t"var  t: vetor[1..10] de inteiro  i, n: inteiroinicio  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: inteiroinicio  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])  fimparafimalgoritmo

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);

ExemploQuantidade Preço Subtotal (R$)

1 20,00 20,004 10,00 40,006 15,00 90,00

Faturamento 150,00

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 pessoasb) nome da pessoa mais jovemc) nome da pessoa mais idosad) nome e a idade do homem mais joveme) nome e idade da mulher mais idosa