Você está na página 1de 23

Algoritmos II

VETORES

Vetores
 Imagine que fosse necessrio criar um programa para

armazenar 2000 salrios dos funcionrios de uma empresa.


 Caso s se quisesse somar os salrios poderia se criar um lao

de repetio, ler 2000 vezes a mesma varivel, e ir


acumulando os valores.
 Mas, e se fosse necessrio acessar esses salrios novamente

para outras funes? Os valores estariam perdidos. Ento,


neste caso, seria necessrio criar 2000 variveis.
 Criar 2000 variveis se torna invivel. Para resolver isso usam-

se arrays, que podem ser tanto vetores quanto matrizes.

Vetores
 Mas, o que um vetor?
 Uma sequncia de vrios valores de mesmo tipo, armazenados

sequencialmente na memria, e fazendo uso de um mesmo nome de


varivel para acessar esses valores.
 Vetores so variveis que servem para guardar vrios valores do

mesmo tipo, de forma uniforme, na memria.


 E como se declara um vetor? Basicamente, como uma varivel

normal.


Primeiro, coloca-se o tipo de dados que sero armazenados no vetor, ou seja, se o


vetor conter valores int, float, string,

Vetores


Logo aps, se d um nome para o vetor (assim como as variveis). Vale lembrar que
as regras para nomear uma varivel tambm so vlidas para um vetor.




E finalmente, a quantidade de elementos que sero armazenados pelo vetor, entre [].

Exemplos:


int vet[10];

float salarios[100], x, aumento[100];

char nome[30];

Tipo dos elementos


dentro do vetor

Nome da
varivel vetor

float salarios[1000];

Quantidade de
elementos que sero
armazenados no vetor.

Vetores
 A varivel vet possui 4 espaos de memria onde podem

ser guardados 4 nmeros inteiros.


 Para acessar o valor interno de uma varivel s chamar

pelo nome da mesma. Por exemplo: cout<<idade;.


 Mas o vetor possui mais que uma posio. Como acessar

um determinado elemento?
Espao de
Memria

Espao de
Memria

Espao de
Memria

Espao de
Memria

 Aps declarado, como se manipular um vetor?

Vetores
 A varivel vet possui 4 espaos de memria onde podem

ser guardados 4 nmeros inteiros.


 Para acessar o valor interno de uma varivel s chamar

pelo nome da mesma. Por exemplo: cout<<idade;.


 Mas o vetor possui mais que uma posio. Como acessar

um determinado elemento?
 O vetor trabalha com ndices, ou posies, que no C/C++

iniciam de 0 (sempre).
vet
0

Vetores
 Para inserir o valor 76 na posio 2 seria necessrio o seguinte

cdigo:


vet[2] = 76;

 Ou seja, para atribuir um valor a uma posio do vetor como uma

varivel, com o acrscimo do ndice.


 como um carteiro. Para entregar a carta ele precisa saber o nome

da rua e o nmero da residncia.


 O nome da rua no deixa de ser o nome do vetor, e o nmero da

residncia o ndice do vetor.

Vetores
 Lembre-se: o limite do vetor sempre seu tamanho menos 1.

Usando o exemplo: vetor de tamanho 4, posio mxima 3


(pois 4-1=3). Ento, ao atribuir um valor a posio 4 ocorrer
um erro. Resumidamente, jamais se poderia fazer vet[4]=200.
 Exemplos:

Vetores

Supondo a declarao de um vetor de 6 nmeros inteiros chamado vetor


 Int vet[6];

Vetor [0]

Vetor [1]

Vetor [2]

Vetor [3]

Vetor [4]

Vetor [5]

Supondo a colocao do valor 123 na primeira posio:




Vet[0] = 123
123
Vetor [0]

Vetor [1]

Vetor [2]

Vetor [3]

Vetor [4]

Vetor [5]

Vetores

Preenchendo a ltima posio do vetor com o dobro do valor do primeiro


elemento


vet[5] = vetor[0]*2;
123
Vetor [0]

246
Vetor [1]

Vetor [2]

Vetor [3]

Vetor [4]

Vetor [5]

Preenchendo o terceiro elemento do vetor com a soma do primeiro com o


ltimo elemento:


Vet[2] = vet[0] + vet [5];


123
Vetor [0]

369
Vetor [1]

Vetor [2]

246
Vetor [3]

Vetor [4]

Vetor [5]

