Tutorial
Usando Loops (Avançado)
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:
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
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:
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
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
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
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
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:
Code:
for(; print("Loop Infinito");
Code:
while(true) print("Loop Infinito");
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.