SA-MP Forums Archive
[Tutorial] Variбvel, Array e Enumerador (By Artista) - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Tutorial] Variбvel, Array e Enumerador (By Artista) (/showthread.php?tid=610788)



Variбvel, Array e Enumerador (By Artista) - F1N4L - 28.06.2016

Encontrei um tуpico relacionado a esse tema e ficou meio аs escondidas em um tуpico apenas para sanar a dъvida de um usuбrio, mas com certeza vai sanar a dъvida de mais alguns, apesar de simples.

O que й uma variбvel e uma array?

Uma variбvel й uma posiзгo da memуria que armazenarб algum valor. Quando vocк declara alguma variбvel no seu script, vocк estб ocupando um espaзo na memуria, por isso й importante nгo criar variбveis desnecessбrias, para evitar o desperdнcio de memуria. Contudo quando vocк cria alguma variбvel de forma local esta serб destruнda apуs chegar no final das chaves.

Se uma variбvel й uma posiзгo da memуria, entгo o que й uma array? Falando de forma resumida, uma array й simplesmente um conjunto de posiзхes de memуria! Ou seja, quando vocк declara no seu script new arr[5]; vocк estб declarando uma array com 5 posiзхes (0, 1, 2, 3, 4).
Pra ficar mais claro ainda, basta vocк pensar nas arrays como uma lata de sardinha


Enumeradores e defines

Um enumerador й uma forma de organizar os seus cуdigos, tipo uma lista numйrica, porйm com nomes no lugar de nъmeros.

No exemplo abaixo eu numerei os dias da semana, tendo domingo como o primeiro dia (valor 0) e sбbado como sйtimo (valor 6).

PHP код:
enum DIAS 

    
DOMINGO  // 0 
    
SEGUNDA// 1 
    
TERCA,   // 2 
    
QUARTA,  // 3 
    
QUINTA,  // 4 
    
SEXTA,   // 5 
    
SABADO   // 6 

Portanto se vocк fizer...
printf("%d", QUINTA);
... irб imprimir 4 no console!

Ok, agora sabemos que os enumeradores servem para enumerar itens, entгo pra que servem as defines?
As defines (macros) trata-se de uma diretiva capaz de definir um termo em algum valor. Diferente dos enumeradores, as defines tem um uso muito mais amplo do que simplesmente enumerar itens, й possнvel atй mesmo criar funзхes com macros! Mas como o objetivo da minha resposta й explicar um pouco sobre os recursos que vocк perguntou, nгo vou chegar a fundo nesse assunto.
Uma define que vocк certamente deve conhecer й a MAX_PLAYERS, que estб definida por padrгo com o valor 500.
Portanto quando vocк declara new arr[MAX_PLAYERS]; vocк estб criando uma array com 500 posiзхes!
NOTA: MAX_PLAYERS й uma definiзгo, nгo array!


Colocando em prбtica

Quando vocк faz:
Код:
new Usuario[MAX_PLAYERS][Enum];
Vocк estб criando uma array multidimensional com 500 posiзхes e cada posiзгo abriga x posiзхes! Й como se fosse uma array de arrays, porйm organizada

Ex:

Код:
new arr2d[4][6];
de forma ilustrada й o mesmo que:

Код:
|0|1|2|3|4|5|
|0|1|2|3|4|5|
|0|1|2|3|4|5|
|0|1|2|3|4|5|
Ou seja, 4 linhas (posiзхes) e 6 colunas (posiзхes)

e de forma organizada e de fбcil manuseio й o mesmo que:

PHP код:
enum COLUNAS 

    
coluna_zero
    
coluna_um 
    coluna_dois

    
coluna_tres 
    coluna_quatro

    
coluna_cinco 

new 
arr2d[4][COLUNAS]; 
Totais crйditos ao Artista

Alguns tуpicos relacionados:
Array Single e Multi-Dimensional (Inglкs)
Variбveis (Portuguкs)
Enumeradores (Inglкs)


Re: Variбvel, Array e Enumerador (By Artista) - teteu99 - 01.07.2016

Уtimo rsrs, Muito boom para quem ta querendo aprender mais sobre a linguagem pawn rs.


Respuesta: Variбvel, Array e Enumerador (By Artista) - OverKiller - 07.07.2016

Quote:

Cуdigo PHP:
enum DIAS
{
DOMINGO // 0
SEGUNDA, // 1
TERCA, // 2
QUARTA, // 3
QUINTA, // 4
SEXTA, // 5
SABADO // 6
}
Portanto se vocк fizer...
printf("%d", QUINTA);
... irб imprimir 4 no console!

Oxente a variбvel vai ter valor quatro quando for usar ela? Tipo: if (playerinfo [playerid][quinta] == 1);

Pois como dito por vc o cara ja teria valor 4 e nгo 0(valo padrгo quando anuncia-se uma variбvel)


Re: Respuesta: Variбvel, Array e Enumerador (By Artista) - F1N4L - 07.07.2016

Quote:
Originally Posted by OverKiller
Посмотреть сообщение
Oxente a variбvel vai ter valor quatro quando for usar ela? Tipo: if (playerinfo [playerid][quinta] == 1);

Pois como dito por vc o cara ja teria valor 4 e nгo 0(valo padrгo quando anuncia-se uma variбvel)
Estamos falando de enumeradores, enumerador trabalha com constantes do tipo inteiro e podem ser nomeados.
Quando criamos um enumerador e nгo definimos nenhum valor inicial, automaticamente serб acrescentado +1 partindo do valor da constante anterior, formando assim uma ordem numйrica. (um "auto increment")

Supondo que eu nгo utilize um valor inicial:
Код:
enum
{
   a,
   b,
   c
}
Seria, basicamente:
Код:
enum
{
   0,
   1,
   2
}
Estamos criando constantes do tipo inteiro, porйm nomeadas. Algo parecido com macros:
Код:
#define a 0
#define b 1
#define c 2

Supondo que eu utilize um valor inicial:
Код:
enum
{
   a = 2,
   b,
   c
}
Seria, basicamente:
Код:
enum
{
   2,
   3,
   4
}
Assim como variбveis possuem um valor padrгo, enumeradores tambйm. Por estб razгo nуs zeramos os mesmos e posteriormente atribuнmos um valor para cada variбvel/constante.