Capítulo 8: Vetores
Por Eduardo Gomes - Github
O vetor (também chamado de array) é um tipo de estrutura de dados homogênea, isto é, capaz de armazenar um conjunto de dados do mesmo tipo, possui um tamanho fixo e uma só dimensão, permitindo armazenamento de diversos valores em apenas uma variável.
Em vez de criar diversas variáveis, como: valor1, valor2, …, valor99, podemos declarar somente um vetor com n espaços em memória conforme a seguir:
Desta forma poderemos acessar com o mesmo nome de variável, e somente passando a posição de cada elemento, que chamamos de índice, é o que define a posição da variável no vetor, da seguinte forma: vetor[0], vetor[1], ..., vetor[99].
Na linguagem C, assim como muitas outras linguagens, o vetor é indexado a partir da posição zero. Portanto, o primeiro elemento de um vetor possui a posição de índice 0, e o último elemento se encontrará no último índice do vetor, que é: o total de elementos no vetor - 1.
Declarando um vetor em C
Sintaxe:
tipo NomeVetor[tamanho];
Exemplo:
Declaração do vetor do tipo int com 5 números:
int vetor[5];
Inicialização
Podemos inicializar os valores de um vetor diretamente na sua declaração, como no exemplo a seguir:
int vetor[5] = {15, 20, 5, 10, 50};
A quantidade de elementos passados dentro das chaves { } não pode ultrapassar o número de elementos que definimos na declaração dentro dos colchetes [ ].
É possível inicializar também omitindo o número de elementos dentro dos colchetes, dessa forma o número de elementos será inicializado com a quantidade de elementos que passarmos nas chaves, desta forma:
int vetor[] = {15, 20, 5, 10, 50};
Criamos exatamente o mesmo vetor que no exemplo anterior.
É possível também atribuir um valor diretamente a uma posição específica do vetor. No exemplo abaixo atribuímos o número 50 na quinta posição do vetor.
vetor[4] = 50;
Abaixo podemos ver uma representação deste vetor na memória.
15 | 20 | 5 | 10 | 50 |
---|---|---|---|---|
índice 0 | índice 1 | índice 2 | índice 3 | índice 4 |
Acessando os elementos de um vetor
Para acessar uma posição específica do vetor devemos utilizar o nome do vetor e o índice que desejamos acessar.
Por exemplo: Desejamos imprimir na tela um valor do vetor.
printf("%d", vetor[0]);
No código acima, vetor[0], faz referência ao elemento armazenado no vetor, na posição (índice) zero.
Imprimindo todos os valores na tela
Para não precisarmos imprimir os elementos um a um, utilizamos, uma estrutura de repetição.
No exemplo abaixo utilizamos o for:
int i; //a variável i representará o índice do vetor
for(i = 0; i < 5; i++) //i vai variar de 0 até 4, ou seja, até o quinto índice do vetor
printf("%d ", vetor[i]);
Lendo os valores do usuário para o preenchimento do vetor
Conforme o exemplo anterior, podemos utilizar uma estrutura de repetição para ler dados do usuário para dentro do vetor.
for(i = 0; i < 5; i++)
scanf("%d", &vetor[i]);
Exercícios
1 - Crie um vetor do tipo float chamado notas de 3 posições que possuirá os seguintes valores: _9.0, 10.0 e 8.5
2 - Mostre os valores do vetor do exercício anterior na tela
3 - Utilize uma estrutura de repetição para ler do usuário as notas. ( %f permite receber dados do tipo float )
4 - Crie um vetor de inteiros chamado vet de 5 posições em que cada elemento possua o valor de seu índice. Por exemplo, no elemento do primeiro índice deverá conter o valor 0 e assim por diante. Utilize uma estrutura de repetição para atribuir os valores.
5 - Desafio: Crie um loop que compare cada valor do vetor para encontrar o maior. Utilize uma variável para armazenar o maior valor do vetor, e no final imprima o maior valor. Pode ser utilizado o vetor do exercício anterior.
Respostas
Questão 1:
float notas[3] = {9.0, 10.0, 8.5};
Questão 2:
int i;
for(i = 0; i < 3; i++)
printf("%.1f ", notas[i]); //%.1f exibe o valor do tipo float com uma casa decimal. Ex: 9.5
Questão 3:
for(i = 0; i < 3; i++)
scanf("%f", ¬as[i]);
Questão 4:
int vet[5];
for(i = 0; i < 5; i++)
vet[i] = i; //o valor do elemento será o mesmo valor do índice
Questão 5:
int maior = vet[0]; // assume que o primeiro é o maior
for(i=0; i<5; i++)
if (vet[i] > maior)
maior = vet[i];
printf("O maior elemento é %d\n",maior); // o \n foi utilizado apenas para pular linha
/*deverá ser imprimido o valor 4 caso o vetor seja igual ao do exercício 4*/
Referências
CASAVELLA, E. Vetores – arrays em linguagem C, 2017. Intellectuale. Disponível em: <http://linguagemc.com.br/vetores-ou-arrays-em-linguagem-c/>. Acesso em: 12 nov. 2017.
SOUZA, C. Linguagem C: vetores/matrizes, 2017. UNIVASF. Disponível em: <http://www.univasf.edu.br/~criston.souza/algoritmos/arquivos/aula08.2.pdf>. Acesso em: 13 nov. 2017.