01.12.2012, 12:49
(
Последний раз редактировалось Rodney Francalim; 01.12.2012 в 20:33.
)
Rodney Francalim
Tutoriais
••••••••••••••••••••••••••••••••••••••••••••••••••Tutoriais
1: Sobre o 'switch'?
- Switch й um substituto do if e else if, mas trabalha de uma maneira mais simples e ordenada e com vбrias possibilidades. Todavia, ele nгo й melhor do que o if e else if (depende do seu ponto de vista e com o que e como quer trabalhar seu cуdigo), atй porque com o switch nгo й possнvel fazer uma comparaзгo, ou seja, nгo й aceito operadores lуgicos, jб que vamos trabalhar, tambйm, com os cases e isso restringe um pouco o uso do switch.
2: Criando seu prуprio switch
- Primeiro deve-se comeзar com o prуprio switch (уbvio ) seguido da variбvel que vocк queira trabalhar entre parкnteses.
- Mas vamos comeзar exemplificando, caso usбssemos if e else if:
pawn Код:
new var = random(6);
if(var == 0) printf("O valor da variбvel й %d", var);
else if(var == 1) printf("O valor da variбvel й %d", var);
else if(var == 2) printf("O valor da variбvel й %d", var);
else if(var == 3) printf("O valor da variбvel й %d", var);
else print("O valor da variбvel й desconhecido");
pawn Код:
new var = random(6);
switch(var)
{
case 0: printf("O valor da variбvel й %d", var); // Caso o valor da variбvel seja 0, enviarб essa mensagem com o valor da variбvel no console.
case 1: printf("O valor da variбvel й %d", var); // Caso o valor da variбvel seja 1, enviarб essa mensagem com o valor da variбvel no console.
case 2: printf("O valor da variбvel й %d", var); // Caso o valor da variбvel seja 2, enviarб essa mensagem com o valor da variбvel no console.
case 3: printf("O valor da variбvel й %d", var); // Caso o valor da variбvel seja 3, enviarб essa mensagem com o valor da variбvel no console.
default: print("O valor da variбvel й desconhecido"); // Caso o valor da variбvel seja diferente das que estгo logo acima, enviarб essa mensagem informando que o valor й desconhecido
}
pawn Код:
new var = random(6);
switch(var)
{
case 0 .. 3: printf("O valor da variбvel й %d", var); // Caso o valor da variбvel esteja de 0 а 3, enviarб essa mensagem com o valor da variбvel no console.
default: print("O valor da variбvel й desconhecido"); // Caso o valor da variбvel seja diferente das que estгo logo acima, enviarб essa mensagem informando que o valor й desconhecido
}
pawn Код:
new var = random(6);
switch(var)
{
case 0, 2, 4, 6: printf("O valor da variбvel й par (%d)", var); // Caso o valor da variбvel seja 0, 2, 4 ou 6, enviarб essa mensagem informando que й um nъmero par, seguido do prуprio valor da variбvel no console.
case 1, 3, 5: printf("O valor da variбvel й нmpar (%d)", var); // Caso o valor da variбvel seja 1, 3 ou 5, enviarб essa mensagem informando que й um nъmero нmpar, seguido do prуprio valor da variбvel no console.
}
- Nessa seзгo eu vou apenas citar exemplos em if e else if e como ficaria em switch.
pawn Код:
if(!strcmp(cmdtext, "/admins", true))
{
SendClientMessage(playerid, -1, "Admins Online:");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(PlayerInfo[i][pAdmin] == 1)
{
GetPlayerName(i, sendername, sizeof(sendername));
format(string, 128, "Admin: %s [Admin level 1]", sendername);
SendClientMessage(playerid, COLOR_GRAD2, string);
}
else if(PlayerInfo[i][pAdmin] == 2)
{
GetPlayerName(i, sendername, sizeof(sendername));
format(string, 128, "Admin: %s [Admin level 2]", sendername);
SendClientMessage(playerid, COLOR_GRAD2, string);
}
else if(PlayerInfo[i][pAdmin] == 3)
{
GetPlayerName(i, sendername, sizeof(sendername));
format(string, 128, "Admin: %s [Admin level 3]", sendername);
SendClientMessage(playerid, COLOR_GRAD2, string);
}
else if(PlayerInfo[i][pAdmin] == 4)
{
GetPlayerName(i, sendername, sizeof(sendername));
format(string, 128, "Admin: %s [Admin level 4]", sendername);
SendClientMessage(playerid, COLOR_GRAD2, string);
}
else if(PlayerInfo[i][pAdmin] == 5)
{
GetPlayerName(i, sendername, sizeof(sendername));
format(string, 128, "Admin: %s [Admin level 5]", sendername);
SendClientMessage(playerid, COLOR_GRAD2, string);
}
}
return 1;
}
pawn Код:
if(!strcmp(cmdtext, "/admins", true))
{
SendClientMessage(playerid, 0xFFFFFFAA, "Admins Online:");
for(new i = 0; i < MAX_PLAYERS; i++)
{
switch(PlayerInfo[i][pAdmin])
{
case 1 .. 5:
{
GetPlayerName(i, sendername, sizeof(sendername));
format(string, 128, "Admin: %s [Admin level %d]", sendername, PlayerInfo[i][pAdmin]);
SendClientMessage(playerid, 0xFFFF00AA, string);
}
}
}
return 1;
}
pawn Код:
if(dialogid == 0)
{
if(response)
{
if(listitem == 0)
{
// ...
}
if(listitem == 1)
{
// ...
}
}
}
if(dialogid == 1)
{
if(response)
{
if(listitem == 0)
{
// ...
}
if(listitem == 1)
{
// ...
}
}
}
pawn Код:
switch(dialogid)
{
case 0:
{
if(response)
{
switch(listitem)
{
case 0: // ...
case 1: // ...
}
}
}
case 1:
{
if(response)
{
switch(listitem)
{
case 0: // ...
case 1: // ...
}
}
}
}
- Como vocк deve ter visto, o caso pode mudar. Й tanto para:
pawn Код:
case 1: // var = 1
case 2: // var = 2
case 3: // var = 3
pawn Код:
case 1, 2, 3: // var = %d
pawn Код:
case 1 .. 3: // var = %d
pawn Код:
case 1: // executa o cуdigo caso o valor seja 1
case 2: // executa o cуdigo caso o valor seja 2
case 3: // executa o cуdigo caso o valor seja 3
case 4: // executa o cуdigo caso o valor seja 4
default: // executa o cуdigo caso o valor nгo esteja anexado em nenhum dos casos (OPCIONAL)
- Meu segundo tutorial, eu sу encontrei 1 tutorial sobre switch entгo resolvi fazer mais 1, sу pra enriquecer mais o fуrum.
- Caso vocк queira mais alguma informaзгo sobre a diferenзa entre switch e if e else if, clique aqui.
6: Agradecimentos e crйditos
- Agradecer ao Josma_cmd pelo tutorial dele, me ajudou bastante.
- E ao wiki.sa-mp.com.
- E tambйm ao Don_Speed por ter me corrigido.
••••••••••••••••••••••••••••••••••••••••••••••••••