[Tutorial] Início para começar a codar!

6 de mai. de 2012.
new a //variável Declare "a" vazio
new b=//Declare variável "b" e configurá-lo para 5.
new c=5.0 //Este é inválido, tecnicamente não é um número inteiro!
new d="hello" //"hello" não é um número qualquer, este é inválido.

//Você pode também declarar múltiplas variáveis em uma linha: 
new e,f,g,h
new x=7, y=3
new z = 1_000_000 // Pawn suporta números como este. Assim, valores grandes são mais fáceis de ler.

Floats

Você também pode declarar uma variável como "Float", o que significa que podem armazenar números com casas decimais. Estes são chamados de "floating point" números:

new Float:a //Declara "a" uma variável floating point vazia. 
new Float:b=5.3 //Isso irá declarar uma nova variável "b" e atribuir 5,3 para ele. 
new Float:c=5 //Isto é válido, mas o compilador vai lhe dar um aviso.
new Float:d="hello" //Este é inválido, "Olá" não é um número decimal.

Você também pode fazer o seguinte:

//Float (n) é uma função que recebe um número n e faz dele um 
//número de floating point. 

new Float:var = float(5)
new Float:var2 = 5.0 
new Float:var3 = 1.0*5
new var4 = floatround(5.0) 
//Nota: floatround(n) é uma função que recebe um número e ele n rodadas de um número total.
//isso faz com que a atribuição a uma variável inteira regular válido.

Matrizes

Pawn tem como características básicas "matrizes". Uma matriz é um tipo simples de dados agregados. Isto significa que você pode armazenar múltiplos valores em uma variável! Uma matriz segue as mesmas regras como uma variável normal, e tem os mesmos tipos de valores. A matriz simplesmente pode conter vários valores. Você define uma matriz com parênteses, e quantos valores ela pode conter. Por exemplo:

//Isso irá declarar uma variável chamada "Players" que tem 32 números. 
new Players[32]

//Agora você pode armazenar valores em qualquer uma das 32 "slots" que esta matriz tem. 
//Os slots são numerados de 0 a (n-1), ou neste caso, 0-31. 
//Cada slot começa por 0.


//Set slot 0 to 5(Ou seja, coloca o slot 0 para 5).
Players[0] = 5

//Define um numero para o que está no slot 0, neste caso, o número 5
Players[1] = Players[0]

//Este é inválido! 
//Apesar de existirem 32 slots, são numeradas de 0 a 31. 
//Isso resulta em AMX Native Error 4 - AMX_ERR_BOUNDS
//ou, ele simplesmente não irá compilar!

Players[32] = 15

//Este é também totalmente inválido 
Players[-1] = 6

new a = 3
//Este também é totalmente inválido. 
//deve ser um número constante. 

new BadArray[a]

//Então, isto é valido:
const b = 3
new GoodArray

#define ARRAY_SIZE 3
new Array[ARRAY_SIZE]

As matrizes também podem ser declaradas com grupos de padrão de dados, tais como:

new Numbers[4] = {0,1,2,3}
//Nota: é importante que você tenha certeza da quantidade de números
//Para você não passar o tamanho do jogo de matriz


Você também pode usar qualquer tipo de dados com matrizes:

//Matriz de pontos flutuantes(floating points):
new Float:Numbers[4] = {0.0, 1.2, 2.4, 3.8}
//matriz de booleanos. Note que esta define para cada slot de verdade. 
new bool:playerHasGun[33] = {true, ...}


Strings

Você já deve ter notado que um tipo de dado importante está faltando - caracteres (letras e símbolos). Estas são chamadas de "Strings", e em Pawn, eles são tecnicamente números! Uma string é uma matriz de números que traduzem a ASCII (caractere) símbolos. Por exemplo:

//Isso irá declarar um número de série "myString" que contém os dados "Hello". 
//Ela terá seis faixas, porque há 5 caracteres. 
//O último espaço é reservado para o número 0, que informa ao mecanismo Pawn que é uma string.

new myString[] = "Hello"

Nota: qualquer coisa entre / * e * / é também um comentário. Você não pode usar / * * / dentro de um * /. O seguinte conjunto de comandos alcança a mesma finalidade, porém, é longo e não é recomendado. Isto funciona porque cada caractere da string "Olá" é armazenado em um slot na matriz.

new myString[6]
myString[0] = 'H'
myString[1] = 'e'
myString[2] = 'l'
myString[3] = 'l'
myString[4] = 'o'
myString[5] = 0


Nota: Arrays que se destinam a ser seqüências devem terminar em 0, ou em caractere nulo. Esta é para você saber onde a string termina.
Você não pode fazer isto! Embora possa compilar, é altamente perigoso, pois pode causar erros de estouro:


new myString[6]
myString = "Hello" //inválido!
myString[0] = "Hello" //inválido!
//Para adicionar dados a uma corda, você pode fazer isso:
new goodString[7]
copy(goodString, 6, "Hello")


Note que copiamos 6 células da matriz em uma matriz que pode conter 7. Se fôssemos para copiar 7 bytes para esta matriz, copy () poderia copiar um byte extra para o personagem nulo, transbordando a matriz. Isso é chamado de "buffer overflow" e deve ser cuidadosamente evitada.
Mais exemplos:


//Copy é uma função que recebe três parâmetros: 
copy(destination[], length, source[])
//Copia a string dentro da matriz de origem e os locais 
//que na matriz de destino, mas apenas cópias até caracteres comprimento.

//Por fim, para provar que é realmente uma seqüência de uma série de números, isto é totalmente válido: 

new weird[6]
weird[0] = 68
weird[1] = 65
weird[2] = 73
weird[3] = 86
weird[4] = 68
weird[5] = 0

//Isto irá definir a variável de "weird" para a seqüência de "David". 
//Para ver como letras e símbolos traduzem em números, visite www.asctiitable.com.


A quem quer que eu continue com a postagem do Tutorial, responda o tópico. 

Obs: Isso é a base de pawn, se quiserem codar para samp, estudem GMs.

0 comentários:

Postar um comentário