Anda di halaman 1dari 6

CENTRO UNIVERSITRIO DO LESTE DE MINAS GERAIS

COMPUTAO SISTEMAS DE INFORMAO


DISCIPLINA: Algoritmos e Estruturas de Dados I
Professor: Ezequiel Mendes Duque / Dbora Pereira Coura

Estrutura de Dados: VETOR


1) Objetivos: Apresentar e utilizar estruturas de dados do tipo Vetor para resolver problemas
computacionais simples, que necessitem de armazenamento temporrio de vrios dados.
2) Livro texto: ASCENIO, A. F.G., CAMPOS, E.A.V. Fundamentos da Programao de Computadores
(Algoritmos, Pascal e C/C++). So Paulo: Prentice Hall, 2002.
3) Fundamentao Terica (Referncia para consulta e estudos: Captulo 5 do livro texto.)
1. Estruturas de Dados
Os tipos primitivos de dados at ento utilizados: Inteiro (int), Real (float), Caracter (char) e Lgico
(bool) no so suficientes para a resoluo de todos os problemas da vida real. Em muitos casos eles podem
ser substitudos para uma melhor soluo.
Esses novos tipos so tipos construdos a partir da composio de tipos primitivos e tm um formato
denominado, ou seja, possuem uma ESTRUTURA DE DADOS que define como os tipos primitivos esto
organizados. De forma anloga, anteriormente, as variveis podiam comportar apenas uma informao e,
segundo esse novo conceito, uma varivel pode comportar um conjunto de informaes primitivas, desde
que devidamente organizadas, divididas.
2. VETORES - Variveis Compostas Unidimensionais
Vetores so variveis unidimensionais porque possuem uma nica dimenso. Alm disso, representam um
conjunto de variveis do mesmo tipo e que so identificadas com um nico identificador (nome de varivel),
sendo alocadas sequencialmente na memria.
Exemplo: Vetor NOTA de 10 elementos do tipo primitivo Real.

NOTA

10

8,8

10

2,5

8,8

Observe que NOTA uma varivel composta unidimensional, ou seja, um Vetor. Portanto, ela capaz
de armazenar 10 nmeros reais, sendo referenciada por apenas um identificador chamado: NOTA.
Para acessarmos os elementos de um Vetor necessrio fazer uso das posies. Como voc pode ver no
exemplo, cada nota armazenada neste vetor tem um ndice (um valor de identificao) que utilizado para
acessar um respectivo dado. A nota 8,8 est armazenada no vetor NOTA, na posio 3. Veja exemplos de
cdigo abaixo, que demonstram a atribuio e leitura de dados em vrias posies do vetor NOTA.
Exemplo:
NOTA[0] 10;
NOTA[3] 9;
NOTA[5] 8;
Soma NOTA[2] + NOTA[9];
Leia (NOTA[7]);
Escreva (NOTA[5]);

2.1. Declarao de Vetores


<tipo> : <nome da varivel>[tamanho];
Onde: <tipo> tipo primitivo de dados do vetor
<nome da varivel> - nome do vetor
[tamanho] quantidade de posies do vetor
Para o exemplo do Vetor NOTA teramos a seguinte declarao:
Real: NOTA[10];
Em C++:
float NOTA[10];
2.2. Quando utilizar vetor
Geralmente, quando precisamos armazenar uma quantidade significativa de dados durante todo o
tempo de execuo de um programa, faz-se necessrio utilizar vetor para armazenar esses dados. Uma
situao tpica seria, por exemplo, quando nos deparamos com o seguinte problema: Obter os nomes e
as notas de clculo 1 de uma turma de 20 alunos, calcular a mdia da turma e depois informar quais so
os alunos que obtiveram nota superior media calculada. Observe que neste caso, identificar o nome
dos alunos que obtiveram nota superior mdia s possvel aps o clculo da mdia. Ou seja,
necessrio ler todas as notas e nomes dos alunos, calcular a mdia e depois comparar cada nota com a
mdia, para identificarmos as notas superiores mdia. Todas as 20 notas tm que estar armazenadas
para se fazer o teste e, alm disso, os nomes tambm tero que estar armazenados para que seja
exibido.
Uma das formas de se resolver esse problema utilizando vetor. Se no utilizarmos vetor, vamos
precisar de no mnimo 20 variveis para guardar as 20 notas e mais 20 variveis para guardar os 20
nomes. Lembre-se, esses dados so necessrios para que seja possvel definir quem so os alunos com
nota maior que a mdia. Desse modo, sero criados dois vetores: o primeiro, para guardar as 20 notas e
o segundo, para guardar os nomes. Assim ao invs de 40 variveis, teremos 2 variveis com a estrutura
de um vetor.
2.3. Preenchimento de um vetor
Na maioria das vezes em que for necessrio o uso de um vetor para armazenar dados
temporariamente, ser necessrio colocar esses dados no vetor. Ou seja, atribuir valores a todas as
posies, preenchendo cada partio (quadrado) do vetor com um valor. Para acessar cada partio a
fim de colocar um valor dentro dessa partio necessrio ter controle do valor do ndice ( do valor de
cada quadrado).
Considerando Num um vetor capaz de armazenar 5 nmeros inteiros, analise o cdigo abaixo e veja o
que acontece:
Em Portugol
Para x de 0 at 4 Faa
Escreva(Digite o , x+1, nmero: );
Leia(Num[x]);
Fim-para;

