Você está na página 1de 22

UniRitter

Algoritmos e Programação
Vetores em C
Prof. Me. Ricardo Becker

1
Vetores

• Um vetor é uma coleção de variáveis do mesmo tipo que é


referenciada por um nome comum;
• Um elemento específico em um vetor é acessado por meio de um
índice;
• Armazenamento de dados (estrutura de dados).

2
Vetor: Esquema

3
Vetores: Sintaxe em C

tipo_da_variável nome_da_variável [tamanho]

4
Vetores: Sintaxe em C

tipo_da_variável nome_da_variável [tamanho]

• tipo_da_variável: declara o tipo de base do vetor, que é o tipo de


cada elemento do vetor (char, int, float, double).

5
Vetores: Sintaxe em C

tipo_da_variável nome_da_variável [tamanho]c

• nome_da_variável: basta declarar!!

6
Vetores: Sintaxe em C

tipo_da_variável nome_da_variável [tamanho]

• tamanho: define quantos elementos o vetor irá guardar.

7
Vetores em C

• Exemplo: Declarar um vetor de 5 elementos, chamado vetor, e do


tipo int:

int vetor[5];

• Quando o C vê uma declaração como esta ele reserva um espaço na


memória suficientemente grande para armazenar o número de
células especificadas em tamanho.

• Neste caso irá reservar 4x5 = 20 bytes.

8
Vetores em C

• Em C, a numeração de todo vetor começa sempre em 0 (zero), e,


portanto, se o número de elementos é N, o índice ou posição do
último elemento será N-1.

9
Vetores em C

• No exemplo anterior (int vetor[5]), os dados serão indexados de 0 a


4.

• Para acessá-los vamos escrever:

vetor[0], vetor[1], ..., vetor[4]

10
Inicialização

• Da mesma maneira que podemos inicializar uma variável junto com


sua declaração, podemos usar as chaves “{ }” para inicializar um
vetor.

• Exemplos:

int vetor[5] = {17, 42, 9, 33, 12};

11
Inicialização: Abreviação

• Em C podemos omitir o número de elementos quando os valores são


inicializados; o tamanho do vetor será o número de valores
inicializados.

• Por exemplo, as duas notações abaixo são equivalentes:

int vetor[5] = {1, 2, 3, 4, 5};

int vetor[ ] = {1, 2, 3, 4, 5};

12
Exercício: qual será a saída do programa?
#include <stdio.h>

int main(){
int n1[3], i;
int n2[3] = {12, 27, 10};
int n3[] = {1, 0, 0};

for (i = 0; i < 3; i++)


n1[i] = i*n2[i];
for (i = 0; i < 3; i++)
printf("%d %d %d %d \n",i,n1[i],n2[i],n3[i]);
system(“PAUSE”);
return 0;
}
13
Vetores em C

• Para fazer referência a um valor a um elemento de um vetor, usamos


a notação vetor[índice], que serve tanto para obter quanto para
definir o valor de um elemento específico, dada sua posição.

• Exemplo:

vetor[0] = 88;

int a = vetor[2];

14
Exemplo: programa que carrega um vetor
inteiro com números de 0 a 19
#include <stdio.h>

main(){
int i, x[20];
for (i = 0; i < 20; i++){
x[i] = i;
printf("x[%d] = %d\n",i,x[i]);
}
system(“PAUSE”);
}

15
Exemplo: agora imprimindo os números na
tela em ordem reversa
#include <stdio.h>

main(){
int i, x[20];
for (i = 0; i < 20; i++)
x[i] = i;
for (i = 19; i >= 0; i--)
printf("x[%d] = %d\n",i,x[i]);
system(“PAUSE”);
}

16
Observações

• A linguagem C não tem verificação de limites em matrizes, ou seja, o


C não verifica se o índice que você usou está dentro dos limites
válidos.

vetor[0] = 3; // OK!

int x = vetor[2]; // OK!

int y = vetor[5]; // ERRO!

vetor[-1] = 10; // ERRO!

17
Observações

• Como programador, é seu trabalho prover verificação dos limites.


Este é um cuidado que você deve tomar. Se o programador não tiver
atenção com os limites de validade para os índices ele corre o risco
de ter variáveis sobrescritas ou de ver o computador travar.

18
Exemplo: qual será a saída do programa?

#include <stdio.h>

main(){
int i, x[10];
for (i = 0; i < 30; i++){
x[i] = 2*i;
printf("x[%d] = %d\n",i,x[i]);
}
O código acima Compila
system(“PAUSE”); sem erros, mas esta
incorreto!!!
}

19
Exercício

• Construir um programa que lê 6 valores, e conta quantos destes


valores são negativos. Armazene estes valores num vetor. Ao final,
imprima a média aritmética destes valores.

20
#include <stdio.h>

main(){
int i, cont=0;
float numero[6], soma=0.0;
for (i = 0; i < 6; i++){
printf ("Digite um numero inteiro: ");
scanf ("%f", &numero[i]);
if (numero[i] < 0.0) {
soma += numero[i];
cont++;
}
}
if (cont == 0)
printf ("\nNao digitou numeros negativos\n");
else
printf ("A media eh %f\n", soma/cont);
system(“PAUSE”);
21
}
Vetores de Tamanho Dinâmico

• Para criar vetores de tamanho dinâmico, vamos usar ponteiros, que


serão abordados mais adiante.

22

Você também pode gostar