[Tutorial] Oque vocк precisa saber sobre PAWN
#1

Oque vocк precisa saber sobre PAWN





Introduзгo:
Bom, eu desenvolvi este tutorial com os erros mais comuns entre os novatos,
nгo apenas erros e sim dicas para quem quer comeзar a programar ou estб
aprendendo mais que estб encontrando muitas dificuldades.

Pois bem, quem comeзa na programaзгo, nгo tem a mнnima ideia do que й
objetos, variбveis, arrays, tabulaзгo, conexгo e como funciona o PAWN.
Com o passar do tempo vocк irб aprender muitas coisas, alйm de saber muitas
coisas que podem ser aplicadas na vida real.

Este tutorial serб aplicado para explicaзгo bбsica sobre programaзгo,
por isto dъvidas avulsas de outros sistemas/includes nгo serгo
respondidos neste tуpico. o tutorial tambйm serб dividido em duas partes,
a parte da explicaзгo e a segunda parte й como manipular.

Primeiro de tudo vocк tem que saber que '//' ou '/* */' sгo comentбrios, por isto
eles sгo ignorados pelo compilador.

Os assuntos abordados neste tуpico serгo:
- Diretivas;
- Variбveis;
- Constantes;
- Enumeradores;

- Arrays
- Funзхes;
- Callbacks;
- Expressхes;
- Loopings.









Diretivas:
Vamos comeзar o tutorial falando sobre diretivas, oque sгo, qual sua funзгo e
como usб-las.

Bom as diretivas sгo funзхes especнficas do compilador pawno.exe, elas sгo
para vocк criar configuraзхes que nгo serгo enviadas ao AMX, ou seja, sгo
apenas definiзхes, segue o exemplo:

Diretiva: #Include
Esta diretiva й a mais importante de todas, ela que carrega scripts externos
e transforma-o em um, й muito boa para vocк ogranizar seu gamemode.

Ela й muito usada para carregar inclusхes, como:
pawn Code:
#include <a_samp>
No caso iremos incluir a biblioteca a_samp no nosso script,
somente lembrando para nуs incluir uma biblioteca ela deve estar
na pasta "Includes" e com extensгo .inc, a pasta includes fica
na mesma pasta em que o PAWNO se encontra.


Diretiva: #define
No seu cуdigo PAWN:
pawn Code:
#define Vermelho 0xFF0000FF
SendClientMessageToAll(Vermelho, "Esta й uma frase em vermelho");
Apуs compilar, seria a mesma coisa que:
pawn Code:
SendClientMessageToAll(0xFF0000FF, "Esta й uma frase em vermelho");
Entгo, vocк pode notar que em questгo de velocidade in-game tem
diferenзa nenhuma, pois os dois cуdigos acima sгo exatamente a
mesma coisa, somente que o compilador
troca "Vermelho" para "0xFF0000FF".

Para entender:
pawn Code:
#define APELIDO  SIGNIFICADO
Resumindo, Diretivas sгo funзхes do COMPILADOR e nгo refletem
no in-game, agora que vocк jб sabe que definiзхes sгo apenas "Apelidos"
que o pawno troca pelo significado.


Agora iremos aprender sobre as principais diretivas do pawno, tambйm
mostrarei exemplos,

Diretiva #if,
Bom, esta diretiva й muito usada quando queremos comparar uma definiзгo,
ou melhor dizendo um "Apelido", com ela podemos fazer facilmente um cуdigo
de configuraзгo, veja o exemplo:

Primeiramente criamos uma definiзгo:
pawn Code:
#define ATIVAR_MENSAGEM         true// podemos considerar que 'true' й sim 'false' й nгo.

