[Tutorial] Usando Loops (Avanзado)
#1

Tutorial
Usando Loops (Avanзado)

Нndice
  • Oque й um Loop?
  • Porque usar Loop?
  • Formas de usar um Loop.
    for
    while
    do
  • Funзхes para usar em Loops.
    break
    continue
    goto
    sleep
  • FAQ
  • Crйditos.



O que й um Loop?

Loop, й uma forma de dar 'voltas' sobre um valor, uma diretiva, uma variбvel, dentre outras. O Loop vai ficar dando 'voltas' na funзгo definida atй ele ser pausado, chegar ao final, ou achar um valor definido.


Porque usar um Loop?

Geralmente, um loop й usado para procurar um valor dentro uma funзгo. Mas, ele tem muitas outras utilidades, que serб explicada no decorrer deste tutorial.


Formas de usar um Loop.

Atualmente, sу tem trкs formas padrхes do SA:MP de criar loops. Elas sгo: for, do, while.
Existem outras como o foreach do Y_Less.

  • Exemplos de como usar um loop for:

    O for й o loop mais conhecido e mais usado, ele й o mais simples e pode ser usado em qualquer ocasiгo, sem restriзхes, desde que seja necessбrio.

    Exemplo:
    pawn Code:
    for(new Lp; Lp < 10; Lp++)
    {
        printf("%i", Lp);
    }
    Explicaзгo: O Loop vai dar voltas na variбvel Lp, enquanto ela for menor que 10, que й o valor colocado para o Loop dar voltas.

    Desta forma, o Loop vai nos 'printar' em nosso console:
    Code:
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Ele inicia-se do 0 porque as variбveis, de padrгo, se inicia em 0 e sу vai acabar quando a variбvel Lp for menor do que 10, sendo assim, 9.

  • Exemplos de como usar um loop while:

    O while й um loop e um auxiliar, ele tanto serve para executar-se independente, como para auxiliar o loop do a fazer sua execuзгo. O while, diferente do for, nгo pode definir uma variбvel dentro de si, para executar um loop sob ela, a variбvel deve ser definida antes dele ser executado.

    Exemplo
    pawn Code:
    new i;
    while(i < 10)
    {
        printf("%i", i);
        i++;
    }
    Explicaзгo: O Loop vai dar voltas na variбvel i, enquanto ela for menor que 10, que й o valor colocado para o Loop dar voltas.

    Desta forma, o Loop vai nos 'printar' em nosso console:
    Code:
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Ele inicia-se do 0 porque as variбveis, de padrгo, se inicia em 0 e sу vai acabar quando a variбvel i for menor do que 10, sendo assim, 9.

  • Exemplos de como usar um loop do:

    O do й um loop, porйm, ao contrбrio do for e do while, que sгo independentes para se executar, o do, precisa do while para verificaзгo e execuзгo.

    Exemplo:
    pawn Code:
    new a;
    do
    {
        printf("%i", a);
        a++;
    }
    while(a < 10);
    Explicaзгo: O Loop vai dar voltas na variбvel a, enquanto ela for menor que 10, que й o valor colocado para o Loop dar voltas.

    Desta forma, o Loop vai nos 'printar' em nosso console:
    Code:
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Ele inicia-se do 0 porque as variбveis, de padrгo, se inicia em 0 e sу vai acabar quando a variбvel a for menor do que 10, sendo assim, 9.

Funзхes para usar em Loops.

Atualmente, sу tem quatro funзхes padrхes do SA:MP que possam, parar, ir, pular e pausar um Loop. Porйm, o Pawno, nгo й amplo o bastante para que a funзгo de 'pausar' seja executada com sucesso, atualmente ela faz parar. (Em meus testes ela faz parar e nгo pausar um loop, se eu estiver usando errado, me corrijam).

