Vectores/Arrays em C by Crypthief

Started by Anonymous, 18 de August , 2006, 11:48:01 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Anonymous

Heys! Aqui fica um tutorial escrito por mim sobre vectores/arrays em C espero que gostem!!!

1. Definição do que é um Vector/Array

Um vector ou array em Inglês é um conjunto de vários elementos consecutivos do mesmo tipo que pode ser acedidos individualmente apartir de um nome único. Por exemplo imagine uma gaveta, que no seu interior está dividida e onde puderá guardar por exemplo as suas cuecas/boxers mas só pode guardar este tipo de roupa (pois um vector tem de ser do mesmo tipo)e puderá aceder a esses mesmos dados(neste exemplo cuecas... omfg) individualmente com um nome único.

2. Como declarar um vector

Para se declarar um vector é tão simples como declarar um variavel simples...
Para se declarar um vector com uma única dimensão tem de ter a seguinte sintaxe:

tipo nome[numero de elementos]

tipo -> Pode ser do tipo int(numeros inteiros), float(numeros com casas decimais), char (armazenar um UNICO caracter) e double( que corresponde ao mesmo tipo que o float mas com dupla precisão)

nome-> Indica o nome pelo qual o vector será identificado

Numero de elementos -> Valor fixo que indica quantos elementos puderá o vector receber


3. Vamos á prática com vectores com uma só dimensão

int teste[10]; ---> Estamos a declarar um vector do tipo inteiro que puderá receber 10 elementos do tipo int

È referir que os indices de cada vector com n elementos variam sempre entre 0 e n-1, isto porque existe a posição 0. Vamos entao atribuir alguns valores a este vector de inteiros...

teste[0]=20; ---> Aqui estamos a atribuir o valor 20 a posição 0 do vector.

Agora imagine que quer atribuir a posição 1 o dobro do valor da posição 0. Ficaria algo do género:

teste[1]=teste[0]*2;

Vamos agora atribuir a todos os elementos do vector teste o valor 5. Para fazer isto, vou usar um ciclo for para nao estar sempre a repetir...

#include <stdio.h>

main()

{
int i;
int teste[10];

for (i=0;i<10;i++)
teste[i]=5;

}

Como veem estamos a atribuir o valor 5 a todas as posiçoes do vector teste.
Agora um outro exemplo de vector mas neste caso de caracteres...

char teste[10];

teste[0]='A';

estamos aqui a atribuir o caracter 'A' á posição 0 do vector de caracteres... é referir que existe diferença entre 'A' e "A" porque no primeiro exemplo estamos a dizer que existe um caracter e no segundo caso as aspas servem para declar uma string...
Agora pode treinar vectores com os restantes tipos...

4. Vamos á prática com vectores multidimensionais


tipo vector [j];

declaramos um vector com um determinado tipo ja referido acima e que tem as posições i e dentro destas ainda existem as posições de j...
Vamos usar agora o exemplo do jogo do galo... Para gerar o seguinte output...


  X |   |0 
------------
    | X |   
------------
    |   | 0


#include <stdio.h>
#define DIMEN 3 /* Estamos declarar um contante de nome DIMEN com o valor 3 */
#define ESPACO ' ' /* Aqui outra mas como o nome diz com um espaco vazio */
main()

{
int i,j;
char galo[DIMEN][DIMEN];

for (i=0;i<DIMEN;i++)   /* Aqui vamos atribuir a todas as posicoes do vector um espaco para que o tabuleiro venha limpo */
for (j=0;j<DIMEN;j++)
galo[i][j]=ESPACO;

galo[0][0]='X'; /* Aqui a atribuir as diferentes jogadas */
galo[1][1]='X';
galo[0][2]='0';
galo[2][2]='0';

for (i=0;i<DIMEN;i++)  /* Aqui estamos a fazer o tabuleiro  */
{
for (j=0;j<DIMEN;j++)
printf("%c %c",galo[i][j],j==DIMEN-1?' ':'|'); /* aqui estamos a formar nas diferentes posicoes as barras verticais */
if (i!=DIMEN-1)
printf("\n-----------\n"); /* Da mesma maneiras as horizontais */
}
}

Com este exemplo ja deu para perceber como funcionam os vectores multi dimensionais.

5. Vectores e strings

Uma string e um conjunto de caracteres armazenados em um vector de caracteres, mas o inverso é falso, isto é, um vector de caracteres pode nao ser uma string.
vamos entao declarar uma string armazenada em um vector de caracteres.

char nome[8]="Darkers";

Agora vcs pensam... porque esta a declarar ele 8 posicoes se a palavra darkers so tem 7 caracteres? Porque fica sempre uma posição reservada para avisar o compilador que a string terminou, sendo este valor representado pelo ASCII '\0'
Vamos agora exercitar isto:

#include <stdio.h>

main()

{
char nome[50];  /* Ja devias saber o que isto nao? LOL */
int idade;

printf("Insira o seu nome\n");
gets(nome); /* Leitura dos dados inseridos neste caso o nome */
printf("E agora a sua idade\n");
scanf("%d",&idade); /* Aqui a idade */
printf("O senhor chama-se %s e tem %d anos\n",nome,idade); /* E aqui fica o output em que o %s vai ser preenchido por nome e o %d por idade... */

}

Bem espero que tenham gostado!
Agora se tiverem duvidas postem por favor ou se tiver erros, pois ainda nao sou um guru do C! hehehe

Abraços,

Skayler

Bem bacana..
Parabéns pelo tutorial.


[]'s


Skayler
Away

Anonymous

Heys! Eh so para dizer que me enganei aqui a digitar...
Quotechar nome[8]="Darkers";

Agora vcs pensam... porque esta a declarar ele 8 posicoes se a palavra darkers so tem 7 caracteres? Porque fica sempre uma posição reservada para avisar o compilador que a string terminou, sendo este valor representado pelo ASCII '\0'

o correcto é char nome[7]="Darkers";
e nao 6... dps é so seguir o texto...

Abraços,

Anonymous

Fico muito bom, essas iniciativas que elevam o homem!

Pra nao ter mais duvidas o ultimo elemento de um vetor de caracteres e sempre NULL se formos imprimir ele xD
Mas se mesmo assim a duvida ainda existir use a funcao sizeof(variael); CUIDADO: com ponteiros sempre vai retornar 4 nem preciso dizer pq ne xD