Depois da definiзгo, iremos fazer a condiзгo, da qual verificaremos se
a mensagem estб ativada:
pawn Code:
#if ATIVAR_MENSAGEM == true // Verificamos que "ATIVAR_MENSAGEM" Estб exatamente igual hб 'true'.
printf("Mensagem ativada");
#endif // note que esta diretiva й essencial para compilar, pois ela й que termina a condiзгo acima, caso nгo tiver ela, aparecerб erros.
Vocк tem que saber que se trocarmos a definiзгo por esta:
pawn Code:
#define ATIVAR_MENSAGEM         false// podemos considerar que 'true' й sim 'false' й nгo.
A condiзгo serб ignorada, e nгo irб imprimir mensagem no console.

Quando falamos em "Condiзгo" logos pensamos em "Comparaзгo", e
no pawno tem vбrios modos de comparar valores, vamos ver os
"Operadores de comparaзгo", os operadores sгo sнmbolos que especнfica com
precisгo o valor da definiзгo.

Operador: < (Menor que), no exemplo abaixo vocк pode nota que ele estб
verifciando
se 20 for menor que ATIVAR_MENSAGEM
pawn Code:
#if ATIVAR_MENSAGEM < 20

Operador: > (Maior que), este operador й usado para comparar valores sendo maior que ele,
como no exemplo abaixo, ele verifica se a definiзгo ATIVAR_MENSAGEM й maior que 20:
pawn Code:
#if ATIVAR_MENSAGEM > 20
Operador: <= (Menor ou igual que), este й basicamente um dos mais fбceis de todos, ele
compara se a definiзгo й menor OU igual hб 20.
pawn Code:
#if ATIVAR_MENSAGEM <= 20
Operador: >= (Maior ou Igual que), este й parecido com o decima, a ъnica diferenзa й que
ele verifica se a definiзгo й maior ou igual hб 20:
pawn Code:
#if ATIVAR_MENSAGEM >= 20
Operador: != (Diferente de), este operador й muito fбcil de utilizar, ele verifica se a definiзгo
й diferente de 20:
pawn Code:
#if ATIVAR_MENSAGEM != 20
Bom, a saga de operadores de definiзгo sгo essas, lembrando que esses sгo as definiзхes
bбsicas, agora irei explicar algumas funзхes extras das diretivas:

Diretiva: #if defined
Esta diretiva й muito utlizada para verificar se foi definido uma palavra, exemplo:
pawn Code:
#if defined ATIVAR_MENSAGEM
printf("Foi definido ATIVAR_MENSAGEM");
#endif

#if !defined ATIVAR_MENSAGEM
printf("Nгo foi definido ATIVAR_MENSAGEM");
#endif
Note que para nуs comparar se definiзгo nгo foi definida й sу botar ! antes do "defined".


Diretiva: #else
A diretiva #else й utilizda como com a simples traduзгo "se nгo",
pawn Code:
#if defined ATIVAR_MENSAGEM // verificamos se ATIVAR_MENSAGEM estб definido

printf("Foi definido ATIVAR_MENSAGEM"); // imprimimos a mensagem

#else // caso nгo for definida a ATIVAR_MENSAGEM

printf("Nгo foi definido ATIVAR_MENSAGEM"); // imprimimos outra imagem

#endif // fim
Somente lembrando que ela sу pode ser utilizada uma vez dentro de uma condiзгo.



Diretiva:#undef
Esta diretiva sу tem uma funзгo, ela remove uma definiзгo, veja no exemplo:
pawn Code:
#define ATIVAR_MENSAGENS   50 // definimos o valor de ATIVAR_MENSAGENS para 50
#undef ATIVAR_MENSAGENS // removemos a definiзгo
#define ATIVAR_MENSAGENS 60 // definimos novamente com o valor 60

Cuidado!
Vocк nгo pode definir duas vezes com mesmo nome:
pawn Code:
#define ATIVAR_MENSAGENS
#define ATIVAR_MENSAGENS
O aparecerб um erro dizendo que jб estб definido.

Vocк tambйm definir ela mesmo:
pawn Code:
#define ATIVAR_MENSAGENS ATIVAR_MENSAGENS
O compilador simplismente irб travar.










