CURSO DE C

Vetores

Vetores nada mais são que matrizes unidimensionais. Vetores são uma estrutura de dados muito utilizada. É importante notar que vetores, matrizes bidimensionais e matrizes de qualquer dimensão são caracterizadas por terem todos os elementos pertencentes ao mesmo tipo de dado. Para se declarar um vetor podemos utilizar a seguinte forma geral:

 tipo_da_variável nome_da_variável [tamanho];

 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. Por exemplo, se declararmos:

 

                float exemplo [20];

o C irá reservar 4x20=80 bytes. Estes bytes são reservados de maneira contígua. Na linguagem C a numeração começa sempre em zero. Isto significa que, no exemplo acima, os dados serão indexados de 0 a 19. Para acessá-los vamos escrever:

 

                exemplo[0]
                exemplo[1]
                .
                .
                .
                exemplo[19]

Mas ninguém o impede de escrever:

 

                exemplo[30]
                exemplo[103]

Por quê? Porque o C não verifica se o índice que você usou está dentro dos limites válidos. 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 sobreescritas ou de ver o computador travar. Bugs terríveis podem surgir. Vamos ver agora um exemplo de utilização de vetores:

 

#include <stdio.h>
int main ()
{
	int num[100];  /* Declara um vetor de inteiros de 100 posicoes */
	int count=0;  
	int totalnums;
	do
        {
        	printf ("\nEntre com um numero (-999 p/ terminar): ");
        	scanf ("%d",&num[count]);
        	count++;
        } while (num[count-1]!=-999);
	totalnums=count-1;
	printf ("\n\n\n\t Os números que você digitou foram:\n\n");
	for (count=0;count<totalnums;count++)
               	printf (" %d",num[count]);
        return(0);
}

No exemplo acima, o inteiro count é inicializado em 0. O programa pede pela entrada de números até que o usuário entre com o Flag -999. Os números são armazenados no vetor num. A cada número armazenado, o contador do vetor é incrementado para na próxima iteração escrever na próxima posição do vetor. Quando o usuário digita o flag, o programa abandona o primeiro loop e armazena o total de números gravados. Por fim, todos os números são impressos. É bom lembrar aqui que nenhuma restrição é feita quanto a quantidade de números digitados. Se o usuário digitar mais de 100 números, o programa tentará ler normalmente, mas o programa os escreverá em uma parte não alocada de memória, pois o espaço alocado foi para somente 100 inteiros. Isto pode resultar nos mais variados erros no instante da  execução do programa.


AUTO AVALIAÇÃO

Veja como você está.

Reescreva o exemplo acima, realizando a cada leitura um teste para ver se a dimensão do vetor não foi ultrapassada. Caso o usuário entre com 100 números, o programa deverá abortar o loop de leitura automaticamente. O uso do Flag (-999) não deve ser retirado.


Índice da Aula Próxima página


Curso de C do CPDEE/UFMG - 1996 - 1999