SA-MP Forums Archive
[Tutorial] Laзo do...while - 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] Laзo do...while (/showthread.php?tid=265911)



Laзo do...while - crush_ - 02.07.2011

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


Re: Laзo do...while - steki. - 02.07.2011

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" ) );



Re: Laзo do...while - crush_ - 03.07.2011

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


Re: Laзo do...while - RockFire - 03.07.2011

Milk ? KKKKKKKKKKKKKKKKKKKK

Gostei muito do tutorial


Re: Laзo do...while - crush_ - 03.07.2011

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

Gostei muito do tutorial
Valeu ._.

Sim, eu gosto de chamar ele de milk xD


Re: Laзo do...while - CyNiC - 03.07.2011

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.


Re: Laзo do...while - crush_ - 03.07.2011

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...


Re: Laзo do...while - URSS_Morelli - 03.07.2011

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


Re: Laзo do...while - Falcon. - 03.07.2011

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.


Re: Laзo do...while - crush_ - 03.07.2011

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.