Variбveis:
Variбveis nada mais sгo doque "midia de armazenamento" ou seja, elas podem armazenar
qualquer valor, des-de que os valores sejam maiores ou menores que 0, ao cria-las elas
terгo o valor 0 automaticamente.

Para testar
pawn Code:
new MinhaVariavel;
printf("Valor de MinhaVariavel й :%d", MinhaVariavel);
Para podemos modificar o valor, precisamos saber como manipular variбveis:
Operador/ExpressгoSignificado
+=Adiciona uma valor hб nossa variбvel
-=Remove um vaor hб nossa variбvel
*=Multiplica um valor hб nossa variбvel
/=Divide um valor da nossa variбvel
=Setamos um valor hб nossa variбvel
%Resto da divisгo, й usado quando a divisгo nгo й exata.

Depois vocк ver como modificar os valores, vamos aplicar:
pawn Code:
new MinhaVariavel;
MinhaVariavel += 10; // botamos
printf("Valor de MinhaVariavel й :%d", MinhaVariavel); // Imprime 10 no console.
MinhaVariavel -= 5;// removemos 5 da variбvel "MinhaVariavel"
printf("Valor de MinhaVariavel й :%d", MinhaVariavel); // Imprime 5 no console.
MinhaVariavel *= 2;
printf("Valor de MinhaVariavel й :%d", MinhaVariavel); // Imprime 10 no console.
MinhaVariavel /= 2;
printf("Valor de MinhaVariavel й :%d", MinhaVariavel); // Imprime 5 no console.
MinhaVariavel = 59;
printf("Valor de MinhaVariavel dividida por 8 resto da divisгo й %d",  MinhaVariavel % 59);// Imprime 8 no console.


Sу lembrando que uma variбvel sу pode armazenar UM valor, e tambйm armazenar
um id, como por exemplo, veiculo:

pawn Code:
new MinhaVariavel;
MinhaVariavel = CreateVehicle(522, 5457.47, 567.788, 0.0, -1,-1, 9);
printf("ID Do carro й %d", MinhaVariavel);

Tudo se resume que variбvel armazena um valor, podendo de ser objeto ou nгo.












Constantes:
Constantes sгo um tipo de variбvel que ficam constantemente no mesmo valor, ou seja,
й como se fosse uma definiзгo.

pawn Code:
const MinhaConstante = 500; // vemos que a constante tem o valor 500
printf("Valor: %d", MinhaConstante);
Aparecerб:
Code:
Valor: 500
Atenзгo:
Com constantes nгo й possнvel modificar o valor dela:
pawn Code:
const MinhaConstante = 500; // vemos que a constante tem o valor 500
printf("Valor: %d", MinhaConstante);
MinhaConstante = 500; // ERRO
Pois sгo pre-definidas.

Constantes sу podem armazenar valores inteiros, nгo podendo
Armazenar nъmeros flutuantes(floats).














Enumeradores:
Enumeradores sгo um tipo de organizaзгo de array, nela sгo
armazenados valores que podem ser chamados a qualquer instante, veja:

pawn Code:
enum MeuEnumerador / * Iniciamos nosso enumerador com o nome "Meu enumerador"
{
    Nivel
    // Aqui dentro inserimos as "Tags" que serгo armazenados os valores
}; // Concluimos nosso enumerador, agora vamos utilizб-lo em nossa array.

new PlayerInfo[ MAX_PLAYERS ] [ MeuEnumerador ]; // Agora criamos a array com o nome "PlayerInfo",  coma a dimensгo "MAX_PLAYERS" e utilizamos as TAGs do enumerador "MeuEnumerador".
Pronto!, estrutura de enumerador formada, agora й sу utilizar:
pawn Code:
PlayerInfo[playerid][Nivel] = 50;
Indicamos a array "PlayerInfo" da dimensгo "playerid" que o valor do "Nivel" dele й 50.

