Saltar al contenido
  • Global

    Global

    Chatroom Rules

    • NO SE DA SOPORTE EN CHATBOX
    • NO SPAM
    • NO FLOOD

Publicaciones recomendadas

  • Usuario
Publicado (editado)

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.

Editado por -EnzoMetlc-
  • Usuario
Publicado

Linda guía, no sabia que existía "?", podrías dar un ejemplo mas claro porfa, no lo entendí bien

 

 

Claro.

 

Como he dicho actúa como 'if'. Supón que lo que está entre el '?' y ':' es una if:

if(Valor == 5) Valor = 3;


Y la otra parte es 'else':

else if(Valor == 3) Valor = 5;

Con dicho operador sería lo mismo, pero más optimizado:

/*if(*/Valor ?/*==*/ (5)/*El valor que deseamos que tenga*/ :/*else*/ (3)/*Ahora el valor de 'Valor' es 3*/; 

// Pruébalo en el Pawno para distinguirlo mejor.

Si lo hacemos con 'if' y 'else':

if(Valor == 5) Valor = 4; // Un ejemplo.
else Valor = 3;

Otro ejemplo:

new a = random(5);

a = (a == 3) ? (5) : (4);

// A 'a' le queremos asignar un valor.
// Si el valor de 'a' es '3'.
// Ahora el valor de 'a' será '5'.
// Si el valor de 'a' no fue '3', su valor ahora será '4'.

No es tan complicado, pero si sigues teniendo dudas no dudes en decírmelo.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invitado
Responder a este tema...

×   Pegar como texto enriquecido.   Pegar como texto sin formato

  Only 75 emoji are allowed.

×   Tu enlace se ha incrustado automáticamente..   Mostrar como un enlace en su lugar

×   Se ha restaurado el contenido anterior.   Limpiar editor

×   No se pueden pegar imágenes directamente. Carga o inserta imágenes desde la URL.

  • Explorando recientemente   0 miembros

    • No hay usuarios registrados viendo esta página.
×
×
  • Crear nuevo...