[size=32]Estruturas Condicionais[/size]
Introduзгo
- Condicionais
- 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
- 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:
- 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
- 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
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 Код:Essa sessгo estб presente em todas as partes do tutorial, ela dб exemplos do uso de cada condicional explicada.
- 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 Код:- 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:
- 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.
- 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 Код:
Caso alguйm ainda nгo tenha percebido a utilidade disso nos comandos com parвmetros, isso ficarб mais evidente nos exemplos.- 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
{
}
- Exemplos
pawn Код:
Operadores Ternбrios- 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;
}
- 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 Код:
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.- Código:
new a = 4, b = 5;
(a > b) ? (print(!"A Maior que B")); : (print(!"A Menor que B"));
- 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 Код:
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 Se mesmo assim a dъvida persistir, pergunte-me no tуpico - 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 );
}
---------------------------------------------------------------------------------------------------------
Bem, acho que й isso. Qualquer erro/sugestгo deixem nos comentбrios
Crйditos do Tutorial: Juniior3