Ao usar uma tag inexistente no enumerador o PAWNO resultarб a erro, entгo aconselho
botar nome de tags fбceis de lembrar para nгo se esquecer rapidamente =)













Arrays:
Bom, este assunto й muito importante, pos vocк irб utilizar na maioria dos seus cуdigos,
uma dica que dou й sempre contar cйlulas precisamente ou criar uma Variбvel Gobal,
com uma prй-definiзгo de string, normalemnte usando 128, pois este й o mбximo de texto,

Mais vamos hб explicaзгo:

As arrays sгo multi variбveis, com ela podem ser armazenados vбrios valores diferentes,
similar a uma variбvel normal que sу pode armazenar um valor simultaniamente.

Criamos uma array normal contendo 5 cйlulas:
pawn Code:
new MinhaArray[ 5 ];

Seria a mesma coisa que:
pawn Code:
new MinhaArray0;
new MinhaArray1;
new MinhaArray2;
new MinhaArray3;
new MinhaArray4;
Nota-se que sгo utilizados atй o 4, pois o mesmo й contado do 0,


Voltando para o assunto Array, cada valor pode ser armazenado em uma cйlula,
sу lembrando que cйlula й oque estб entre colchetes "[" & " ]".

Como nosso exemplo, criamos uma array com 5 cйlulas:

pawn Code:
new MinhaArray[5];

Para modificar os valores dos mesmos:
pawn Code:
MinhaArray[0] +=  50; // Incrementa a "MinhaArray" cйlula "0" o valor "50".
Para exibimos:
pawn Code:
printf("MinhaArray[0]  Valor: %d Cйlula: 0", MinhaArray[0]);
Sу lembrando que temos mais 4 cйlulas livres,
pawn Code:
new MinhaArray[5]  = {
    50,     // Cйlula 0
    0,  // Cйlula 1
    0,      // Cйlula 2
    0,      // Cйlula 3
    0       // Cйlula 4
};
Como pode ver, a apresentaзгo da estrutura, os valores que estгo "0" sгo representado
por valores nгo utilizados.


Nota(s):
As arrays sу sгo no mбximo tridimensional, que sгo 3 dimensхes em uma array sу.

Exemplo de array tridimencional:
pawn Code:
new MinhaArray[1][20][40];
Manipulando:
pawn Code:
MinhaArray[1][0][0] = 10;
MinhaArray[1][0][1] = 50;
MinhaArray[1][1][25] = 30;
Mostrando:
pawn Code:
printf(" %d |%d | %d | ",  MinhaArray[1][0][0], MinhaArray[1][0][1],   MinhaArray[1][1][25]);
Exibe: "10|50 |30".


Exemplo de array Bidimencional:
pawn Code:
new MinhaArray[20][15];
Manipulando:
pawn Code:
MinhaArray[0][1] = 20;
MinhaArray[5][9] = 5;

Mostrando:
pawn Code:
printf("%d | %d", MinhaArray[0][1], MinhaArray[5][9]);

Exibe: "20| 5".



Arrays de uma dimensгo:


Exemplo de uma array normal(uma dimensгo):
pawn Code:
new MinhaArray[100];

Manipulando:
pawn Code:
MinhaArray[0] = 50;
MinhaArray[97] = 87;

Mostrando:
pawn Code:
printf("%d, %d", MinhArray[0], MinhaArray[97]);
Exibte: "50, 87".


Cuidado ao acessar uma dimensгo que nгo existe!
pois darб erro ou possнveis crashs!













Funзхes:
Bom, existe 2 tipos de funзхes, as funзхes nativas e as funзхes nгo-nativas,
irei explica-las:


As funзхes nativas sгo as que vem juntamente com a packpage do SA-MP,
nelas vocк pode encontrar funзхes que podem manipular o servidor totalmente,
sendo a maioria com parвmetros.

