Agora chegou a hora de aprender um pouco sobre vetores. Lembrando que é apenas algo superficial, perto do que realmente pode ser criado, utilizando esses comandos.
Um vetor pode ser entendido como um conjunto de elementos consecutivos, podendo ser de qualquer tipo de dado, mas todos do mesmo tipo, sendo acessados em conjunto ou individualmente pelo seu nome. Também é importante lembrar, que o índice do 1° elemento de um vetor é sempre 0, alternando entre 0 e n-1.
Um vetor pode ser entendido como um conjunto de elementos consecutivos, podendo ser de qualquer tipo de dado, mas todos do mesmo tipo, sendo acessados em conjunto ou individualmente pelo seu nome. Também é importante lembrar, que o índice do 1° elemento de um vetor é sempre 0, alternando entre 0 e n-1.
A declaração de um vetor, é feita por: tipo nome[n°elementos].
Ex 1:
#include<stdio.h>
main()
{
int z[3]; // Um vetor de 3 elementos
int c;
z[0] = 1; // 1° elem
z[1] = 4; // 2° elem
z[2] = 59; // 3° elem
for(c=0; c<3; c++)
{
printf("%d, ",z[c]);
}
system("pause");
}
Existe outros jeitos de declarar:
z[4-2] = 10; // equivale a z[2] = 10
z[3] = {1,4,59};
z[] = {1,4,59}; // equivale ao de cima
Lembrando que quando os vetores são criados, eles também acumulam valores aleatórios em suas posições. Se eu decidir declarar um vetor com 5 elementos, mas colocar apenas 2 valores, os primeiros dois elementos irão conter os valores que lhes forma atribuídos, e os elementos restantes serão iniciados com 0(ZERO).
Ex :
z[5] = {90,40}; // como eu atribui
z[5] = {90,40,0,0,0}; // como ficou
Agora vou mostrar um simples programa que utiliza um vetor, de exemplo:
#include<stdio.h>
/* Recebe 5 números ins pelo user, e imprimi os mesmos */
main()
{
int num[5];
int c;
for(c=1; c<=5; c++)
{
printf("Ins o %d° num: ",c);
scanf("%d", &num[c]);
}
for(c=1; c<=5; c++)
{
printf("...%d\n", num[c]);
system("pause");
}
Constantes
São dados gravados na memória que não podem ter seus valores alterados, armazenando valores que representam tamanho fixo, durante a execução. São declaradas fora das funções, podendo serem utilizadas em qualquer parte do programa. Elas simplificam muito o trabalho do programador, quando ele precisa alterar um único valor que se encontra espalhado, ao longo do programa.
Para criarmos uma constante, podemos utilizar a palavra reservada const.
Ex:
#include<stdio.h>
const int num = 50;
void func(int z[])
{
int c;
for(c=0; c<num; c++)
z[c] = 0;
}
main()
{
int x[num], c;
func(x);
for(c=0; c<num; c++)
x[c] = c;
for(c=num-1; c>=0; c--)
printf("%d\n", x[c]);
}
A outra forma é usando #define, considerada uma constante simbólica. Ela é uma diretiva que indica ao pré-processador que o símbolo que a segue vai ficar com o valor que aparece depois do símbolo. Ela não ocupa um espaço físico em memória, tendo seu valor substituído ao longo do programa, antes da compilação. É normal representar constantes simbólicas por letras maiúsculas.
#include<stdio.h>
#define NUM 50
void func(int z[])
{
int c;
for(c=0; c<NUM; c++)
z[c] = 0;
}
main()
{
int x[NUM], c;
func(x);
for(c=0; c<NUM; c++)
x[c] = c;
for(c=NUM-1; c>=0; c--)
printf("%d\n", x[c]);
}
Vetores em Funções
O exemplo a seguir, é de uma função que recebe um vetor de int(sem dimensão) e um int, indicando quantos elementos irão iniciar.
Ex:
#include<stdio.h>
void func(int z[], int num)
{
int c;
for(c=0; c<num; c++)
z[c] = 0;
}
main()
{
int x[5];
int y[16];
func(x,5);
func(y,16);
}
Se eu passar a dimensão do vetor no parâmetro, o compilador iria descartar os números dos elementos do vetor.
Vetores Multidimensionais
Um vetor pode ser declarado com n dimensões. Eles são preciosos quando precisamos escrever programas que são melhores de organizar utilizando muitos elementos. Um bom exemplo disso é o jogo da velha. Note que o exemplo apresenta apenas as posições dos elementos "X" e "0" sobre o "tabuleiro", e mais nada, partindo de como fazer uma jogada, pontos e etc.
Ex:
#include<stdio.h>
#define JOG 3
main()
{
char Velhas[JOG][JOG] = {{' ', ' ', ' '},{' ', ' ', ' '},{' ', ' ', ' '}};
int c;
int k;
Velha [0][0] = 'X';
Velha [1][1] = 'X';
Velha [0][2] = '0';
Velha [2][2] = '0';
for(c=0; c<JOG; c++)
{
for(k=0; k<JOG; k++)
printf("%c %c", Velha [c][k], k==JOG-1? ' ' : ' | ');
if(c != JOG-1)
printf("\n-----------\n");
system("pause");
}
}