# Lógica

Los bloqueslógicospueden realizar distintas operaciones en función de la condición de expresiones matemáticas o lógicas.

Los siguientes bloques lógicos ejecutan una operación en función del resultado de una condición. Establezca la condición [If] o [If Else] en un bloque de valor o un bloque lógico.

- If
- If Else

Los siguientes bloques lógicos emiten valores numéricos o lógicos para usar en condiciones.

- Math
- Condición de comparación
- Condición lógica
- Not

Nota:

- Cuando ocurre uno de los siguientes casos en el valor de un operando, el valor es indefinido:

- Error de comunicación (la variable es de "mala" calidad)

- Accediendo a un número de elemento de matriz que está fuera de los límites

- Dividir por cero.

- Si el bloque lógico contiene valores indefinidos, el resultado es indefinido. Sin embargo, cuando se utiliza como [Condición lógica], puede producir un resultado.

Condición lógica

## If

Este bloque ejecuta operaciones bajo la condición [Do] cuando la condición[If] se evalúa como verdadera.

##### Bloque

##### Texto

'if(CONDITION){}'

Nota: Durante la ejecución del script, si la condición [If] no es definida, sale del bloque.

## If Else

Este bloque ejecuta operaciones bajo [Do] cuando la condición [If] se evalúa como true, y las operaciones bajo [Else], cuando la condición [If] se evalúa como false.

##### Bloque

##### Texto

'if(CONDITION){}else{}'

Nota: Durante la ejecución del script, si la condición [If] no está definida, la lógica omite [Do] y ejecuta la operación [Else] .

## Math

Este bloque es una expresión matemática. Inserte el bloque de valores en el operando izquierdo (X) y en el operando derecho (Y), y seleccione el operador.

##### Bloque

##### Texto

'SOURCE1 * SOURCE2'

Operador | Expresión | Descripción
+ | X + Y | Agregar
- | X - Y | Restar
* | X * Y | Multiplicar
/ | X / Y | Dividir
% | X % Y | Resto de la división
& | X & Y | Devuelve el resultado de la operación AND a nivel de bit. Si X = 0110; Y= 1100, el resultado es 0100
| | X | Y | Devuelve el resultado de la operación OR a nivel de bit. Si X = 0110; Y= 1100, el resultado es 1110
^ | X ^ Y | Devuelve el resultado de la operación XOR a nivel de bit. Si X = 0110; Y= 1100, el resultado es 1010
<< | X << Y | Desplazamiento hacia la izquierda. Desplaza los bits en X hacia la izquierda, según el número Y de posiciones de bit. Conserva el signo.
>> | X >> Y | Desplazamiento hacia la derecha. Desplaza los bits en X hacia la derecha, según el número Y de posiciones de bit. Conserva el signo.
>>> | X >>> Y | Relleno cero, desplazamiento hacia la derecha. Desplaza los bits en X hacia la derecha, según el número Y de posiciones de bit, y rellena los bits desplazados hacia la izquierda con 0, por lo que no conserva el signo.

Nota:

- AND/OR/XOR siempre devuelven un valor entero sin signo de 32 bits.
- Cuando el valor de entrada es negativo, las expresiones de desplazamiento de bits devuelven un valor entero de 32 bits.
- Cuando el valor de entrada es positivo, las expresiones de desplazamiento de bits devuelven un valor entero sin signo de 32 bits.

Nota:

El resultado de la expresión matemática contiene comas decimales.

(Ejemplo 1)
En el siguiente caso, si el valor de INT1 es 101, el resultado es 10.1 (1 no se trunca).

##### Bloque

##### Texto

'INT1 / 10'

Para truncar los puntos decimales, utilice el bloque floor.
(Ejemplo 2)
En el siguiente caso, si el valor de INT1 es 101, el resultado es 10.

##### Bloque

##### Texto

'$Math.floor((INT1 / 10))'

## Condición de comparación

Este bloque es una condición de comparación. Inserte un bloque de valores en el operando izquierdo (X) y en el operando derecho (Y) y seleccione un operador.

##### Bloque

##### Texto

'CONDITION1 == CONDITION2'

Operador | Descripción | Ejemplo
<= | Devuelve True si el valor de X es menor o igual que el valor de Y. | Si X = 7 y Y = 33, entonces la expresión X <= Y es true.
>= | Devuelve True si el valor de X es mayor o igual que el valor de Y. | Si X = 32 y Y = 10, tentonces la expresión X >= Y es true.
< | Devuelve True si el valor de X es menor que el valor de Y. | Si X = 7 y Y = 38, entonces la expresión X < Y es true.
> | Devuelve True si el valor de X es mayor que el valor de Y. | Si X = 27 y Y = 14, entonces la expresión X > Y es true.
!= | Devuelve True si el valor de X no es igual que el valor de Y. | Si X = 7 y Y = 33, entonces la expresión X != Y es true.
== | Devuelve True si el valor de X es igual al valor de Y. | Si X = 5 y Y = 5, tentonces la expresión X == Y es true.

## Condición lógica

Este bloque es una condición lógica. Inserte un bloque de valores en el operando izquierdo (X) y en el operando derecho (Y) y seleccione un operador.

##### Bloque

##### Texto

'CONDITION1 && CONDITION2'

Operador | Descripción | Ejemplo
&& | AND lógico Devuelve true si ambos son true. | Si X = true, Y = false, entonces la expresión X && Y es false. Nota: Aunque el valor de uno de los operandos sea indefinido, la condición lógica resultante podría evaluarse como false si el otro operando es false. Véase la siguiente tabla.
X | Y | Resultado
indefinido | indefinido | indefinido
indefinido | true | indefinido
indefinido | false | false
true | indefinido | indefinido
false | indefinido | false
|| | Suma lógica Devuelve true excepto si ambas entradas son false. | Si X = true, Y = false, entonces la expresión X || Y es true. Nota: Aunque el valor de uno de los operandos sea indefinido, la condición lógica resultante podría evaluarse como true si el otro operando es true. Véase la siguiente tabla.
X | Y | Resultado
indefinido | indefinido | indefinido
indefinido | true | true
indefinido | false | indefinido
true | indefinido | true
false | indefinido | indefinido

## Not

Este bloque realiza la negación lógica o negación de bits. Inserte un bloque de valores en el operando (X) y seleccione un operador.

##### Bloque

##### Texto

'!SOURCE'

Operador | Descripción | Ejemplo
! | NOT lógico Devuelve el inverso del valor booleano. | Si X = false, el resultado es true.
˜ | Bit NOT Devuelve el valor inverso de cada bit. Nota: Cuando se utilizan enteros, la longitud en bits de las expresiones de bits es siempre 32 bits. | Si X = 0011, el resultado es 1100.