SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 12 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

    [Tutorial] Estruturas Condicionais

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11378
    Moedas : 1031978
    Data de inscrição : 06/10/2011
    Idade : 28
    Localização : Brasil

    [Tutorial] Estruturas Condicionais Empty [Tutorial] Estruturas Condicionais

    Mensagem por Weslley_Script Sáb 13 maio 2023 - 7:53

    [size=32]Estruturas Condicionais[/size]
    Introduзгo

    - Condicionais
    • O que sгo?

    • Sгo ъteis?

    • Quando usб-las


    if
    • Ao pй da letra

    • Como usar

    • Exemplos


    else
    • Ao pй da letra

    • Como usar

    • Exemplos



    else if
    • Ao pй da letra

    • Como usar

    • Exemplos


    - Operadores Ternбrios
    • O que sгo?

    • Como Usar

    • Exemplos


    Condicionais

    - O que sгo?

    Condicionais sгo, como o nome diz, condiзхes para que determinados comandos ou funзхes funcionem ou nгo. Assim como muitas vezes na vida real precisamos que determinadas coisas aconteзam para que outras

    possam acontecer, o mesmo acontecem em Pawn. Dentro de uma condiзгo temos a condiзгo em si, o retorno dela (opcional), e o que acontece se ela for cumprida ou nгo.

    - Sгo ъteis?

    Mais que ъteis, assim como as variбveis, sгo essenciais para qualquer um que queria aprender a programar. Sem as condiзхes fica impossнvel ou muito difнcil criar alguma coisa que tenha uma restriзгo, como comandos

    reservados apenas para admins, ou para determinada classe do Game Mode, ou simplesmente uma quantia em dinheiro que deve ser atingida para comprar alguma coisa.

    - Quando usб-las?

    Sempre que quiser restringir ou verificar.

    If

    - Ao pй da letra

    "If" significa, em inglкs, "se", entгo seu uso fica уbvio. if (Condiзгo) seria Se (Condiзгo). Assim como todas as palavras-chave em Pawn (palavras-chaves sгo palavras que tem um sentido, digamos, especial para o compilador, como New, If, Else, For, While, entre outras), sempre que colocarmos ela em nosso script, ela ficarб azul e indicarб alguma coisa. No caso, if (Condition), essa condiзгo seria nossa restriзгo ou verificaзгo. Esses parкnteses devem ser usados com funзхes e/ou variбveis acompanhadas de um operador** ( < > == != ).

    **PS: nгo lembrava o nome correto desses negуcio, entгo vai operador mesmo [Tutorial] Estruturas Condicionais Smile

    - Como usar

    A sintaxe das condicionais sгo simples e intuitivas, como eu disse, as palavras tem uma traduзгo que deixa claro o papel delas. O if й a pincipal parte da estrutura condicional, pois ele que faz a verificaзгo. Seu uso deve ser feito de uma maneira lуgica e que atenda o objetivo.

    Os operadores sгo bem simples:
    • > Maior que

    • < Menor que

    • == Igual a

    • != Diferente de

    • ! Falso ou 0

    • >= Maior ou igual a

    • <= Menor ou igual a

    • Se nгo colocarmos nada, significa == 1 [Tutorial] Estruturas Condicionais Smile


    Tambйm sгo simples e intuitivos, e devem seguir a seguinte ordem:
    pawn Код:

    Código:
    if ( Condicao < 1 ) //Se Condicao for menor que 1
    {
        //Faзa o que estб sendo pedido aqui dentro
    }


    De uma maneira mais teуrica, toda a estrutura do if ficaria assim:
    pawn Код:

    Código:
    if ( Funcao/Variavel (Operador) Numero/Funзгo/Variavel )


    Com exceзгo do !, que ficaria:
    pawn Код:

    Código:
    if ( !Funcao/Variavel )


    - Exemplos

    Essa sessгo estб presente em todas as partes do tutorial, ela dб exemplos do uso de cada condicional explicada.
    pawn Код:

    Código:
    //Nesse primeiro exemplo, iremos restringir um comando pra quem for admin
    if ( !strcmp ( cmdtext , "/ComandoAdmin" , true ) ) //Perceba que estou utilizando ! aqui
    {
        if (IsPlayerAdmin(playerid)) //Sem colocar nada, assume == 1
        {
            SendClientMessage ( playerid , 0x00FF00FF , "Parabйns, vocк й Admin :)" ); //Vou ter que explicar o que й SendClientMessage? .-.
        }

        return 1; //Retorno do nosso if (strcmp...)
    }



    //Aqui, iremos verificar a quantidade de dinheiro do player

    Código:
    if ( strcmp ( cmdtext , "/VerificarGrana" , true ) == 0 ) //Colocar == 0 ou ! й a mesma coisa
    {

        if ( GetPlayerMoney ( playerid ) >= 2000 )
        {
            SendClientMessage ( playerid , 0x00FF00FF , "Vocк tem mais ou exatamente US$2000" );
        }

        return 1; //Retorno do nosso if (strcmp...)
    }


    Else

    - Ao pй da letra

    Else tem vбrios significados, mas o usado na programaзгo й Caso Contrбrio ou Entгo. Ele nгo funciona sem o If, mas o If funciona perfeitamente sem o Else. O Else, como o prуprio nome diz, й chamado quando a condiзгo if nгo й cumprida, entгo ele й o "oposto" do if. Usaremos essa estrutura nos comandos criamos acima.

    - Como Usar

    Imediatamente apуs o tйrmino do if. Caso seu if tenha apenas uma linha e nгo possua as chaves {}, seu else pode ter chaves, assim como se seu if tiver vбrias lnhas dentro das chaves, o else poderia ter apenas uma.
    Por exemplo:
    pawn Код:

    Código:
    if (Condicao)
            SendClientMessage ( playerid , 0xFF0000FF , "Condiзгo cumprida!" );
    else
        SendClientMessage ( playerid , 0xFF0000FF , "Condiзгo nгo cumprida!" );


    Essa estrutura precisa estar igualmente identada ao seu if correspondente, para, por exemplo, nгo receber a mensagem "Nгo й admin" quando se deveria receber "Uso do comando incorreto". Veremos mais disso nos exemplos

    - Exemplos

    Vamos continuar com os comandos criados na sessгo IF.

    Código:
    if ( !strcmp ( cmdtext , "/ComandoAdmin" , true ) ) //Perceba que estou utilizando ! aqui
    {
        if (IsPlayerAdmin(playerid)) //Sem colocar nada, assume == 1
        {
            SendClientMessage ( playerid , 0x00FF00FF , "Parabйns, vocк й Admin :)" ); //Vou ter que explicar o que й SendClientMessage? .-.
        }
        else
            SendClientMessage ( playerid , 0xFF0000FF , " Vocк nгo й admin!" );

        return 1; //Retorno do nosso if (strcmp...)
    }

    //Aqui, iremos verificar a quantidade de dinheiro do player
    if ( strcmp ( cmdtext , "/VerificarGrana" , true ) == 0 ) //Colocar == 0 ou ! й a mesma coisa
    {

        if ( GetPlayerMoney ( playerid ) >= 2000 )
        {
            SendClientMessage ( playerid , 0x00FF00FF , "Vocк tem mais ou exatamente US$2000" );
        }
        else
            SendClientMessage ( playerid , 0xFF0000FF , "Vocк tem menos que 2000" ); //Sacaram a lуgica disso ? Se ele nгo tem mais que 200, obviamente tem menos

        return 1; //Retorno do nosso if (strcmp...)


    Else If

    - Ao pй da letra

    Else If й a junзгo das estruturas estudadas anteriormente, seria algo como "Caso contrбrio e Se", e й usado com esse mesmo sentido. Й comum o seu uso quando queremos usar vбrios Else, muito ъtil em comandos com parвmetros ^^

    - Como usar

    Como foi citado, ele й a junзгo das estruturas vistas acima, entгo precisa seguir as regras de todas elas. A explicaзгo teуrica disso ficaria assim:

    pawn Код:

    Código:
    if ( Condicao )
    {
    }
    else if (Condicao2)
    {
    }
    else if (Condicao3)
    {
    }
    else //Um ъltimo else й chamado quando todas as opзхes nгo sгo cumpridas
    {
    }

    Caso alguйm ainda nгo tenha percebido a utilidade disso nos comandos com parвmetros, isso ficarб mais evidente nos exemplos.

    - Exemplos

    pawn Код:

    Código:
    //Vou usar ZCMD, pq strtok fica muito sujo o cуdigo
    COMMAND:Comando( playerid , params[] )
    {
        new Tipo[6];

        if ( sscanf ( params , "s" , Tipo ) )
        {
            return SendClientMessage ( playerid , 0xFF0000FF , "Uso /comando [ Tipo ]" ); //Usamos um return, entгo nгo precisamos de um else 
        }

        if ( !strcmp ( Tipo , "Tipo1" , true ) )
            SendClientMessage ( playerid , 0xFF0000FF , "Tipo1 selecionado" );
        else if ( strcmp ( Tipo , "Tipo2" , true )  == 0 )
            SendClientMessage ( playerid , 0xFF0000FF , "Tipo2 selecionado" );
        else if ( !strcmp ( Tipo , "Tipo3" , true ) )
            SendClientMessage ( playerid , 0xFF0000FF , "Tipo3 selecionado" );
        else
        {
            SendClientMessage ( playerid , 0xFF0000FF , "Tipo invбlido" );
        }
       
        return 1;
    }

    Operadores Ternбrios

    - O que sгo?

    Operadores ternбrios tambйm verificam, mas nгo fazem restriзхes como o if. A vantagem de usar esses operadores sгo que em apenas uma linha vocк faz uma pergunta e um "else". Podem ser usadas para melhorar e otimizar o cуdigo que normalmente ficaria com if e else, mas como eles precisam de chaves (ou nгo) jamais ficariam dentro de uma funзгo, por exemplo.

    - Como usar

    Diferentes dos outros itens estudados acima, o operador ternбrio nгo й chamado por uma palavra-chave, mas sim pelo sнmbolo ?. A forma de usar ele tambйm muda, tendo em vista que ele pode ser feito em uma sу linha.

    pawn Код:

    Código:
    new a = 4, b = 5;

    (a > b) ? (print(!"A Maior que B")); : (print(!"A Menor que B"));

    O Operador ternбrio sempre vem acompanhado de parкnteses na pergunta, sendo que em alguns casos nгo й necessбrio na resposta. Outra parte importante desse operador й o :, que seria o nosso else e tem essa mesma fuзгo: Caso Contrбrio.

    - Exemplos

    Como eu disse acima, esse operador pode ser feito em apenas uma linha e dentro de uma funзгo. Vou exemplificar em um sistema que quase todo servidor tem, mas poucos sabem como funciona. Sabe aquele relуgio lб em cima? Ele pode ser feito de duas formas quando os minutos/horas/segundos sгo menos que 10:

    pawn Код:

    Código:
    //Nгo vou criar todo o cуdigo, apenas uma parte dele
    //Eu sei que vai dar erro, й apenas um exemplo

    public Relogio() //Forma sem otimizaзгo e lerda
    {
        if ( Hora < 10 )
            format (Relogio, sizeof(Relogio), "0%d", Hora);
        else
            format ( Relogio , sizeof ( Relogio ) , "%d" , Hora);
        if ( Minuto < 10 )
            format (Relogio, sizeof(Relogio), "0%d", Minuto);
        else
            format ( Relogio , sizeof ( Relogio ) , "%d" , Minuto);
         if ( Segundo < 10 )
            format (Relogio, sizeof(Relogio), "0%d", Segundo);
        else
            format ( Relogio , sizeof ( Relogio ) , "%d" , Segundo);
    }

    public Relogio()
    {
        format ( Relogio2 , sizeof ( Relogio2 ) , "%s%d/%s%d/%s%d" , (Hora < 10) ? ("0") : ("") , Hora , (Minuto < 10 ) ? ("0") : ("") , Minuto , (Segundo < 10 ) ? ("0") : ("") , Segundo );
    }

    Como deu para perceber, o que o if-else faz em 12 linhas, nosso operador ternбrio faz em apenas uma. Caso alguйm nгo tenha entendido a lуgica do format acima, basta reler parte por parte dele que ira entender [Tutorial] Estruturas Condicionais Smile Se mesmo assim a dъvida persistir, pergunte-me no tуpico [Tutorial] Estruturas Condicionais Biggrin

    ---------------------------------------------------------------------------------------------------------

    Bem, acho que й isso. Qualquer erro/sugestгo deixem nos comentбrios [Tutorial] Estruturas Condicionais Smile

    Crйditos do Tutorial: Juniior3



    [Tutorial] Estruturas Condicionais D07Xwqb
    [Tutorial] Estruturas Condicionais Yjab9HN

      Data/hora atual: Qua 8 maio 2024 - 23:14