Em C++
for (x = 0; x < 5; x++)
{
cout<<\nDigite o <<x+1<<o. nmero: ;
cin>>Num[x];
}

Observe que este lao de repetio ir fazer com que o X assuma a cada repetio os valores de 0 a
4, exatamente os valores dos ndices do Vetor. Desta forma possvel utilizar o X para acessar o ndice
do vetor e consequentemente armazenar o valor informado dentro da partio do vetor, acessada pelo
ndice.

Veja o rastreio:
Memria
x=0

Num
0

12

98
3

Tela
Digite o 1o. nmero: 12

12
x=1

x=2

x=3

x=4

Num

Num
0

12

98

34

12

98

34

76

12

98

34

76

45

Num

Num

Digite o 2o. nmero: 98

Digite o 3o. nmero: 34

Digite o 4o. nmero: 76

Digite o 5o. nmero: 45

2.4. Exibio dos dados de um vetor


Para exibir os elementos existentes de um vetor necessrio percorr-lo. Ao percorrer o vetor
deve-se acessar cada um dos seus ndices para conseguir obter o valor que est dentro de cada partio.
Assim sendo, deve-se fazer uso de um comando de repetio da mesma maneira que foi realizada para
preencher o vetor.
Considerando o vetor Num do exemplo anterior, analise o cdigo abaixo e veja o que acontece:
Em Portugol
Para x de 0 at 4 Faa
Escreva(O , x+1 ,o. nmero do vetor :
,Num[x]);
Fim-para;

Em Pascal
for (x = 0; x < 5; x++)
{
cout<<\nO <<x+1<<o. nmero do vetor : << Num[x];
}

Veja abaixo uma simulao do que est na Memria e na Tela a cada iterao do cdigo.
Memria
x
x
x
x
x

=0
=1
=2
=3
=4

Num
0

12

98

34

76

45

Tela
O 1o. nmero do vetor : 12
O 2o. nmero do vetor : 98
O 3o. nmero do vetor : 34
O 4o. nmero do vetor : 76
O 5o. nmero do vetor : 45

4) Exemplos de algoritmos com Variveis Compostas Unidimensionais Vetores


1. Construa um programa que leia 5 nmeros inteiros e armazene em um vetor. Depois da leitura de todos os
nmeros, exiba-os um a um na tela.
//Em Portugol

//Em C++

Algoritmo VetorNumeros;
Inteiro: Num[5], x;

#include <iostream>
using namespace std;

Incio
//Preenchendo o vetor NUM
Para x De 0 At 4 Faa
Escreva(Digite o , x+1, o. nmero: );
Leia(Num[x]);
Fim-para;

void main()
{
int num[5], x;
//Preenchendo o vetor NUM
for (x = 0; x < 5; x++)
{
cout<<"\nDigite o "<<x+1<<"o. numero: ";
cin>>num[x];
}
//Exibindo o vetor NUM
cout<<"\nExibindo o vetor...";
for (x = 0; x < 5; x++)
{
cout<<"\nO "<<x+1<<"o. numero e: "<<num[x];
}
system("pause");
}

//Exibindo o vetor NUM


Para x De 0 At 4 Faa
Escreva(O , x+1,o. nmero : , Num[x]);
Fim-para;
Fim-algoritmo.

2. Elabore um algoritmo que leia 20 nmeros reais. Calcule a mdia entre eles e exiba os nmeros que forem
maiores que a mdia.
//Em Portugol

//Em C++

Algoritmo MaioresMedia;
Real: Num[20], Media, Soma = 0;
Inteiro: x;

#include <iostream>
#include <iomanip>
using namespace std;

Incio
Soma 0;
//Preenchendo o vetor NUM
Para x De 0 At 19 Faa
Escreva(Digite o ,x+1,o. nmero: );
Leia(Num[x]);
Soma Soma + Num[x];
Fim-para;

void main()
{
float num[20], media, soma = 0;
//Preenchendo o vetor NUM
for (int x = 0; x < 20; x++)
{
cout<<"\nDigite o "<<x+1<<"o. numero: ";
cin>>num[x];
soma = soma + num[x];
}
media = soma/20;
cout<<fixed<<setprecision(2); //casas decimais
cout<<"\nA media do vetor e: "<<media;

Media Soma/20;
Escreva(Exibindo nmeros maiores que a mdia:);
Para x De 0 At 19 Faa
Se (Num[x] > Media) Ento
Escreva(Num[x]);
Fim-se;
Fim-para;
Fim-algoritmo.

cout<<"\nExibindo numeros maiores que a media:\n";


for (int x = 0; x < 20; x++)
{
if (num[x] > media)
cout<<num[x]<<"\t";
}
system("pause");
}

