Las estructuras de control en PAWN son primordiales a la hora de usarlos en un script.
Existen varias estructuras, entre ellas: if, else, else if, switch y ? (operador terciario).
if
Verifica si una variable tiene 'X' valor. Ejemplo:
new Valor = random(3); // Creamos la variable 'Valor' y le asignamos un valor random entre el '0-2'.
if(Valor == 2) print("* El valor de 'Valor' es: 2.");
Dicha condicional acepta los siguientes operadores:
[Operador] [significado] [uso]
== Verifica si el valor de una variable es igual a... if(Valor1 == Valor2)
<= Verifica si el valor de una variable es igual o menor a... if(Valor1 <= Valor2)
>= Verifica si el valor de una variable es igual o mayor a... if(Valor1 >= Valor2)
< Verifica si el valor de una variable es menor a... if(Valor1 < Valor2)
> Verifica si el valor de una variable es mayor a... if(Valor1 > Valor2)
!= Verifica si el valor de una variable no es igual a... if(Valor1 != Valor2)
else
Verifica si la condición anterior a él no se cumplió. Ejemplo:
if(Valor == 2) print("* El valor de 'Valor' es: 2.");
else print("* El valor de 'Valor' no es: 2.");
else if
Hace otra verificación si la condicional anterior a él no se cumplió. Ejemplo:
if(Valor == 2) print("* El valor de 'Valor' es: 2.");
else if(Valor == 1) print("* El valor de 'Valor' es: 1.");
switch
Trabaja más rápido que 'if', ya que digamos que 'If lee uno por uno hasta llegar a su valor, pero switch va directo al valor (Es mejor buscar en el índice que página por página).
Ojo, dicha estructura sólo trabaja con constantes. Ejemplo:
new Valor = random(3); // Creamos la variable 'Valor' y le asignamos un valor random entre el '0-2'.
switch(Valor)
{
case 0: print("* El valor de 'Valor' es: 0.");
case 1: print("* El valor de 'Valor' es: 1.");
case 2: print("* El valor de 'Valor' es: 2.");
}
También trabaja con binarios.
Otros ejemplos son:
new Valor = (random(3) ? ('A') : ('B'); // Creamos la variable 'Valor' y le asignamos un valor random entre 'A-B'.
switch(Valor)
{
case 'A': print("* El valor de 'Valor' es: A.");
case 'B': print("* El valor de 'Valor' es: B.");
}
//====
new bool:Valor = (random(2) ? (true) : (false); // Creamos la variable 'Valor' y le asignamos un valor random entre el 'true-false'.
switch(Valor)
{
case true: print("* El valor de 'Valor' es: true.");
case false: print("* El valor de 'Valor' es: false.");
}
Esta estructura también tiene otra expresión llamada 'default' que verifica si ninguna de las anteriores verificaciones eran ciertas. Ejemplo:
new Valor = random(50) // Creamos la variable 'Valor' y le asignamos un valor random entre '0-49'.
switch(Valor)
{
case 34: print("* El valor de 'Valor' es: 34.");
case 22: print("* El valor de 'Valor' es: 22.");
default: print("* El valor de 'Valor' no es ni '34' y ni '22'.");
}
?
Actúa como la condicional 'if'. Con este operador podemos acortar códigos y hacerlo más fácil. Ejemplo:
new bool:Valor = (random(2) ? (true) : (false));
if(Valor == true) print("* El valor de 'Valor' es verdadero.");
else if(Valor == false) print("* El valor de 'Valor' es falso.");
Eso es poco eficaz, con dicho operador podríamos acortar el código y hacerlo de esta manera:
new bool:Valor = (random(2) ? (true) : (false));
printf("* El valor de 'Valor' es %b.", Valor ? (true) : (false));
Lo que está entre el '?' y el ':' es lo que devolvería si la condición es verdadera, la otra parte es lo que devolvería si es falsa.
_____________________
Eso fue todo, cualquier duda o error relacionado con el tópico házmelo saber!
Saludos.