Carga inicial automtica de vetores


 possvel iniciar todos os elementos do vetor

automaticamente atravs da seguinte sintaxe:




Tipo var[n] = {valor1, valor2, ..., valor n};


Exemplo:
 char vogal[5] = {a, e , i, o, u};
 Evitando a escrita do cdigo:
 Char vogal[5];


Vogal[0] = a;
Vogal[1] = e;
Vogal[2] = i;
Vogal[3] = o;
Vogal[4] = u;

Exemplos de declarao
 Vetor com 10 elementos no iniciados
 Int v[10];
 Vetor com 3 elementos automaticamente iniciados

com os valores 5, 10 e 15


Int v[3] = {5, 10, 15};

 Vetor com 3 elementos iniciados com os valores 5, 10

e 15


Int v[] = {5, 10, 15};

Vetores
 Faa um programa que preencha um vetor de

10 posies e exiba o mesmo na tela.

Vetores
 Ao ler uma varivel, acessamos somente uma posio. No caso do

vetor mais que uma posio acessada pela mesma varivel. Imagine
um vetor de 1000 posies, sendo lido posio a posio:


scanf("%d%d%d%d%d",&vet[0],&vet[1],&vet[2],&vet[3],&vet[4]); at a
milsima posio.

 Dessa forma, fica melhor se utilizar um lao de repetio para acessar

as posies.
 Seguem outros exemplos.

Vetores
 Faa um programa que preencha um vetor de 20 posies e

exiba todos os valores pares e suas respectivas posies.

Vetores
 Existe, normalmente, confuso ao que se refere a acessar o

elemento dentro do vetor e o ndice.


 Toda vez que necessrio acessar o elemento dentro do vetor

necessrio a composio nome do vetor e posio a ser


acessada (seja a posio fixa ou representada por um ndice).
 No exemplo anterior era necessrio verificar os valores, ou

seja, o que foi inserido pelo usurio no vetor. Ento, para


acessar utilizado numeros[i] (nome do vetor e posio
representada por ndice). Mas ao se mostrar somente a
posio, a varivel i (neste caso) que exibida, pois ela
representa a posio.

Vetores
 Elabore um algoritmo que preencha um vetor de 15

posies e o imprima de forma invertida.

Vetores
 O vetor foi preenchido de forma normal.
 A grande diferena que o vetor precisa ser impresso de forma

invertida, ou seja, iniciar da ltima posio. Foi criado um lao que


iniciou do tamanho 1, ou seja, se o vetor possui 15 posies precisa
iniciar da posio 14 e ir decrementando at a posio 0.
 Este um erro efetuado constantemente. Quando se precisa acessar

a ltima posio se utilizar o tamanho do vetor. Lembre-se: a


quantidade total de elementos usado na declarao do vetor. Para
acessar a ltima posio do vetor, como o ndice inicia de 0, sempre
tamanho 1, ou seja, se tiver 100 posies declaradas a ltima
posio 99.

Passagem de vetores para funes

Suponha a seguintes declaraes:

Int V[10]
Int X[20]

Suponha que a inteno seja iniciar os vetores V e X


com zero em todas as posies utilizando uma
funo para realizao da carga inicial
Como os vetores tem dimenses diferentes,
teramos que definir duas funes distintas. Uma
para o vetor com 10 inteiros e outra com o de 20
inteiros

Passagem de vetores para funes


 O cdigo ficaria da seguinte forma para cada uma

das funes:

Passagem de vetores para funes


 Prontas as funes devemos realizar o seguinte

procedimento para invocao dessas funes na


main:

Lembrando que para enviar um vetor com 10 inteiros a funo inic1 esta dever ter um
parmetro do mesmo tipo de varivel.

Passagem de vetores para funes

As duas funes de carga inicial podem ser


substitudas por uma nica que inicie qualquer
vetor de inteiros com valor 0.
Isso possvel porque em C no interessa qual a
dimenso do vetor que passado a uma funo,
mas sim qual o tipo dos seus elementos, e, nesse
caso ambos os vetores so constitudos por inteiros.

Passagem de vetores para funes


 No entanto necessrio indicar a essa funo o nmero de

elementos que o vetor contm:

Agora a funo void inic(int s[], int n) recebe um vetor de inteiros (sem indicar qual a sua
dimenso) e um inteiro que indica o numero de elementos a iniciar

Você também pode gostar