Matrizes Unidimensionais (Vetores)
À medida que os programas começarem a realizar trabalhos mais úteis, algumas vezes se
desejará que uma variável contenha muitos valores. Por exemplo, a variável nota pode
controlar as notas obtidas por 100 alunos. da mesma forma, a variável salário poderia
controlar o salário de cada funcionário da companhia. Uma matriz é um conjunto de variáveis, do
mesmo tipo referenciadas por um único nome, onde cada variável é diferenciada por meio de um
número chamado "índice"
Declarando uma Matriz
A utilização
mais comum para as matrizes unidimensionais ou vetores, está vinculada
à criação de tabelas. Uma variável somente pode conter um valor
por vez. No caso das matrizes, estas poderão armazenar mais de
um valor por vez, pois são dimensionadas exatamente para este
fim. Lembrando que a manipulação dos elementos de uma matriz ocorrerá
de forma individualizada, pois não é possível efetuar a manipulação
de todos os elementos do conjunto ao mesmo tempo. Para declarar
um vetor, é necessário especificar o tipo desejado (tal como int,
float, ou double), bem como o tamanho da vetor. Para especificar
o tamanho, deve-se colocar o número de valores que o vetor pode
armazenar dentro de colchetes após o nome do vetor.
- sintaxe: tipo nome_matriz[dimensão];
Por exemplo,
a declaração a seguir cria um vetor chamada notas, que
pode armazenar 100 notas do tipo int.
-
int notas[100];
Quando se
declara um vetor, C aloca memória suficiente para conter todos
os elementos. O primeiro ítem está na posição zero. Por exemplo,
no vetor notas, o comando a seguir atribue o valor 80 para o primeiro
elemento do vetor.
-
notas[0]=80;
Como o primeiro
elemento do vetor inicia no deslocamento zero, o último elemento
ocorre uma posição antes do tamanho do vetor. Dada o vetor anterior,
o comando abaixo atribue valor ao último elemento do vetor.
-
notas[99]=75;
Visualizando
uma Matriz Unidimensional
Após a atribuiçào de valores, a matriz irá residir na memória
de uma maneira similar à mostrada na figura abaixo:
Inicializando uma Matriz
O valor para cada elementos do vetor pode ser inicializado na
mesma instrução de sua declaração ou durante a execução do programa.
exemplo 1:
O exemplo
a seguir, inicializa o vetor dmes na mesma instrução
que o declara
-
float dmes[12] = {31,28,32,45,99,90,54,12,9,7,67,88};
A lista de
valores é colocada entre chaves e os valores são separados por
vírgulas. Os valores são atribuídos na sequência em que são escritos.
isto é, dmes{0} terá o valor 31, e dmes[1] 28, e assim por diante.
A instrução de definiçào de uma matriz inicializada pode suprimir
a dimensão da matriz, restando apenas um par de colchetes vazios:
exemplo 2:
-
float dmes[] = {31,28,32,45,99,90,54,12,9,7,67,88};
Se nenhum
número for fornecido para dimensionar a matriz, o compilador contará
o número de valores inicializados e o fixará como dimensão da
matriz. É possível inicializar um número menor de elementos do
que o declarado na dimensão do vetor.
Checando Limites
A linguagem C, não realiza verificação de limites em matrizes,
por isso nada impede que se vá além do fim de uma matriz. Se o
limite de uma matriz for transposto durante a operação de atribuição,
então os valores sobressalentes irão sobrepor outros dados da
memória. Estes valores serão armazenados em sequência, seguindo
os elementos da matriz na memória. Como não foi reservado espaço
para guardá-los eles sobreporão outras variáveis ou até mesmo
uma parte do próprio código do programa que está na memória. Isso
acarretará resultados imprevisíveis, e nenhuma mensagem de erro
do compilador avisará o que está acontecendo.
exemplo 3:
O exemplo
a seguir ultrapassa os limites do vetor notas e nenhuma mensagem
de erro será dada pelo compilador!
-
float notas[5];
notas[6]=3.5;
Usando Estruturas de Laços
Quando você referencia muitos elementos de um vetor, especificar
números para cada elemento do vetos pode ser demorado e tedioso.
Como uma alternativa, seus programas podem usar uma variável para
referenciar os elementos do vetor.
exemplo 4:
Por exemplo,
assumindo que a variável i contenha o valor 2, o comando
a seguir atribuiria o valor 80 ao vetor[2]:
-
i=2;
vetor[2]=80;
exemplo 5:
O programa a baixo, usa a variável i e um laço for para
exibir os elementos do vetor notas:
# include < stdio.h>
void main()
{
int notas[5]={80,70,90,85,80};
int i;
printf("Valores do Vetor \n");
for (i=0;i <5;i++)
printf("notas{%d] %d \n", i, notas[i]);
}
Usando Constantes
Quando os programas trabalham com matrizes, é necessário especificar
o tamanho da matriz. O exemplo anterior, declara um vetor de cinco
elementos, atribui um valor para cada elemento e, depois, usa
um laço para exibir os valores de cada um. Supond-se que se queira
mais tarde alterar o programa anterior, para que ele suporte 10
elementos ao invés de apenas 5. Será necessário então alterar
não somente a declaração da matriz, mas também o laço for.
Quanto mais alterações forem necessárias, maiores serão as chances
de erro! Como uma alternativa, os programas poderão declarar matrizes
usando constantes.
exemplo 6:
O programa
a seguir, declara um vetor com base na constante TAM_VETOR
e também usa essa constante na condição final do laço for.
# include < stdio.h>
#define TAM_VETOR 5
void main()
{
int notas[TAM_VETOR] = {80,70,90,85,80};
int i;
printf("Valores do Vetor \n");
for (i=0;i< TAM_VETOR;i++)
printf("notas{%d] %d \n", i, notas[i]);
}
|