3. Elabore um algoritmo que leia a idade de 10 pessoas. Calcule a quantidade de pessoas que tem idade maior
que a idade mdia dessa turma. Exiba a mdia, o vetor e a quantidade encontrada.
//Em Portugol

//Em C++

Algoritmo VetIdade;
Inteiro: Idades[10], contp, soma_idade;
Real: media_idade;

#include <iostream>
#include <iomanip>
using namespace std;

Incio
contp 0;
soma_idade 0;

void main()
{
int idades[10], contp = 0, soma_idade = 0;
float media_idade;

//Preenchendo o vetor IDADES


Para x De 0 At 9 Faa
Escreva(Digite a idade da , x+1,a pessoa:);
Leia(Idades[x]);
soma_idade soma_idade + Idades[x];
Fim-para;

//Preenchendo o vetor IDADES


for (int x = 0; x < 10; x++)
{
cout<<"\nDigite a idade da "<<x+1<< "a. pessoa: ";
cin>>idades[x];
soma_idade = soma_idade + idades[x];
}

media_idade soma_idade/10;
Escreva(A mdia das idades : , media_idade:0:2);

media_idade = soma_idade/10;
cout<<fixed<<setprecision(2); //casas decimais
cout<<"\nA media das idades e: "<<media_idade;

//Contando as pessoas com idade


//superior a idade media do grupo
Para x De 0 At 9 Faa
Se (Idades[x] > media_idade) Ento
contp contp + 1;
Fim-se;
Fim-para;

//Contando as pessoas com idade


//superior a idade media do grupo
for (int x = 0; x < 10; x++)
{
if (idades[x] > media_idade)
contp++;
}

//Exibindo o vetor IDADES


Para x De 0 At 9 Faa
Escreva(Idades[x]);
Fim-para;

//Exibindo o vetor IDADES


cout<<"\nExibindo as idades cadastradas:\n";
for (int x = 0; x < 10; x++)
cout<<idades[x]<<" ";

Escreva (A qtde de pessoas com idade superior ,


a media : , contp);
Fim-algoritmo.

cout<<"\nA qtde de pessoas com idade "<<


"superior a media e: "<<contp;
system("pause");

5) Exerccios
1) Elabore um algoritmo que preencha um vetor de tamanho 5 com valores inteiros. Em seguida, gere um
segundo vetor na ordem inversa do primeiro vetor. Exiba na tela os dois vetores.
2) Construa um algoritmo que leia 10 nmeros reais e armazene em um vetor. Depois do preenchimento total,
percorra esse vetor uma vez procurando pelo maior e menor elemento. Exiba o maior e menor elemento.
3) Utilizando vetor, construa um algoritmo que leia o nome e o peso de 10 pessoas. Calcule e escreva:
a) A mdia dos pesos das 10 pessoas;
b) Quantas pessoas possuem peso acima da mdia e o nome dessas pessoas.

4) Construa um algoritmo que leia 10 nmeros


inteiros e armazene em um vetor A. Leia
outros 10 nmeros inteiros e armazene em
um vetor B. Gere um vetor C onde cada
elemento seja a soma dos outros dois
elementos. Exiba o vetor C. Veja o exemplo
ao lado.

A
11

20

33

47

60

...

...

13

23

35

52

66

...

B
C

5) Elabore um algoritmo que leia a altura e o nome de 15 pessoas. Calcule e escreva:


a) A mdia de altura do grupo;
b) A quantidade de pessoas que possuem altura menor ou igual mdia do grupo;
c) A maior altura do grupo e quem a possui.
6) Criar um programa que defina um vetor para conter 10 nomes de candidatos e imprima somente os nomes
dos que esto nas posies impares do vetor.
7) Construa um programa que efetue a tabuada de 1 a 10 de um determinado nmero informado pelo usurio
e armazene o resultado dessa tabuada em um vetor. Exiba o vetor.
8) Considere uma escola tcnica com 25 cursos. Construa um programa que leia o nome do curso e o valor da
mensalidade. O programa tambm dever calcular e exibir:
Qual o curso mais barato da escola.
Qual a diferena do valor mensalidade do curso mais barato em relao mensalidade mdia da
escola.

9) Elabore um programa que preencha dois vetores com 10 elementos inteiros. Preencha um terceiro vetor
resultante da intercalao dos dois primeiros vetores. Exiba todos os vetores.

10) Elabore um programa que preencha um vetor com 5 nmeros inteiros e depois ordene-o de maneira
crescente. Exiba o vetor antes e depois da ordenao.

Anda mungkin juga menyukai