[Tutorial] Usando Loops | Teуrica
#1

Introduзгo:

Код:
Em ciкncia da computaзгo um loop for й uma linguagem de programaзгo declaraзгo que permite que cуdigo a ser repetidamente executado. Um loop for й classificada como uma iteraзгo comunicado.
//Wikipйdia
LOOP EXISTEM EM TODA PROGRAMAЗГO (EXCETO EXOTЙRICA -q)

Ele executa repetidamente o cуdigo,resumidamente farб isto:

Loop:
pawn Код:
for(new i; i < 5; i++)
{
    printf("Oi Loop %d",i);
}
Modo de saida:

Код:
Oi Loop 0
Oi Loop 1
Oi Loop 2
Oi Loop 3
Oi Loop 4
Sem o Loop:
pawn Код:
print("Oi Loop 1");
print("Oi Loop 2");
print("Oi Loop 3");
print("Oi Loop 4");
Isto й,loops nгo otimizam o cуdigo,apenas resumem, (claro otimizando na compilaзгo, com menos linhas)

Um Loop й baseado no Valor de Array.
O Loop FOR й uma interaзгo de While.
Isto mesmo While й o Loop padrгo (no pawn) e FOR й a intereзгo de While. (isto й,com mais funзхes)

Qual a diferenca?

Simples:

While й baseado em 2 estruturas.

Код:
Condiзгo - Execuзгo
Jб o FOR й baseado em 3 Estruturas (Parametros)

array/execuзгo (opcional) - condicional - Execuзгo (ao executar o loop) (em caso de abrir 1 { irб executar o que estб dentro do mesmo)

Enquanto ao MAX_PLAYERS?

Bom sei que nгo tem nada haver com Loops mas muita gente acha (como knife) que os loops sгo usados apenas para isto.

Como todos sabem os playerid's sгo compostos por numeros comuns

Код:
0,1,2,3,4,5 [...]
Sendo assim ao executar o Loop ele faz com arrays,que sгo simbolizadas pelo id,pois elas equivalem a nъmeros normais

Quote:

Array Valor 0 = Playerid 0
Array Valor 1 = Playerid 1

Entгo chegando a conclusгo que ele executarб em 500 Valores da Array,ou seja,500 IDS. (maxplayers = 500)

Os Loops sгo usados para executar voltas (loops).

Isto й,ele faz vбrias execuзхes.

Veja aqui como podemos fazer Loops sem precisar do FOR (usando funзгo SetPlayerHealth):

Com Whiles

pawn Код:
// Loop 1
new i;
while(i < MAX_PLAYERS)
{
    i++;
    SetPlayerHealth(i,100);
}
Ou atй com Goto's

pawn Код:
// Loop 2
new i;
funcao:
if(i < MAX_PLAYERS)
{
        i++;
    SetPlayerHealth(i,100);
        goto funcao;
}
Com Execuзгo de Stock/Publics

pawn Код:
// Loop 3
new i;
stock LoopStock()
{
    if(i < MAX_PLAYERS)
    {
            i++;
            ExecutarFuncoes(i);
    }
}
stock ExecutarFuncoes(i)
{
        SetPlayerHealth(i,100);
    LoopStock();
}
Existem outras milhares de formas,do,while,goto,publics,stocks,functions,upda tes,timers.
E outras gabiarras para Loop,espero que tenham gostado Bjokas

Bom chegamos ao fim do Tutorial,espero que tenham entendido e tirado uma visгo certas sobre os loops (nй knife).


TUTORIAL CRIADO POR DRAKINS | PROJETO FEK SQUAD| SEM PUBLICAR EM TEU BLOG
Reply
#2

Muiitнssimo bom DraKinS (:


Ele й tipo "repeat" e "while" em Pascal (.pas)?

@EDIT

Na verdade ele й while *--*
Reply
#3

legal <3

queria deixar uma coisa clara pro povгo que faz cуdigo assim:

pawn Код:
for(new fdp; fdp < 500; fdp++)
{
    if(IsPlayerConnected(fdp))
    {
        SetPlayerHealth(fdp, 100.0);
        return 1;
    }
}
Isso ta meio deso(p)timizado. Acontece que todas as funзхes que fazem algo com jogadores jб tem um IsPlayerConnected embutido, mas nгo significa que elas usam essa funзгo, elas simplesmente checam por si mesmas, portanto o resultado й cуdigo redundante. O melhor jeito pra fazer isso seria:

pawn Код:
for(new fdp; fdp < 500; fdp++) return SetPlayerHealth(fdp, 100.0);
funciona do mesmo jeito, sу que ta mais optimizado.
Reply
#4

so mais o usar o foreach
Reply
#5

Tutorial Very Good....
Reply
#6

Gustavob,isto ai que tu fez nгo otimizou nada,usou funcao da mesma forma,e alйm do mais como setarб vida de um player que ao existe?
Reply
#7

Drakon, se as funзхes de player jб checam por si sу se o player existe antes de fazer o que ela estб designada а fazer, ela nao vai setar a vida do player "fdp" se ele nгo existir, nй?
isso foi confirmado por ****** em um tуpico dele que eu vou traduzir amanha se eu lembrar (ele ja deixou)
Se eu nao usar o IPC, vou economizar o uso de uma funзao e portanto optimizar o cуdigo
Reply
#8

Quote:
Originally Posted by Gustavob
Посмотреть сообщение
Drakon, se as funзхes de player jб checam por si sу se o player existe antes de fazer o que ela estб designada а fazer, ela nao vai setar a vida do player "fdp" se ele nгo existir, nй?
isso foi confirmado por ****** em um tуpico dele que eu vou traduzir amanha se eu lembrar (ele ja deixou)
Se eu nao usar o IPC, vou economizar o uso de uma funзao e portanto optimizar o cуdigo
Sim isto que fala й verdade,atй porque se usar uma funcao como SetPlayerHealth em um loop,nгo й necessбrio usar PlayerConnected,pois daria na mesma.
Reply
#9

e se por exemplo... eu usar "return 1;"...
ele para de fazer os loops?tipo ta checando tipo se um player tem merda nas calзa, dai ele testa todos, dai vamos dizer que no 333 jogador, ele ve que o cara tem merda nas calзa, ele para de checa se eu botar um "return 1;" ?
Reply
#10

Perfect Drakins !
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)