Você está na página 1de 26

Introduo

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

Um vetor 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. Um vetor tambm pode ser entendido logicamente como uma lista de elementos
de um mesmo tipo. Cada elemento desta sequncia pode ser acessado individualmente atravs
de um ndice dado por um nmero inteiro. Os elementos so indexados de 0 at n-1, onde n
a quantidade de elementos do vetor. O valor de n tambm chamado de dimenso ou
tamanho do vetor. O vetor tem tamanho fixo durante a execuo do programa, definido na
declarao. Durante a execuo no possvel aumentar ou diminuir o tamanho do vetor.
Note que a numerao comea em zero, e no em um. Essa uma fonte comum de erros. A
Figura 1 ilustra um vetor com 10 elementos, denominados v 0, v 1, v 9, todos eles de tipo
int .

importante saber que os elementos do vetor so armazenados sequencialmente na


memria do computador. Assim, na figura, se cada valor de tipo int ocupar 4 bytes de
memria, teremos 40 bytes consecutivos reservados na memria do computador para
armazenar todos os valores do vetor. No entanto, por ora, no faremos uso explcito dessa
informao, uma vez que o compilador se encarregar de enderear cada elemento do vetor
automaticamente, conforme as necessidades do programador como vero.

Declarao de vetores

A declarao de vetores obedece mesma sintaxe da declarao de variveis. A


diferena est no valor entre colchetes, que determina quantos elementos ele armazenar, ou
seja, em outras palavras, determina o seu tamanho ou dimenso.
int[10]v0v1v2v3v4v5v6v7v8v9

int[10]v0v1v2v3v4v5v6v7v8v9

1- Exemplo de vetor com 10 elementos

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.

Contedo inicial de vetores

Na declarao, pode-se definir o valor inicial de cada elemento de um vetor. A sintaxe


semelhante declarao de uma varivel comum com valor inicial, mas os elementos so
listados entre as chaves { e } e separados por vrgula.
tipo varivel[n]={elem0,elem1,elem2,elem3,...elem n-1};
Como o nmero de elementos do vetor pode ser inferido a partir da lista entre chaves,
podemos omitir o tamanho do vetor:
tipo varivel[]={elem0,elem1,elem2,elem3,...elem n-1};

Programa exemplo de uma pesquisa sequencial

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.

Programa exemplo ordenando os elementos de um vetor pelo mtodo da bolha


Este mtodo, apesar de simples, consome mais tempo do processador, ento s deve
ser usado para matrizes com poucos elementos (em torno de 30). Neste mtodo os elementos
da matriz vo sendo percorridos e os pares adjacentes so comparados e ordenados. Isto
feito at que toda a matriz esteja ordenada.
Para explicar melhor vamos a um exemplo prtico. Imagine a seguinte matriz:
nota[0] = 67
nota[1] = 55
nota[2] = 86
nota[3] = 79

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

2) Armazenar em Vetores, Nomes e Notas PR1 e PR2 de 6 alunos. Calcular a mdia de


cada aluno e imprimir aprovado se a mdia for maior que 5 e reprovado se mdia for
menor ou igual a 5.
OBS.: 2 vetores para as notas tipo float. 1 vetor para os nomes. 1 vetor para a mdia. 1 vetor
para situao.
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

Jogo Utilizando Vetores Jogo da forca

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.

Matrizes de cadeias de caracteres


A declarao abaixo mostra uma matriz de cadeias de caracteres com 30 linhas de 80
caracteres.
char nome_turma[30][80];
O exemplo abaixo mostra um programa que l uma matriz de nomes imprime os seus
contedos.

16

Matrizes Bidimensionais
Imagine uma matriz bidimensional como uma tabela de linhas e colunas. Por exemplo,
a matriz
pesos[3][5];

pode ser imaginada como:

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

De tudo que foi exposto acima podemos entender que:


pesos[1][3] = 82
pesos[0][4] = 36
pesos[0][0] = 10
pesos[2][4] = 74
Para preencher nossa matriz com os valores mostrados na tabela acima podemos usar uma
declarao como:

Podemos manipular os elementos de nossa matriz bidimensional usando duas variveis


e um lao for da mesma maneira que fizemos com as matrizes comuns. Observe o cdigo
abaixo:

18

Outro exemplo Calcular a Matriz M x N.

19

Exerccios
1) Entrar com as notas de 20 alunos e calcular a mdia entre duas notas.

Gabarito

20

2) Criar um algoritmo que leia os elementos de uma matriz inteira de 3 x 3 e imprimir


outra matriz multiplicando cada elemento da primeira matriz por 2.
Gabarito

21

3) Criar um algoritmo que leia os elementos de uma matriz inteira de 4 x 4 e imprimir os


elementos da diagonal principal.

Gabarito

22

Jogo utilizando Matriz Batalha Naval

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

Livro: Treinamento em Linguagem C


Autor: Victorine Viviane Mizrahi
Editora: Person Patrice Hall

Livro: Fundamentos da Programao de Computadores: algoritmos, pascal e C/C++


Autores: Ana Fernanda Gomes Ascencio e Edilene Aparecida Veneruchi de Campos
Editora: Person Patrice Hall

Livro: Como programar em C


Autor: Paul J. Deitel e Harvey M. Deitel
Editora: Deitel - 6 edio

Livro: Linguagem C - 10 Edio 2007


Autor: Lus Damas
Editora: Ltc

26