Nessas funзхes podemos formar um exemplo de usagem:
pawn Code:
Kick(playerid); // Expulsa o player do servidor
Como vocк pode notar esta funзгo "Kick" tem o parвmetro "playerid",
mais note-se que ao adicionar mais um parвmetro o pawno returnarб
hб um erro, este erro й comum, entгo preste bem a atenзгo ao usar
uma funзгo da qual nгo saiba os parвmetros, caso tiver dъvidas, procure
o comando na Wiki.sa-mp que fala sу sobre funзхes nativas.



As funзхes nгo-nativas sгo as que nгo vem com a packpage do sa-mp,
entгo vocк tem que cria-las, pois elas sгo funзхes prуprias, cбlculos,
etc...

Entгo as funзхes que nгo existe na biblioteca do sa-mp sгo denomiadas
de nгo-nativas, mais lembrando que se jб estiver criado uma funзгo com
mesmo nome da outra com certeza returnarб hб erro, entгo vamos hб obra:




Mais eai, como criar funзхes ?
Para criar funзхes extras, basta seguir a seguinte fуrmula:
pawn Code:
stock MinhaFuncao(numero, texto[], Float:NumerosFlutuantes){
    printf("[%d]%s ele й  %.1f", numero, texto, Float:NumerosFlutuantes);
}
A funзгo acima pode ser testada utilizando da seguinte maneira:
pawn Code:
MinhaFuncao(20,  "Oi, Este й um tutorial do SuYaNw Dбcio", 10.0);
Esta funзгo exibe:"[20]Oi, Este й um tutorial do SuYaNw Dбcio ele й 10.0"

Mбs Garfield, como podemos fazer funзхes com este pequeno exemplo ?
Simples, irei mostrar um exemplo umpouco mais extenso,


pawn Code:
stock ContarCaracteresNaFrase(frase[]){ // Note que usei "[]" para indicar texto/string, olhe a tabela abaixo.

    new Caracteres; // Cria uma variбvel para armazenar a quantidade de letras.
   
    Caracteres = strlen(frase); // Seta a variбvel "Caracteres" para quanditade de letras da "frase[]" utilziando a funзгo strlen.
   
    return Caracteres; // Returna a quantidade de letras.
}
Como vocк pode notar na funзгo ela conta quantos caracteres foram achados na frase,
na funзгo explicadas todas as funзхes de cada linha.

Para testa-la, use:
pawn Code:
printf("Esta frase tem %d letra(s)", ContarCaracteresNaFrase("SuYaNw Lindo"));


Tabela de tags para usar em funзхes:
Tag UsoFunзгo
Float[/d] stock MinhaFuncao(Float: vida)Serve para nъmeros flutuantes
Text[/d] stock MinhaFuncao(Float: Text)Serve para manipular textdraws
Menu[/d] stock MinhaFuncao(Float: Menu)Serve para manipular menus
Text3D[/d] stock MinhaFuncao(Float: Text3D)Serve para manipular textos 3d
Bom essas tags sгo as mais usadas, claro que existem mais mais as mais
usadas estгo citadas acima.

Utilizando Referкncia em funзхes, bom, este й um pouco mais elevado, precisa de uma grande
atenзгo para aprender esta parte, entгo vamos lб:

Oque sгo referкncias ?
Referкncias sгo referencia de uma variбvel ou array que nгo mudam de valor, ou seja, elas sу
mudam dentro da funзгo executada, e apуs isto elas voltam ao valor original por exemplo:

pawn Code:
stock Multi(&Soma){
    return Soma * 2;
}
Pode-se notar que esta funзгo apenas multiplica a Soma vezes 2.

Quando usamos uma variбvel para utilizar a funзгo criada, ela nгo serб modificada globalmente,
somente localmente, veja os exemplos:


pawn Code:
new MinhaVariavel = 2; // criei uma variбvel simples com o valor 2.
printf("Multiplicado: %d", Multi(MinhaVariavel)); // Exibe a soma de 2 x 2 = 4.

Todos nуs sabemos se fosse uma funзгo normal o valor de MinhaVariavel teria
modificado, mais como й por referкncia, isto nгo ocorre.

