# Lógico

Os blocos Lógico podem executar diferentes operações com base na condição de expressões matemáticas ou lógicas.

Os blocos lógicos a seguir executam uma operação dependendo do resultado de uma condição. Definir a condição [If] ou [If Else] em um bloco de valor ou bloco lógico.

- If
- If Else

Os seguintes blocos lógicos geram valores numéricos ou lógicos para uso em condições.

- Math
- Condição de comparação
- Condição lógica
- Not

Observação:

- Quando um dos seguintes ocorre no valor de um operando, o valor é indefinido:

- Erro de comunicação (variável com qualidade “ruim”)

- Acessando o número de elemento da matriz que está fora dos limites

- Divida por zero.

- Se o bloco lógico contém valores indefinidos, o resultado será indefinido. No entanto, quando usado como uma [Condição lógica], ainda pode gerar um resultado.

Condição lógica

## If

Este bloco executa operações sob a condição [Do] quando [If] é avaliada como verdadeiro.

##### Bloco

##### Texto

'if(CONDITION){}'

Observação: Durante a execução do script, se a condição [If] não estiver definida, sai do bloco.

## If Else

Esse bloco executa operações sob a condição [Do] quando [If] é avaliada como verdadeiro, e operações sob a condição [Else], [If] é avaliada como falso.

##### Bloco

##### Texto

'if(CONDITION){}else{}'

Observação: Durante a execução do script, se a condição [If] não estiver definida, a lógica ignora [Do] e executa a operação [Else].

## Math

Este bloco é uma expressão matemática. Insira o bloco de valor no operando esquerdo (X) e no operando direito (Y) e selecione o operador.

##### Bloco

##### Texto

'SOURCE1 * SOURCE2'

Operador | Expressão | Descrição
+ | X + Y | Adicionar
- | X - Y | Atrasar
* | X * Y | Multiplicar
/ | X / Y | Dividir
% | X % Y | Resto da divisão
& | X & Y | Devolve o resultado de uma operação AND no nível do bit. Se X = 0110; Y= 1100 então o resultado será 0100
| | X | Y | Devolve o resultado de uma operação OR no nível do bit. Se X = 0110; Y= 1100 então o resultado será 1110
^ | X ^ Y | Devolve o resultado de uma operação XOR no nível do bit. Se X = 0110; Y= 1100 então o resultado será 1010
<< | X << Y | Deslocamento para a esquerda. Desloque os bits em X, para a esquerda, pelo número Y de posições de bits. Preserva o sinal.
>> | X >> Y | Deslocamento para direita. Desloque os bits em X, para a direita, pelo número Y de posições de bits. Preserva o sinal.
>>> | X >>> Y | Preenchimento zero, deslocamento para a direita. Desloca os bits em X, para a direita, pelo número Y de posições de bits e preenche bits deslocados à esquerda com 0s, não preservando o sinal.

Observação:

- AND/OR/XOR sempre retorna um valor inteiro de 32 bits não identificada.
- Quando o valor de entrada é negativo, as expressões de deslocamento de bit retornam um valor inteiro de 32 bit.
- Quando o valor de entrada é positivo, as expressões de deslocamento de bit retornam um valor inteiro de 32 bit não identificada.

Observação:

O resultado da expressão matemática contém pontos decimais.

(Exemplo 1)
No caso seguinte, se o valor de INT1 é 101, então o resultado é 10.1 (.1 não é truncado).

##### Bloco

##### Texto

'INT1 / 10'

Para truncar os pontos decimais, use o bloco floor.
(Exemplo 2)
No caso seguinte, se o valor da INT1 for 101, então o resultado é 10.

##### Bloco

##### Texto

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

## Condição de comparação

Este bloco é uma condição de comparação. Insira o bloco de valor no operando esquerdo (X) e no operando direito (Y) e selecione o operador.

##### Bloco

##### Texto

'CONDITION1 == CONDITION2'

Operador | Descrição | Exemplo
<= | Retorna verdadeiro se o valor da X for menor ou igual ao valor da Y. | Se X = 7 e Y = 33, então a expressão X <= Y é verdadeiro.
>= | Retorna verdadeiro se o valor da X for maior ou igual ao valor da Y. | Se X = 32 e Y = 10, então a expressão X >= Y é verdadeiro.
< | Retorna verdadeiro se o valor da X for menor que o valor da Y. | Se X = 7 e Y = 38, então a expressão X < Y é verdadeiro.
> | Retorna verdadeiro se o valor da X for maior que o valor da Y. | Se X = 27 e Y = 14, então a expressão X > Y é verdadeiro.
!= | Retorna verdadeiro se o valor da X não for igual ao valor da Y. | Se X = 7 e Y = 33, então a expressão X != Y é verdadeiro.
== | Retorna verdadeiro se o valor da X for igual ao valor da Y. | Se X = 5 e Y = 5, então a expressão X == Y é verdadeiro.

## Condição lógica

Este bloco é uma condição de lógica. Insira o bloco de valor no operando esquerdo (X) e no operando direito (Y) e selecione o operador.

##### Bloco

##### Texto

'CONDITION1 && CONDITION2'

Operador | Descrição | Exemplo
&& | AND Lógico Retorna verdadeiro se ambos forem verdadeiro. | Se X = verdadeiro, Y = falso, então a expressão X && Y é falso. Observação: Mesmo que o valor de um dos operandos possa ser indefinido, a condição lógica resultante pode ser avaliada como falso se o outro operando for falso. Por favor, veja a tabela abaixo.
X | Y | Resultado
Indefinido | Indefinido | Indefinido
Indefinido | verdadeiro | Indefinido
Indefinido | falso | falso
verdadeiro | Indefinido | Indefinido
falso | Indefinido | falso
|| | Soma lógica Retorna verdadeiro, exceto se ambas as entradas forem falso. | Se X = verdadeiro, Y = falso, então a expressão X || Y é verdadeiro. Observação: Mesmo que o valor de um dos operandos possa ser indefinido, a condição lógica resultante pode ser avaliada como verdadeiro se o outro operando for verdadeiro. Por favor, veja a tabela abaixo.
X | Y | Resultado
Indefinido | Indefinido | Indefinido
Indefinido | verdadeiro | verdadeiro
Indefinido | falso | Indefinido
verdadeiro | Indefinido | verdadeiro
falso | Indefinido | Indefinido

## Not

Este bloco executa negação lógica ou negação de bits. Insira o bloco de valor no operando (X) e selecione um operador.

##### Bloco

##### Texto

'!SOURCE'

Operador | Descrição | Exemplo
! | NÃO Lógico Retorna o inverso do valor booleano. | Se X = falso, então o resultado é verdadeiro.
˜ | NÃO Bit Retorna o valor inverso de cada bit. Observação: Ao usar integers, o comprimento do bit das expressões de bit é sempre de 32 bits. | Se X = 0011, então o resultado será 1100.