Você está na página 1de 36

Curso de C

Vetores

24/03/2011 09:17 Copyright @ Arnaldo V. Moura, Daniel F. Ferber 1


Curso C - IC/UNICAMP

Vetores

Roteiro:
Declarao de vetores
Uso correto de vetores
Vetores com tamanho varivel
Matrizes
Vetores de caracteres (texto)

2
>
Curso C - IC/UNICAMP

Introduo

Tipos de Dados:
Da
Da linguagem
linguagem C:
C:
Nmeros
Nmeros inteiros:
inteiros: int,
int, long
long int,
int, unsigned
unsigned
int, ...
int, ...
Nmeros
Nmeros fracionrios:
fracionrios: float, double, ...
float, double, ...
Caracteres:
Caracteres: char
char
Do
Do programador:
programador:
Vetores,
Vetores, estruturas,
estruturas, enumeraes,
enumeraes, etc
etc
Sinnimos
Sinnimos

3
>
Vetores

Declarao e Uso

24/03/2011 09:17 4
Curso C - IC/UNICAMP

Vetores

Conceitos: int v[10]


v0 (int)
Seqncia
Seqncia dede valores
valores v1 (int)
Todos
Todos do
do mesmo
mesmo tipo tipo v2 (int)

Nome v3 (int)
Nome nico
nico para
para aa varivel
varivel
v4 (int)
Acesso
Acesso por
por ndice
ndice v5 (int)
Tamanho
Tamanho fixo
fixo v6 (int)
Numerao
Numerao de de 00 at
at tamanho-1
tamanho-1 v7 (int)
Alocados
Alocados sequencialmente
sequencialmente na na memria
memria v8 (int)
v9 (int)

5
>
Curso C - IC/UNICAMP

Declarao

Declarao de vetor: int v[10]


v0 (int)

tipo variavel [tamanho] v1 (int)


v2 (int)

Qualquer tipo Nome da Nmero de v3 (int)


da linguagem C varivel elementos v4 (int)
v5 (int)

Exemplo: v6 (int)

int vetor[10]; v7 (int)


v8 (int)
double medidas[100];
v9 (int)

6
>
Curso C - IC/UNICAMP

Acesso

Elementos com ndice: int v[10]


v0 (int)
Elementos do vetor: v1 (int)
vetor[0], vetor[1], vetor[2], ...
v2 (int)
Atribuio:
v3 (int)
vetor[indice] = valor;
v4 (int)
Exemplo: v5 (int)
int vetor[10]; v6 (int)
vetor[5] = 3; v7 (int)
vetor[0] = vetor[1] + vetor[2];
v8 (int)
v9 (int)

7
>
Curso C - IC/UNICAMP

Acesso

Exemplo:

