SA-MP Forums Archive
[Tutorial] Usando Break & Continue - 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] Usando Break & Continue (/showthread.php?tid=253339)



Usando Break & Continue - Josma_cmd - 06.05.2011

Necessбrio entender sobre Loop: https://sampforum.blast.hk/showthread.php?tid=195395

Break
Break's sгo usados em Loop's, podendo parar o processo do mesmo.
loop faz uma conta rбpida de um numero a outro, exemplo: de 0 a 500, com o Break vocк poderб parar essa conta em qualquer numero entre 0 e 500...

Exemplo:
pawn Код:
new string[20];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(i == GetMaxPlayers())
        {
            format(string, sizeof(string), "Slots: {1E90FF}%d", i);
            SendClientMessageToAll(Branco, string);
            break;
        }
    }
Esse Loop vai fazer a conta de 0 a 500(que й o valor mбximo de slots), porem, quando o (i) que й a variбvel criada no loop chegar ao numero mбximo de slots(do servidor) ele irб formatar uma string e mandar uma mensagem para todos com o numero de slots do servidor. Apуs isso, irб parar o loop usando break.

Jб se vocк mudar a ordem do cуdigo, colocando o format e o SendClientMessage fora das chaves do if que compara a variбvel do loop com o numero mбximo de slots, ele terб um resultado diferente.

Exemplo de como ficaria o cуdigo:
pawn Код:
new string[20];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(i == GetMaxPlayers())
        {
            break;
        }
        format(string, sizeof(string), "Slots: {1E90FF}%d", i);
        SendClientMessageToAll(Branco, string);
    }
No exemplo acima, ele nгo mandaria o resultado obtido e sim todos os resultados durante o progresso da conta, em um servidor de 3 slots por exemplo ele mandaria vбrias mensagems com a seguinte string:

pawn Код:
0
1
2
Essa ordem ainda pode ser alterada, colocando o format e o SendClientMessage acima do if que contem o break, ficando assim:

pawn Код:
new string[20];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        format(string, sizeof(string), "Slots: {1E90FF}%d", i);
        SendClientMessageToAll(Branco, string);
        if(i == GetMaxPlayers())
        {
            break;
        }
    }
O resultado nesse caso seria:
pawn Код:
0
1
2
3
4
5
Continue
Da mesma forma que а uma funзгo que pare um loop tambйm а uma que faзa ele continuar, e o nome й bem apropriado. continue. O continue pode ser usado para pular um ou mais numeros no loop, exemplo:

pawn Код:
new string[20];
    for(new i = 0; i < 5; i++)
    {
        if(i == 3)
        {
            continue;
        }
        format(string, sizeof(string), "Slots: {1E90FF}%d", i);
        SendClientMessageToAll(Branco, string);
    }
    return 1;
    }
Neste exemplo, estariamos fazendo a conta com o resultado mбximo de 5(que supostamente seria o numero de slots) entгo, o continue faria o loop pular o numero 3, o resultado seria esse:

pawn Код:
0
1
2
4
Para pular mais de um numero й simples, vocк sу precisa usar operadores ">, &&, <"
pawn Код:
new string[20]
    for(new i = 0; i < 10; i++)
    {
        if(i > 3 && i < 7)
        {
            continue;
        }
        format(string, sizeof(string), "Slots: {1E90FF}%d", i);
        SendClientMessageToAll(Branco, string);
    }
    return 1;
    }
Neste caso, ele pularia apуs o numero 3 e antes do numero 7, tendo o resultado:

pawn Код:
0
1
2
3
7
8
9
Bom, fiz este tutorial bбsico por que ao fazer a lista de tutoriais notei que nгo hб nenhum tutorial sobre o assunto, apesar de ser uma coisa simples, por nгo haver muitos lugares com informaзхes algumas pessoas nгo sabem que utilidade pode ter Break e Continue, entгo ai estб =)


Re: Usando Break & Continue - JOKERBOY - 06.05.2011

Paraabйens JOSMA!!


Re: Usando Break & Continue - CyNiC - 06.05.2011

Bom tutorial, recursos super importantes que devem estar em mente a todo momento.
Vale lembrar que return e goto tambйm param o loop, jб vi gente dizendo por ai que usando return em vez de break o loop nгo para.


Re: Usando Break & Continue - Chainksain - 06.05.2011

estб bem explicado porйm acho que break e continue sу se faz realmente necessбrio qdo se utiliza o switch, nгo que este nгo possa ser utilizado de outra formas...


Re: Usando Break & Continue - faeldk - 06.05.2011

Esse break para o processo do loop quando ele chega ao resultado?
Por exemplo se eu tivesse 50 Slots no meu server quando chegasse no 50 ele pararia o calculo certo?
Entгo quando nгo tem o break ele faz os calculos atй 500 mesmo ja achando o resultado?


Re: Usando Break & Continue - steki. - 06.05.2011

Esse negocio do return no loop й uma coisa que me fez derrubar cafe nas pernas, parabens.


Re: Usando Break & Continue - Chainksain - 06.05.2011

Quote:
Originally Posted by faeldk
Посмотреть сообщение
Esse break para o processo do loop quando ele chega ao resultado?
Por exemplo se eu tivesse 50 Slots no meu server quando chegasse no 50 ele pararia o calculo certo?
Entгo quando nгo tem o break ele faz os calculos atй 500 mesmo ja achando o resultado?
a resposta й sim, e isto pode tbm contribuir para o lag no servidor, loops q nгo param enquanto nгo acabam muitas vezes inutilmente "roubam" memуria de processamento da maquina que poderia estar sendo utilizado de outra forma


Re: Usando Break & Continue - [S]trong - 06.05.2011

Isso vai depender do seu max_players nй cara, se vocк definer seu max_players a 20 o loop vai parar no 20, se vocк definir o seu max_players a 1 o loop para em 1 e assim vai,o loop nгo necessariamente checa 500 vezes, mais sim quantas vezes ele for colocado para checar, digamos que colocaremos ao loop para sua checagem chegar a 40
pawn Код:
for (new x; x < 40; x ++)
ele vai dar "stop" em 40 e nгo em 500 e й claro vocк pode substituir este 40 ou o MAX_PLAYERS no seu loop para GetMaxPlayers() assim ele vai parar no nъmero de slots do seu servidor.


Re: Usando Break & Continue - JonathanFeitosa - 06.05.2011

Bom, "Gosma"


Re: Usando Break & Continue - The Knight - 06.05.2011

Gostei, bom tutorial e bem explicado.