Vou dar todos os exemplos no loop for, porйm podem ser usados em todos loops.
  • Como usar o break
    pawn Code:
    for(new i; i < 10; i++)
    {
        if(i == 5) break;
        printf("%i", i);
    }
    Explicaзгo: O Loop vai dar voltas na variбvel i, e se(if) ela for igual a 5, ele vai executar o break.

    Desta forma, o Loop vai nos 'printar' em nosso console:
    Code:
    0
    1
    2
    3
    4
    Pois, ela vai partir de 0 atй 5, quando chegar em 5, vai executar o break e vai parar a execuзгo, porйm, nгo vai executar o 5, porque o loop jб vai estar parado.

  • Como usar o continue

    pawn Code:
    for(new i; i < 10; i++)
    {
        if(i == 5) continue;
        printf("%i", i);
    }
    Explicaзгo: O Loop vai dar voltas na variбvel i, e se(if) ela for igual a 5, ele vai executar o continue.

    Desta forma, o Loop vai nos 'printar' em nosso console:
    Code:
    0
    1
    2
    3
    4
    6
    7
    8
    9
    Pois, ela vai partir de 0 atй 5, quando chegar em 5, vai executar o continue e vai continuar a execuзгo a partir de 5 atй chegar em 9 que й o valor menor que 10(que foi pedido para executar).

  • Como usar o goto

    pawn Code:
    for(new i; i < 10; i++)
    {
        Inicio: // Indica o inicio do loop
        if(random(5) == 0) i = 1; // Se o random(5) for igual a 0, ele vai setar a variбvel i para 1
        else i = 0; // Ou se o random(5) for igual a 1, 2, 3, 4 ou 5, ele vai setar a variбvel i para 0
        if(i == 1) // Se a variбvel i for igual a 1
        {
            print("A variбvel i й Verdadeira"); // Vai printar no console "A variбvel i й Verdadeira"
            goto Final; // E vai ir para o final, ou seja, vai acabar o loop.
        }
        else // Ou se a variбvel i for igual a 0
        {
            print("A variбvel i й Falsa"); // Vai printar no console "A variбvel i й Falsa"
            goto Inicio; // E vai ir pro inicio, girando o loop denovo, atй a variбvel i for igual a 1 e ir atй o final do loop.
        }
    }
    Final: // indica o final do loop.
    Explicaзгo: Estб nos comentбrios acima.

    Desta forma, o Loop vai nos 'printar' em nosso console, algo como isso(depende da sorte do random):
    Code:
    A variбvel i й Falsa
    A variбvel i й Falsa
    A variбvel i й Falsa
    A variбvel i й Falsa
    A variбvel i й Falsa
    A variбvel i й Verdadeira
    Pois, ela vai fazer o random, e quando o random atingir o nъmero 0 vai setar para a variбvel i o valor 1(verdadeiro) e vai parar o loop, porque vai ir(goto) atй o final, mas, se o random nгo for igual a 0, ele vai setar o valor 0 para a variбvel i, e vai ir(goto) atй o inicio, fazendo o loop girar novamente atй o random ser igual a 0 que vai setar o valor 1 para a variбvel i, assim, finalizando o loop.

  • Como usar o sleep

    pawn Code:
    for(new i; i < 10; i++)
    {
        if(i == 5) sleep(1000);
        printf("%i", i);
    }
    Explicaзгo: Era para girar o loop atй chegar no 5, e quando chegasse no 5, pausar o loop por 1 segundo(em milessegundos), porйm a estrutura do Pawno, nгo nos permite isso, e estб parando o loop.

    Desta forma, o Loop vai nos 'printar' em nosso console:
    Code:
    0
    1
    2
    3
    4

FAQ.

Pergunta: Eu jб sabia disso tudo
Resposta: Entгo, ignore tudo, nгo preciso saber disso.

Pergunta: Como criar um Loop infinito?
Resposta: Simples:

pawn Code:
for(;;) print("Loop Infinito");
pawn Code:
while(true) print("Loop Infinito");
pawn Code:
do
{
    print("Loop Infinito");
}
while(true);
Porйm, todas irб dar um ou dois warnings, mas, serб loop infinito.



Crйditos.
  • DreeH - Criaзгo total do tutorial.
  • Wiki SA:MP - A maioria do tutorial foi tirado de lб.
  • SA:MP Team.

Se ficou mais alguma dъvida, poste abaixo, que tentarei resolver.
Reply


Messages In This Thread
Usando Loops (Avanзado) - by DreeH - 16.10.2011, 19:48
Re: Usando Loops (Avanзado) - by Dolby - 16.10.2011, 19:56
Re: Usando Loops (Avanзado) - by DreeH - 16.10.2011, 19:57
Re: Usando Loops (Avanзado) - by raeu - 16.10.2011, 19:58
Re: Usando Loops (Avanзado) - by [O.z]Caroline - 16.10.2011, 19:58
Re: Usando Loops (Avanзado) - by DreeH - 16.10.2011, 19:59
Re: Usando Loops (Avanзado) - by FireCat - 16.10.2011, 20:01
Re: Usando Loops (Avanзado) - by DreeH - 16.10.2011, 20:02
Re: Usando Loops (Avanзado) - by [O.z]Caroline - 16.10.2011, 20:02
Re: Usando Loops (Avanзado) - by DreeH - 16.10.2011, 20:04
Re: Usando Loops (Avanзado) - by FireCat - 16.10.2011, 20:06
Re: Usando Loops (Avanзado) - by DreeH - 16.10.2011, 20:12
Re: Usando Loops (Avanзado) - by [O.z]Caroline - 16.10.2011, 20:17
Re: Usando Loops (Avanзado) - by Ricop522 - 16.10.2011, 20:28
Re: Usando Loops (Avanзado) - by Josma_cmd - 16.10.2011, 20:36
Re: Usando Loops (Avanзado) - by DreeH - 16.10.2011, 20:39
Re: Usando Loops (Avanзado) - by [RoxX]Ygor - 16.10.2011, 20:39
Re: Usando Loops (Avanзado) - by DreeH - 16.10.2011, 20:41
Re: Usando Loops (Avanзado) - by Josma_cmd - 16.10.2011, 20:43
Re: Usando Loops (Avanзado) - by DreeH - 16.10.2011, 20:45
Re: Usando Loops (Avanзado) - by Josma_cmd - 16.10.2011, 20:54
Re: Usando Loops (Avanзado) - by DreeH - 16.10.2011, 20:55
Re: Usando Loops (Avanзado) - by Vai_Besta - 16.10.2011, 21:04
Re: Usando Loops (Avanзado) - by iansinho - 16.10.2011, 22:42
Re: Usando Loops (Avanзado) - by DreeH - 16.10.2011, 23:17
Re: Usando Loops (Avanзado) - by Shelby - 17.10.2011, 10:43
Re: Usando Loops (Avanзado) - by ReDKiiL - 17.10.2011, 12:46
Re: Usando Loops (Avanзado) - by DreeH - 17.10.2011, 15:14
Re: Usando Loops (Avanзado) - by oDenniS - 09.07.2016, 05:24

Forum Jump:


Users browsing this thread: 1 Guest(s)