їComo serнa esto correctamente?
#1

Buenas, tengo una duda hace tiempo y pues me la quiero quitar de encima.
Es la siguiente:
Yo he echo comandos con sscanf muchas veces, pero mi duda es, їcomo serнa mбs correcto hacerlo?
їAsн?
pawn Код:
if(asdasdas == 1) return SendClientMessage(playerid, -1, "asdasdas");
if(asdasdss == 2) return SendClientMessage(playerid, -1, "asdasdsad");
if(asdas >= 5) return SendClientMessage(playerid, -1, "asdasdas");
їO asн?
pawn Код:
if(asdasdas == 1) return SendClientMessage(playerid, -1, "asdasdas");
else if(asdasdss == 2) return SendClientMessage(playerid, -1, "asdasdsad");
else if(asdas >= 5) return SendClientMessage(playerid, -1, "asdasdas");
Ya que la primera siempre me ha funcionado bien, pero he visto que muchos lo hacen como la segunda manera, pero... їcual es mбs efectiva o mбs recomendable?
їQuien me puede quitar la duda?, muchas gracias.
Reply
#2

pawn Код:
new asd[][]={
    {"texto"},
    {"texto"},
    {"texto"}
};
pawn Код:
new text[20];
switch(funcion){
    case 1:{text="texto"}
    case 2:{text="texto"}
    case 3:{text="texto"}
}
Reply
#3

Me refiero si es mбs conveniente hacer todo con
pawn Код:
if(funcion == 1)
if(funcion == 1)
O si es mejor usar
pawn Код:
if(funcion == 1)
else if(funcion == 1)
Reply
#4

Especнficamente en ese cуdigo no existe diferencia alguna ya que si asdasdas es 1, es imposible que sea 2 o igual o mayor que 5. Sin embargo, la palabra "else" ("o si no", en inglйs) es usada para verificar si la condiciуn previa no es verdadera.

Un ejemplo:
pawn Код:
new a = 4;
if(a == 4) // si la condiciуn es cierta
   printf("a es 4!");
else // o si no
   printf("a no es 4!");
Sin embargo, existen situaciones en las que quieres ser un poco mбs especifico, por lo que puedes usar "else" combinado con "if" (que se traducirнa "o si no, sн..."). Por ejemplo:
pawn Код:
new a = 4;
if(a == 4) // si a es igual a 4
   printf("a es 4!");
else if(a == 2) // o si no, si a no es 4 pero si a es 2
   printf("a es 2!");
Obviamente, en este ejemplo el segundo caso nunca se ejecutarб ya que a nunca llega a ser dos (es definido estrictamente como 4). En cуdigos mбs complejos esto es indispensable y el esqueleto de cualquier script. Existen situaciones en las que quieres ser AUN MБS especнfico, y puedes hacer lo siguiente:

pawn Код:
new a = 4;
if(a == 4) // si a es 4
   printf("a es 4!");
else if(a == 6) // o si no, si a no es 4 pero si a es 6
   printf("a es 6!");
else if(a == 3) // si a no es ni 6 ni 4 pero si a es 3
   printf("a es 3"!);
else // si a no es ninguna de las anteriores (cualquiera, excepto 4, 6 o 3)
   printf("a es un valor desconocido!");
Un saludo.


Quote:
Originally Posted by OTACON
Посмотреть сообщение
pawn Код:
new asd[][]={
    {"texto"},
    {"texto"},
    {"texto"}
};
pawn Код:
new text[20];
switch(funcion){
    case 1:{text="texto"}
    case 2:{text="texto"}
    case 3:{text="texto"}
}
Quote:
Originally Posted by OTACON
Посмотреть сообщение
primero deberнas de comprender mejor el mensaje
Reply
#5

Es prбcticamente lo mismo. Recomiendo que uses "else" cuando quieres que ya no se ejecuta la siguiente declaraciуn si el anterior es verdadero.
Reply
#6

admantis , comprender y explicar son dos cosas totalmente distintas.
saludos.
Reply
#7

Otacon, їvos sabнas que los if son mбs optimizados que los case de un switch? el switch es mбs rбpido que los else if, ya que hacen dos comprobaciones, pero a un if no le gana.
Reply
#8

Como ya te dijeron, es lo mismo pero a la vez es mejor usar else, ya que si la primera condicion es correcta entonces no se compara el resto, en cambio si usas solo if, asi la primera condicion sea correcta de igual manera se comprueba el resto.

Quote:
Originally Posted by Glimma
Посмотреть сообщение
Otacon, їvos sabнas que los if son mбs optimizados que los case de un switch? el switch es mбs rбpido que los else if, ya que hacen dos comprobaciones, pero a un if no le gana.
Esto es cierto.
Reply
#9

Quote:
Originally Posted by Glimma
Посмотреть сообщение
Otacon, їvos sabнas que los if son mбs optimizados que los case de un switch? el switch es mбs rбpido que los else if, ya que hacen dos comprobaciones, pero a un if no le gana.
Pero en este caso no se podrнa usar switch, creo. їSe puede hacer >= X? Me parece que no, si se puede dime como xD
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)