E ao imprimir o valor da nossa variбvel returnarб o valor 2 novamente.
pawn Code:
printf("Valor: %d", MinhaVariavel);
Imprimirб valor 2.













Callbacks:
Bom, essa й a parte que meche na estrutura do script, ela й responsбvel por
manipulamento da grande parte da maioria do servidor, sгo nelas que sгo
chamados todos os eventos do servidor, e agora vocк saberб manipula-las.

As callbacks sгo chamadas quando ocorre algum evento no servidor(como
dito antes), para explicar melhor vamos pegar a callback "OnPlayerConnect",
Essa callback й chamada quando o player conecta, ao player conectar tudo
que estiver nesta callback й executada.

Mais eai, como crio uma callback ?
Й muito fбcil, basta seguir a seguinte fуrmula:
pawn Code:
forward nome_callback(parametros);

public nome_callback(parametros)
{
    return true;
}
Somente lembrando que as callbacks nгo suportam retornar strings, entгo
qualquer tentativa resultarб em erro. E tambйm que se tentar criar uma callback
sem declarar resultarб em erro tambйm.

E sobre Funcionalidade, ela й basicamente a mesma coisa que uma "Funзгo",
somente a diferenзa que nгo returna strings.













Expressхes:
Eu acho esta parte mais essencial para programaзгo em geral, por iso vocк
tem que entender bem e se esforзar, pois nela que vocк aprenderб a manipular
nъmeros.

Bom, vamos aprender primeiramente as expressхes matemбticas, das quais
nуs usamos para calcular nъmeros, elas sгo:

ExpressгoExplicaзгo
++Usado para incrementar que serб sempre +1
--Usado para decrementar que serб sempre -1
*Usado para multiplicar
/Usado para dividir
+=Adiciona um valor hб sua variбvel
-=Retira um valor de sua variбvel
*=Multiplica um valor para sua variavel
/=Divide um valor para sua variбvel

Uso:
pawn Code:
Variavel ++; // Adiciona +1 hб nossa variбvel;
Variavel --; // Remove -1 da nossa variбvel;
Variavel = (2 * 2); // Seta o valor da variavel para 4 (2*2);
Variavel = (2 / 1); // Seta o valor da variavel para 2 ( 2 / 1 = 1);
Variavel += 2 ;// Adiciona +2 em nossa variбvel;
Variavel -= 2; // Remove -2 de nossa variбvel;
Variavel *= 2; // Multiplica por 2 a nossa variбvel;
Variavel /= 2; // Divide por 2 a nossa variбvel;

Essas sгo as expressхes matemбticas, e agora vamos as expressхes
de condiзхes:

ExpressгoExplicaзгo
>Maior que
<Menor que
>=Maior ou igual que
<=Menor ou igual que
!=Diferente de
==Igual que
Uso:
pawn Code:
if(Variavel > 10)// Verifica se a Variavel й maiorque 10;
if(Variavel < 10)// Verifica se a Variavel й menor que 10;
if(Variavel >= 10)// Verifica se a Variбvel й maior ou igual hб 10;
if(Variavel <= 10)// Verifica se a Variбvel й menor ou igual hб 10;
if(Variбvel != 10)// Verifica se a Variбvel й diferente de 10;
if(Variбvel == 10)// Verifica se a variбvel й igual hб 10.


Agora vamos falar um pouco sobre os operadores lуgicos:
que sгo eles:
OperadorSignificado
||Ou
&&E

Os operadores lуgicos || e && sу tem uma explicaзгo, e sгo
sempre utilizados em condiзхes, vamos hб explicaзгo primeiro:

Operador ||:
Este operador verifica mais de uma condiзгo, se uma delas for
verdadeira a condiзгo returna true, veja o exemplo:
pawn Code:
if(Variavel == 10 || Variavel == 20) / /Verifica se a Variavel й igual б 10 OU igual б 20



