[Tutorial] Laзo do...while
#1

Olб pessoal, bom, nгo encontrei nenhum tutorial deste tema aqui, entгo lб vai:


Do...While

Do...while й um laзo de repetiзгo como For e While, eu ainda nгo vi alguem usa-lo entгo vim aqui mostrar a vocкs como funciona.

Sintaxe:

A sintaxe й bem simples:

pawn Код:
do
{
        // Instruзхes
}
while(/* Condiзгo */);
Perceba que o while( ) termina com ; Nгo se esqueзam!

Exemplo de uso:

Bom, antes de dar um exemplo de uso, vamos deixar algumas coisas bem claras:

Quando vocк usa o do vocк irб abrir { e fechar }

O que isto quer dizer?

Vocк nгo poderб fazer isto:

pawn Код:
do
{
        new i=-1;
        i++;
}
while(i<MAX_PLAYERS);
Pois quando vocк fechar as chaves, a variavel i nгo existirб mais!

Recomendo deixar esse tipo de variavel para repetiзхes como uma variavel global ou que esteja dentro de um corpo do cуdigo. Por exemplo:

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/servermaxplayers", cmdtext, true, 10) == 0)
    {
        new i=-1;
        do
        {
            i++;
        }
        while(i<GetMaxPlayers());
        return 1;
    }
    return 0;
}
Obs: Eu apenas usei o -1, pois o Do pula o jogador com o ID 0!

Algumas explicaзхes:

Do do inglкs para o portuguкs, significa Fazer
While do inglкs para o portuguкs, significa Enquanto

Com essa explicaзгo, vocк vai entender melhor!

Veja:

pawn Код:
Fazer // Do
{
         Incrementar variavel i; // i++;
}
Enquanto(Variavel i for < que o nъmero mбximo de jogadores); // While(i<MAX_PLAYERS);
Outro exemplo de uso:
pawn Код:
#include <a_samp>
forward CheckPing();

public OnFilterScriptInit()
{
        SetTimer("CheckPing", 1000, true);
        return 1;
}

public CheckPing()
{
        new i=-1;
        do
        {
            i++;
            if(IsPlayerConnected(i) && GetPlayerPing(i) > 200)
            {
                SendClientMessage(i, 0x000080FF, "Ajuste sua conexгo!");
                Kick(i);
            }
        }
        while(i<MAX_PLAYERS);
}
Crйditos:

- Crush
Reply
#2

Maneiro ^^

Eu usei isso pro meu emprego de Lixeiro pra pegar checkpoints random.

pawn Код:
new r;
        do
        {
            r = random(11);
        }
        while( r == GetPVarInt( playerid, "ProximaLixeiraInfo" ) );
Reply
#3

Quote:
Originally Posted by Luнs Miki
Посмотреть сообщение
Maneiro ^^

Eu usei isso pro meu emprego de Lixeiro pra pegar checkpoints random.

pawn Код:
new r;
        do
        {
            r = random(11);
        }
        while( r == GetPVarInt( playerid, "ProximaLixeiraInfo" ) );
Valeu milk
Reply
#4

Milk ? KKKKKKKKKKKKKKKKKKKK

Gostei muito do tutorial
Reply
#5

Quote:
Originally Posted by feliperch
Посмотреть сообщение
Milk ? KKKKKKKKKKKKKKKKKKKK

Gostei muito do tutorial
Valeu ._.

Sim, eu gosto de chamar ele de milk xD
Reply
#6

Uma coisa importante, o loop estб passando pelo -1, se estiver trabalhando com arrays e fazer um loop tentar acessar a cйlula -1, irб causar problemas em seu servidor, ou atй crasha-lo.
Reply
#7

Quote:
Originally Posted by CyNiC
Посмотреть сообщение
Uma coisa importante, o loop estб passando pelo -1, se estiver trabalhando com arrays e fazer um loop tentar acessar a cйlula -1, irб causar problemas em seu servidor, ou atй crasha-lo.
Sim, o unico motivo que eu usei -1, era pq o Do tava pulando o id 0...
Reply
#8

Muito bom @crush_ . Isso vai para o Blog que sou postador e irб fazer sucesso!
Reply
#9

Olб URSS_Morelli.

Recomendo que leia as Regras.

** Nгo й permitido fazer propagandas, sejam elas relacionadas a SA-MP ou nгo. Use sua assinatura para anъnciar.


=============================================

Ficou explicativo o tutorial, bom trabalho.


Atenciosamente,
Falcon.
Reply
#10

Quote:
Originally Posted by URSS_Morelli
Посмотреть сообщение
Muito bom @crush_ . Isso vai para o Blog que sou postador e irб fazer sucesso!
Obrigado, tudo bem, pode postar lб... mas nгo esqueзa os credits :P

Obs: Falcon jб disse tudo nй?

Quote:
Originally Posted by Falcon.Sixe
Посмотреть сообщение
Olб URSS_Morelli.

Recomendo que leia as Regras.

** Nгo й permitido fazer propagandas, sejam elas relacionadas a SA-MP ou nгo. Use sua assinatura para anъnciar.


=============================================

Ficou explicativo o tutorial, bom trabalho.


Atenciosamente,
Falcon.
Vlw Falcon.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)