Guia para iniciantes
Arrays unidimensionais e multidimensionais
Arrays unidimensionais e multidimensionais
(Estou um pouco livre hoje, então pensei em fazer um tutorial.)
Neste tutorial, abordaremos apenas as informações básicas e o entendimento sobre como os arrays funcionam.
O conhecimento sobre "Arrays" é necessário para qualquer scripter. Então vamos começar.
Requisitos:
a) Algumas idéias básicas sobre scripting/peão.
b) Paciência e capacidade de compreensão.
Conteúdo:
0. Definição de Array
1. Unidimensional
2. Bidimensional (Será postado em breve)
3. Tridimensional (Será postado em breve)
Neste tutorial, abordaremos apenas as informações básicas e o entendimento sobre como os arrays funcionam.
O conhecimento sobre "Arrays" é necessário para qualquer scripter. Então vamos começar.
Requisitos:
a) Algumas idéias básicas sobre scripting/peão.
b) Paciência e capacidade de compreensão.
Conteúdo:
0. Definição de Array
1. Unidimensional
2. Bidimensional (Será postado em breve)
3. Tridimensional (Será postado em breve)
Definição
Array é uma estrutura de dados que contém valores iguais ou diferentes de uma coleção, cada um deles possui um ID exclusivo relacionado à sua posição na estrutura. Fácil, certo? Não, não é realmente para um iniciante, apenas leia o que está escrito abaixo, você entenderá melhor.
1. Unidimensional
Vamos começar com um exemplo:
Código do peão:- Código:
novo MeuArray [ 10 ] ;
Isso criará uma estrutura de 10 elementos que se parece com isso:
Como isso é apenas uma "Chain", você pode chamá-la de "Single Dimensional" ou "String".
Se dermos IDs para cada um dos elementos, toda a cadeia seria [0] e cada uma das caixas seria [0]..[9]
Lembre-se, o primeiro elemento sempre começará com ID "0" e não "1"! Se você contar de 0 a 9, verá que são 10 números. Então, 0-9 = 10 slots.
Como você pode ver, as caixas estão vazias, mas um elemento não pode estar vazio, então, na verdade, elas são preenchidas com caracteres "NULL".
Isso ajuda o compilador a entender onde as strings terminam, caso contrário, não seria capaz de verificar o comprimento da string e finalizá-la.
Agora,
Observe que '\0' é uma constante de caractere chamada NULL.
Agora, vamos ver como fica se tivermos uma palavra nele:
Código do peão:Como isso é apenas uma "Chain", você pode chamá-la de "Single Dimensional" ou "String".
Se dermos IDs para cada um dos elementos, toda a cadeia seria [0] e cada uma das caixas seria [0]..[9]
Lembre-se, o primeiro elemento sempre começará com ID "0" e não "1"! Se você contar de 0 a 9, verá que são 10 números. Então, 0-9 = 10 slots.
Como você pode ver, as caixas estão vazias, mas um elemento não pode estar vazio, então, na verdade, elas são preenchidas com caracteres "NULL".
Isso ajuda o compilador a entender onde as strings terminam, caso contrário, não seria capaz de verificar o comprimento da string e finalizá-la.
Agora,
Observe que '\0' é uma constante de caractere chamada NULL.
Agora, vamos ver como fica se tivermos uma palavra nele:
- Código:
new MeuArray [ 10 ] = "Computadores" ;
Agora você vê um '\0' no final. Ele diz ao compilador que a string termina ali.
Se você tivesse feito:
- Código:
new MeuArray [ 10 ] = "Computadores" ;
Você vai se deparar com:
Código:- Código:
erro 018: os dados de inicialização excedem o tamanho declarado
Porque não há espaço para um caracter NULL!
Você também pode fazer:
Código do peão:Você também pode fazer:
- Código:
new MeuArray [ 10 ] = { 'C' , 'o' , 'm' , 'p' , 'u' , 't' , 'e' , 'r' , 's' } ;
//É o mesmo que new MyArray[10] = "Computadores";
Para utilizar a matriz:
Código do peão:- Código:
new MeuArray [ 10 ] = "Computadores" ;
- Código:
printf ( "%s" /* identificador %s é para strings */ , MyArray ) ;
//ou:
- Código:
printf
(
"%c%c%c%c%c%c%c%c%c%c" , //Se você não sabia, o identificador '%c' é para caracteres.
MyArray [ 0 ] ,
MeuArray [ 1 ] ,
MeuArray [ 2 ] ,
MeuArray [ 3 ] ,
MeuArray [ 4 ],
MeuArray [ 5 ] ,
MeuArray [ 6 ] ,
MeuArray [ 7 ] ,
MeuArray [ 8 ] ,
MeuArray [ 9 ]
) ;
//Ambos produzirão:
Computadores
Código do peão:
- Código:
//Se fizer:
printf ( "%i" /* %i é para inteiros (números) */ , MyArray [ 0 ] ) ;
// irá gerar:
- Código:
67
Porque 67 é o número ASCII para a letra C.
Então, para um uso simples:
Código do peão:- Código:
new message [ ] = "Olá pessoal! Estou lendo o tutorial aqui!" ;
formato ( mensagem, tamanho da mensagem, "Ela disse: %s" , mensagem ) ;
imprimir ( mensagem ) ;
//Vou te dar:
- Código:
Ela disse : Olá pessoal ! Estou lendo o tutorial aqui!
Nota: Se você declarar uma string sem tamanho, o pré-compilador definirá automaticamente o tamanho de acordo com o que você inicializou.
Exemplo:
Código do peão:Exemplo:
- Código:
algo novo [ ] = "YAY!" ;
//torna-se:
- Código:
new something [ 5 ] = "YAY!" ;
2. Bidimensional
Agora, você sabe muito mais sobre 'Strings'. Um Array 2D é, na verdade, String of Strings.
Quando você declara um novo Array 2D:
Código do peão:Quando você declara um novo Array 2D:
- Código:
novo MeuArray_2D [ 7 ] [ 8 ] ;
Parece:
Uma matriz 2D com conteúdo dentro:
Mais algumas explicações:
Código do peão:Uma matriz 2D com conteúdo dentro:
Mais algumas explicações:
- Código:
new MeuArray_2D [ ] [ ] =
{
"Um" ,
"Dois" ,
"Três"
} ;
printf ( "%s" , MeuArray_2D ) ;
//dará alguns símbolos estranhos porque MyArray_2D é um Array 2D,
//você deve indexá-lo com um ID [i].
//Então faça assim:
- Código:
printf ( "%s" ,MeuArray_2D [ 0 ] ) ;
//dá: "One" porque no primeiro índice 0, você tem uma string "One"
- Código:
printf ( "%s" ,[ 0 ] ) ;
//Também dá: "One" porque na função printf, você especificou como uma "String" usando %s,
//ela imprimirá caracteres até atingir um índice NULL.
- Código:
printf ( "%c" , MeuArray_2D [ 0 ] [ 0 ] ) ;
//Dá: "O" porque na posição 0, 0 em MyArray_2D, "O" é um caractere.
- Código:
printf ( "%s" , MeuArray_2D [ 1 ] ) ;
//Dá: "Dois" e similarmente, MyArray_2D[2] imprimirá "Três"
Alguns exemplos simples:
Código do peão:- Código:
new NewsHeadlines [ 4 ] [ 128 ] =
{
//[0] ..................... ......................... [i]
/* [0] */ "O servidor foi atacado por um grupo de membros desonestos esta noite!" ,
/* [1] */ "Uma competição realizada por um administrador causou o travamento do servidor!" ,
/* [2] */ "O servidor travou devido a um filtro de script ruim esta noite." ,
/* [3] */ "Não tenho outras notícias na cabeça."
} ;
SendClientMessageToAll ( - 1 , NewsHeadlines [ random ( sizeofNewsHeadlines ) ] ) ;
Aqui, "sizeof NewsHeadlines" dará 4.
Random de 4 dará 0 ou 1 ou 2 ou 3 (0-3 = 4 números)
Assim, NewsHeadlines[0-3] dará a mensagem no ID 0-3.
E como é uma variável, você pode alterar os títulos!
Código do peão:Random de 4 dará 0 ou 1 ou 2 ou 3 (0-3 = 4 números)
Assim, NewsHeadlines[0-3] dará a mensagem no ID 0-3.
E como é uma variável, você pode alterar os títulos!
- Código:
format ( NewsHeadlines [ 0 ] , 128 , "O título foi alterado!" ) ;
printf ( "%s" , NewsHeadlines [ 0 ] ) ;
3. Tridimensional
Tudo bem, então a parte mais difícil, matrizes 3D.
Como eu disse a você, arrays 2D são strings de strings, então arrays 3D são strings de strings de strings. Confuso, hein?
De qualquer forma, vou mostrar um exemplo:
Código do peão:Como eu disse a você, arrays 2D são strings de strings, então arrays 3D são strings de strings de strings. Confuso, hein?
De qualquer forma, vou mostrar um exemplo:
- Código:
novo Array_3D [ 4 ] [ 4 ] [ 4 ] ;
Ficaria assim:
E se colocarmos números de índice (IDs de slot):
Como nos scripts:
Código do peão:E se colocarmos números de índice (IDs de slot):
Como nos scripts:
- Código:
"Músculo" } } ;
para
- Código:
( novo índice = 0 ; índice < tamanho de Array_3D_A; índice ++ )
{
printf
(
"Objetos: %s | %s | %s | %s | %s" ,
Array_3D_A [ índice ] [ 0 ] ,
Array_3D_A [ índice ] [ 1 ] ,
Array_3D_A [ índice ] [ 2 ] ,
Array_3D_A [ índice ] [ 3 ] ,
Array_3D_A [ índice ] [ 4 ]
) ;
}
Irá produzir:
Código:- Código:
Objetos: Caneta | Livro | Papel | Notas | Lápis
Objetos: Laptop | Computador | Célula | Almofada | casulo
Objetos: Carro | Bicicleta | Ônibus | Trem |
Vamos ver como obtemos os IDs do índice:
Código do peão:- Código:
new Array_3D_A [ 3 ] [ 5 ] [ 12 ] =
{
// [0] [1] [2] [3] [4]
/*[0]*/ { "Caneta" , "Livro" , "Papel" , "Notes" , "Pencil" } ,
/*[1]*/ { "Laptop" , "Computador" , "Cell" , "Pad" , "Pod" } ,
/*[2]*/ { "Carro" , "Bicicleta" , "Ônibus", "Treinar" , "Músculo" }
} ;
À medida que você se move para baixo nas linhas, está em ordem crescente de índices principais. (Acima, há 3 colunas, 0-2)
À medida que você move da esquerda para a direita, está em ordem crescente dos segundos índices. (Acima, há 5 linhas, 0-4)
E conforme você conta os caracteres de cada string (palavra), você vai em ordem crescente dos terceiros índices.
(Acima, existem 12 elementos, 0-11 onde as strings são armazenadas)
Outro exemplo:
Código do peão:À medida que você move da esquerda para a direita, está em ordem crescente dos segundos índices. (Acima, há 5 linhas, 0-4)
E conforme você conta os caracteres de cada string (palavra), você vai em ordem crescente dos terceiros índices.
(Acima, existem 12 elementos, 0-11 onde as strings são armazenadas)
Outro exemplo:
- Código:
new Array_3D_B [ ] [ ] [ ] =
{
{ float : 102.14571 , "******" , 4100 } ,
{ float : 452.45245 , "*******" , 4012 } ,
{ float : 124.78951 , "Memebase" , 4501 }
} ;
- Código:
for ( novo índice = 0 ; índice < sizeofMatriz_3D_B; index ++ )
{
printf
(
"Dados: %f | %s | %i" ,
Array_3D_B [ index ] [ 0 ] ,
Array_3D_B [ index ] [ 1 ] ,
Array_3D_B [ index ] [ 2 ]
) ;
}
Irá produzir:
Código:- Código:
[size=14][size=13]Dados: 102.145713 | ****** | 4100
Dados: 452.452453 | ******* | 4012
Dados: 124.789512 | Memebase | 4501[/size][/size]
[center][/center]
Outro:
Código do peão:- Código:
new Array_3D_C [ ] [ ] [ ] =
{
{ { 'A' , 'C' , 'E' , ' \0 ' } , 0xFF11FF25, float : 4.154 , 36 } ,
{ { 'B' , 'A' , ' M' , ' \0 ' } , 0xFFFFFFFF, float : 6.154 , 43 } ,
{ { 'Y' ,'A', 'Y' , ' \0 ' } , 0x0, float : 74.154 , 46 }
} ;
- Código:
for ( new index = 0 ; index < sizeof Array_3D_C; index ++ )
{
printf
(
"Data: %s | %x | %f | %c" ,
Array_3D_C [ index ] [ 0 ] ,
Array_3D_C [ index ] [ 1 ] ,
Array_3D_C [ índice ] [ 2 ] ,
Array_3D_C [ índice ] [ 3 ]
) ;
}
Irá produzir:
Código:- Código:
Dados: ACE | -EE00DB | 4.153999 | $ |
Dados: BAM | -1 | 6.153999 | + |
Dados: SIM | 0 | 74.153999 | . |
---
Por enquanto é só!
Por enquanto é só!
Creditos: iPLEOMAX