Operador &&:
Este operador й diferente do decima, ele verifica se todos as condiзхes
contidas sгo verdadeiras:
pawn Code:
if(Variavel == 10 && Variavel < 20) //Verifica se a Variavel й igual hб 10 e menor que 20, caso esta condiзгo estiver verdadeira ele executa oque estб abaixo.


Acho que nгo precisa mais explicar sobre o assunto, porque o mesmo estб claro.













Looping:
O Looping й uma repetiзгo com condiзхes diferentes(as vezes) mais na grande maioria
ele serve para fazer repetiзхes das quais nгo precisamos ficar chamando a mesma funзгo
vбrias vezes.

Por exemplo, queremos exibir o nome SuYaNw no console 10 vezes, como fizemos ?

Jeito errado:
pawn Code:
printf("SuYaNw");
printf("SuYaNw");
printf("SuYaNw");
printf("SuYaNw");
printf("SuYaNw");
printf("SuYaNw");
printf("SuYaNw");
printf("SuYaNw");
printf("SuYaNw");
printf("SuYaNw");
Assim imprimirб, mais seria um desperdнcio de linhas, usando Loop seria assim:
pawn Code:
for(new i; i != 10; ++i){
    printf("SuYaNw");
}
Viu ?

Explicaзгo:
O Looping for tem uma formula muito fбcil de manipular, irei explicar:


Looping FOR:
Como no exemplo abaixo, ele cria a variбvel i e depois verifica se i != de 10,
caso for diferente de 10 ele vai adicionando +1( usando incrementaзгo ++),
e se a variбvel i chegar ao valor 10 o loop para automaticamente

Lembrando que o 10 й o nъmero de vezes que o loop serб executado
pawn Code:
for(new i; i != 10; ++i){

}


O mesmo efeito usando outro tipos de loopings:

Looping: While

Bom, o loop while й parecido com o FOR, sу que tem que criar separadamente as funзхes,
veja:
pawn Code:
new i; // criamos a variбvel i

while(i != 10){ // verificamos se i й diferente de 10


   printf("SuYaNw");

    i ++; // incremente a variбvel i  + 1.
}

Looping: Do..While

Este sistema de loop й parecido com o de cima,

pawn Code:
new i; // criando a variбvel i.

do{
    printf("SuYaNw");
     
     i ++;
};
while(i != 10);
*Note que as funзхes vгo acima e abaixo vai a condiзгo do looping.




Bom por enquanto й isto, entгo por favor, aguardem a segunta parte para vocкs "Manipular"
oque vocкs aprenderam neste tutorial.
Reply
#2

Reservado.
Reply
#3

Reservado pro Suyan
Reply
#4

Constantes podem armazenar floats e negativos.

PHP Code:
const Float:fuck = -1.00
Boa iniciativa gatu, vai ajudar uns cara. -q
Reply
#5

Quote:
Originally Posted by leonardo1434
View Post
Constantes podem armazenar floats e negativos.

PHP Code:
const Float:fuck = -1.00
Exatamente o que eu disse via-messenger. Mas ele jб editou.

Dei uma lida por cima, jб te informei o que tinha de errado. Se eu encontrar algo aviso.


Tirando isto, УTIMO tutorial, vai ajudar os novatos-chatos que ficam me enxendo saco por messenger e skype (sim essa mensagem й pra vocк)
Reply
#6

Boa iniciativa, ira ajudar bastante gente. E como me ajudo tambem
Reply
#7

Parece que ficou уtimo, pagabens gatu
Reply
#8

Parabйns, Muito Bom
Irб ajudar muitos
Reply
#9

Nгo deu pra ler tudo mas so o que eu vi , vai ajudar muitos novatos.
Reply
#10

Quote:
Originally Posted by mau.tito
View Post
Nгo deu pra ler tudo mas so o que eu vi , vai ajudar muitos novatos.
ei me passa seu skype ae pf quero fazer umas encomendas se der e eu pago
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)