int vetor[100];
...
for (indice = 0;
indice < 100;
indice++) {

printf(%d, , vetor[indice]);

8
>
Curso C - IC/UNICAMP

Acesso

Operador de ndice:
ndice
(int)

varivel [ ]
(ref. memria) (ref. memria)

vetor[i+j] = k * 2;
i j k 2

endereo inicial + endereo final *

vetor [] =

9
>
Curso C - IC/UNICAMP

Acesso
Imprimir uma listra de trs para frente:
int main(int argc, char *argv[]) {
int valores[10];
int indice;
printf("Escreva 10 nmeros inteiros: ");
for (indice = 0; indice < 10; indice++) {
scanf("%d", &valores[indice] );
}
printf("Valores em ordem reversa:\n");
for (indice = 9; indice >= 0; indice--) {
printf("%d ", valores[indice]);
}
return 0;
}
Vetores\Reverso01\Reverso01.vcproj
10
>
Curso C - IC/UNICAMP

Contedo inicial

Declarao com contedo inicial:


tipo vetor [n] = {elem0, elem1, ..., elemn-1}

Tamanho do Lista de n
vetor valores

Exemplo:
int impares[5] = {1, 3, 5, 7, 9};

11
>
Curso C - IC/UNICAMP

Contedo inicial

Declarao com contedo inicial :


tipo vetor [ ] = {elem0, elem1, ..., elemn-1}

Tamanho do Lista de n
vetor omitido valores

Exemplo:
int impares[] = {1, 3, 5, 7, 9};

12
>
Vetores

Regras para uso correto

24/03/2011 09:17 13
Curso C - IC/UNICAMP

Vetores

Cuidado com os ndices:


Errado:
int vetor[10];
...
vetor[-2] = 3;
Efeitos
vetor[20] = 6; imprevisveis!

Correto:

vetor[4] = 3;
vetor[7] = 6;

14
>
Curso C - IC/UNICAMP

Vetores

Atribuir todos os valores:


Errado: int vetor[10];
...
vetor = 0;

Correto:
int indice;
for (indice = 0; indice < 10; indice++) {
vetor[indice] = 0;
}
15
>
Curso C - IC/UNICAMP

Vetores

Copiar todos os valores:


Errado: int vetorA[10], vetorB[10];
...
vetorA = vetorB;

Correto:
int indice;
for (indice = 0; indice < 10; indice++) {
vetorA[indice] = vetorB[indice];
}
16
>
Vetores

Vetor de tamanho varivel

24/03/2011 09:17 17
Curso C - IC/UNICAMP

Vetor de tamanho varivel

Soluo Simples:
Limite superior
int valores[100]; para tamanho
int numero_elementos;

Tamanho utilizado

int i;
for (i = 0; i < numero_elementos; i++) {
printf("%d", valores[i]);
}

18
>
Curso C - IC/UNICAMP

Vetor de tamanho varivel


Imprimir uma lista de nmeros de trs para frente:

int main(int argc, char *argv[]) {


int valores[100];
int numero_valores;
int i;

printf("Quantos valores? (no mximo 100) ");


scanf("%d", &numero_valores);
if ( (numero_valores < 1)||(numero_valores > 100)) {
printf(Quantidade invalida!\n");
return 1;
}
...

19
>
Curso C - IC/UNICAMP

Vetores
Imprimir uma lista de nmeros de trs para frente:
...
printf("Escreva os nmeros: );
for (i = 0; i < numero_valores; i++) {
scanf("%d", &valores[i] );
}
printf("Valores em ordem reversa:\n");
for (i = numero_valores-1; i >= 0; i--) {
printf("%d ", valores[i]);
}
printf(\n);
return 0;
}
Vetores\Reverso02\Reverso02.vcproj

20
>
Vetores

Declarao de Matrizes

24/03/2011 09:17 21
Curso C - IC/UNICAMP

Matrizes

Conceitos:
Tabelade
Tabela devalores
valores
Acesso
Acessopor doisndices:
pordois ndices:linha
linhaeecoluna
coluna
Numerao:
Numerao: 00at linhas1;
atlinhas 1;00at colunas11
atcolunas

int a[4][10];
Outras
Outras propriedades:
propriedades: a00 a01 a02 a03 a04 a05 a06 a07 a08 a09
Valores
Valoresdo
domesmo
mesmotipo
tipo
Acesso a10 a11 a12 a13 a14 a15 a16 a17 a18 a19
Acessoaos
aosvalores
valoresatravs
atravsde
deum
umnico
nico
nome
nomededevarivel
varivel a20 a21 a22 a23 a24 a25 a26 a27 a28 a29
Dimenses
Dimensesfixas
fixas
a30 a31 a32 a33 a34 a35 a36 a37 a38 a39
22
>
Curso C - IC/UNICAMP

Matrizes

Declarao:
tipo variavel [linhas] [colunas]

Qualquer Nome da Nmero de Nmero de


tipo C varivel linhas colunas
int a[4][10];
Exemplo: a00 a01 a02 a03 a04 a05 a06 a07 a08 a09
int matriz[4][10]; a10 a11 a12 a13 a14 a15 a16 a17 a18 a19

a20 a21 a22 a23 a24 a25 a26 a27 a28 a29

a30 a31 a32 a33 a34 a35 a36 a37 a38 a39

23
>
Curso C - IC/UNICAMP

Matrizes

Acesso:
Elementos do vetor:
vetor[0][0], vetor[0][1], vetor[0][2], ...
vetor[linhas-1][colunas-1]

Atribuio:
vetor[linha][coluna] = valor;

Exemplo:
int vetor[6][10];
vetor[5][1] = 3;
vetor[0][2] = vetor[1][0] + vetor[2][3];
24
>
Curso C - IC/UNICAMP

Matrizes

Acesso:
Exemplo:
int lin, col;
int matriz[4][10];
...
for (lin = 0; lin < 4; lin++) {
for (col = 0; col < 10; col++) {
printf(%d , matriz[lin][col];
}
printf(\n);
}

25
>
Curso C - IC/UNICAMP

Vetores multidimensionais

Vetor com n dimenses:

tipo variavel [dim1] [dim2] ... [dimN] ;

Qualquer Nome da Dimenso 1 Dimenso 2 Dimenso N


tipo C varivel

26
>
Vetores

Vetor de caracteres
(Texto)

24/03/2011 09:17 27
Curso C - IC/UNICAMP

Texto

Conceitos:
Caracteres
Caracteres individuais:
individuais:
'a',
'a', 'A',
'A', 'f',
'f', '4',
'4', '.'
'.' aspas simples!
Representam
Representam apenas
apenas um
um smbolo,
smbolo, letra
letra ou
ou
dgito
dgito
Texto:
Texto: aspas duplas!
Seqncia
Seqncia de
de caracteres
caracteres
"Algoritmos
"Algoritmos ee Programao"
Programao"

28
>
Curso C - IC/UNICAMP

Texto

Armazenamento:
Vetor
Vetor de
decaracteres
caracteres
Cada
Cadacaractere
caracteredo
dotexto
texto um umelemento
elementodo
do vetor
vetor
ltimo
ltimocaractere:
caractere:nulo
nulo (\0)
(\0)
Tamanho
Tamanhomnimo
mnimododovetor:
vetor:comprimento
comprimentodo
dotexto
texto++11

char[20] U m t e x t o e m C \0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

29
>
Curso C - IC/UNICAMP

Texto

Declarao:
char variavel [tamanho];

Tamanho mximo do
texto menos um

Exemplo:

char texto[50];

30
>
Curso C - IC/UNICAMP

Texto

Declarao:
char variavel [tamanho] = "texto";

Exemplo: char texto[50] = "Joo da Silva";

char variavel [] = "texto";

Exemplo: char texto[] = Joo da Silva;

31
>
Curso C - IC/UNICAMP

Texto

Ler e imprimir:
Impresso: char texto[] = Um texto em C;
printf(A varivel: %s, texto);

Leitura: char texto[20];


printf(Escreva uma palavra: );
scanf(%s, texto);

OBS: Leitura por palavra


No usa &
Cuidado com tamanho da varivel
32
>
Curso C - IC/UNICAMP

Texto

Atribuir uma varivel tipo texto:


Errado: char texto[100];
...
texto = Joo da Silva;

Correto:

#include <string.h>
...
strcpy(texto, Joo da Silva);

33
>
Curso C - IC/UNICAMP

Texto

Acessar caracteres:
char texto[20] = Um texto em C;
texto[12] = B;
printf(%s, texto);

char[20] U m t e x t o e m C \0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Um texto em B
34
>
Vetores
Estatistica [calcula mdia e desvio padro]
Palind [testa palindromos]
Primos [pegar primos, mtodo da peneira]
Strings1 [teste com cadeias e funes sobre cadeias]
Concat [concatena cadeias]
Anagrama [testa anagramas]
SomaMat [soma de matrizes]
QuadradMag [testa quadrado mgico]

24/03/2011 09:17 35
Vetores

Fim do Captulo

24/03/2011 09:17 36

Você também pode gostar