Professional Documents
Culture Documents
A linguagem C uma das mais bem sucedidas linguagens de alto nvel j criadas e
considerada uma das linguagens de programao mais utilizadas de todos os tempos. Est
atividade aborta Vetores ou Arrays utilizado na linguagem C de programao.
A ideia de um array ou vetor bastante simples: criar um conjunto de variveis do
mesmo tipo, com a vantagem de estarem todas associadas ao mesmo nome e igualmente
acessveis por um ndice, em outras palavras uma sequncia de vrios valores do mesmo
tipo, armazenados sequencialmente na memria e fazendo uso de um mesmo nome de
varivel para acessar esses valores. Os arrays declarados at o momento possuem apenas uma
dimenso e, portanto, so tratados como uma lista de variveis. Porm, h casos em que uma
estrutura com mais de uma dimenso mais til. Por exemplo, quando os dados so
organizados em uma estrutura de linhas e colunas, como uma tabela. Para isso, usamos um
array com duas dimenses, ou seja, uma matriz. Logo depois veremos trs exemplos
utilizando vetores e mais trs exemplos com matrizes na linguagem C do bsico at o
avanado, ou seja, aquilo que usamos no dia a dia e o que usamos apenas em aplicaes muito
especfica. Portanto tambm resolvemos colocar um jogo utilizando vetor cujo seu nome
jogo da forca e outro utilizando matriz batalha naval para voc entender o quanto
importante a utilizao de vetores e matrizes na Linguagem C. Assim concluindo a Atividade
sobre Vetores e Matrizes.
CAPITULO 1
Estruturas de Dados
Vetores
Declarao de vetores
int[10]v0v1v2v3v4v5v6v7v8v9
tipo varivel[tamanho];
Por exemplo, para declarar um vetor com 10 nmeros inteiros:
int vetor[10]; O tamanho precisa ser necessariamente um nmero inteiro e constante.
Ele no pode ser resultado de uma expresso:
int tamanho=10; int vetor[tamanho*2]; (nessa linha estamos mostrando um
modo de declarao feito de um modo errado ).
J aprendemos que uma invocao de nome de varivel capaz de acessar um dado na
memria. O tipo do valor retornado igual ao tipo utilizado na declarao da varivel. O
nome da varivel tambm chamado de uma expresso de referncia de memria, ou
simplesmente de referncia de memria.
Com os vetores, temos uma nova expresso de referncia de memria: o operador de
ndice [ ]. Ele utiliza uma referncia de memria que normalmente uma varivel do tipo vetor
e um nmero inteiro, que e o ndice Ele retorna uma referncia para o elemento
correspondente ao ndice. O tipo do valor retornado o mesmo tipo da declarao do vetor.
Aqui mostraremos para atribuir o valor 3 na primeira posio do vetor, faremos da seguinte
forma.
Exemplo:
vetor[0]=3; Note que o ndice zero indica a primeira posio no vetor. A expresso
vetor[0] referencia a posio de memria correspondente ao elemento de ndice zero no
vetor. Para somar os primeiros trs elementos e armazenar o valor calculado no quarto
elemento:
vetor[3]=vetor[0]+vetor[1]+vetor[2]:
Em expresses, uma referncia indexada a um vetor pode ser usada da mesma forma e
nas mesmas posies em que usaramos variveis convencionais de mesmo tipo. Tudo se
passa como se tivssemos vrias variveis declaradas simultaneamente, todas de mesmo tipo,
e com nomes vetor[0] , vetor[1] , e assim por diante. muito comum utilizar a
estrutura de repetio for para percorrer todos os elementos de um vetor.
Por exemplo: para imprimir todos os elementos de um vetor de 100 elementos:
Lembre-se que para um vetor de tamanho 100, o primeiro elemento tem ndice 0 e o
ltimo elemento tem ndice 99. Por este motivo, o for repete para valores de ndice variando
de 0 at 99. A condio utilizada para terminar o for ndice < 100 . Isto sugere que o for est
realizando 100 repeties, que justamente o tamanho do vetor. A condio ndice <= 99
tambm funcionar corretamente, mas no deixa to claro que o vetor possui 100 elementos
ndice (int)
[ ]
Varivel
ndice (int)
[ ]
Varivel
Exemplo :Um programa que l dez nmeros e os imprime em ordem inversa. Para isso,
necessrio armazenar os 10 nmeros para poder imprimi-los de trs para frente. Seria possvel
utilizar 10 variveis distintas, mas a soluo com vetor bem mais elegante. Mais ainda, se
fossem 10.000 nmeros, e no 10, ficaria impraticvel usar variveis distintas.
Para procurar um valor especfico numa matriz voc pode usar a pesquisa sequencial.
A pesquisa sequencial inicia no primeiro elemento da matriz e vai at o ltimo procurando o
valor desejado. Observe abaixo o cdigo de uma pesquisa sequencial numa matriz:
Este tipo de pesquisa pode ser demorado quando a matriz possui muitos elementos.
Nestes casos use a pesquisa binria que ser vista mais a frente.
nota[4] = 68
Ordenando esta matriz em ordem crescente pelo mtodo da bolha, nosso programa
iniciaria compararando o elemento nota[0], que 67, com o elemento nota[1], que
55. Como nota[0] maior que nota[1] os elementos seriam trocados. e nossa matriz
ficaria assim:
nota[0] = 55
nota[1] = 67
nota[2] = 86
nota[3] = 79
nota[4] = 68
Agora nosso programa compararia nota[1] com nota[2] e como os valores esto
ordenados no haveria troca.
Continuando, compararia nota[2] com nota[3] e haveria troca ficando nossa
matriz assim:
nota[0] = 55
nota[1] = 67
nota[2] = 79
nota[3] = 86
nota[4] = 68
Agora compararia nota[3] com nota[4] e novamente haveria troca:
nota[0] = 55
nota[1] = 67
nota[2] = 79
nota[3] = 68
nota[4] = 86
Agora, nosso programa iniciaria novo ciclo de comparaes comparando
novamente nota[0] com nota[1], nota[1] com nota[2], etc .... at que todos os
elementos da matriz estivessem na ordem crescente.
Abaixo segue um exerccio que ordena uma matriz de cinco valores inteiros, em ordem
crescente, pelo mtodo da bolha:
Exerccios
1) Preencher um vetor com os nmeros pares do nmero 2 a 20.
Gabarito
10
3) Preencher um vetor com os numeros pares do nmero 2 a 20. Preencher um vetor com
os numeros de 10 a 19. Somar os vetores acima.
11
12
13
Fontes
http:www.ic.unicamp.br~wainercursos2s2011Cap07-Vetores-texto.pdf
acessado em 06 de Abril de 2014
Linguagem em C Lus Damas Decima edio
http://homepages.dcc.ufmg.br/~joaoreis/Site%20de%20tutoriais/c_int/matrizes.htm#intro.htm
acessado em 06 de Abril de 2014
14
CAPITULO 2
Estruturas de Dados
Matriz
Declarao de vetores multidimensionais ( Matriz )
Em C existe h possibilidade de declararmos vetores de mais de uma dimenso. A
forma geral da declarao a seguinte:
tipo nome [dim1][dim2][dim3]...[dimN] ;
onde dimI o tamanho da dimenso I. Deve-se tomar cuidado com armazenamento de
matrizes multidimensionais, por que a memria necessria para guardar estes dados igual a
sizeof(tipo) * dim1* dim2 * dim3 * ... * dimN Por exemplo a declarao
int matriz[10][20];
define uma matriz quadrada de 10 linhas por 20 colunas, enquanto o comando
c=2*matriz [3][8];
armazena o dobro do elemento que est na terceira linha e oitava coluna na varivel c.
Observar que o primeiro ndice indica a linha e o segundo a coluna.
O exemplo abaixo mostra um programa que l uma matriz de trs linhas e cinco
colunas e imprime os valores.
15
A matriz armazenada na memria linha a linha e a figura a seguir ilustra esta idia
com uma matriz de nmeros inteiros de trs por trs. Estamos assumindoque cada nmero
inteiro ocupa dois bytes, o endereo aponta um byte e a matriz est armazenada a partir do
endereo 1000.
16
Matrizes Bidimensionais
Imagine uma matriz bidimensional como uma tabela de linhas e colunas. Por exemplo,
a matriz
pesos[3][5];
Observe que o primeiro ndice ([3]) indica as linhas da matriz e o segundo ([5])
indica as colunas.
Como sabemos que [3] varia de zero a 2 e [5] varia de zero a 4, fica fcil
determinar os ndices de cada posio da matriz:
0,0
0,1
0,2
0,3
0,4
1,0
1,1
1,2
1,3
1,4
2,0
2,1
2,2
2,3
2,4
Visto a posio de cada ndice vamos preencher nossa matriz pesos com valores
17
10
30
45
70
36
86
44
63
82
80
70
61
52
63
74
18
19
Exerccios
1) Entrar com as notas de 20 alunos e calcular a mdia entre duas notas.
Gabarito
20
21
Gabarito
22
23
Fontes
http://oprofessorleandro.files.wordpress.com/2010/03/coletanea-de-exercicios-resolvidos-emliguagem-c.pdf - Acessado em 06 abril de 2014
http://www.ebah.com.br/content/ABAAAe_JIAH/batalha-naval-c.html - Acessado em em 06
abril de 2014
24
Consideraes Finais
25
Referncias Bibliogrficas
26