# Logica

I blocchi logici possono eseguire diverse operazioni, in base alle condizioni delle espressioni matematiche o logiche.

I seguenti blocchi logici eseguono le operazioni in base al risultato della condizione. Impostare la condizione [If] o [If Else] nel blocco valore o nel blocco logico.

- If
- If Else

I seguenti blocchi logici producono valori numerici o logici da utilizzare nelle condizioni.

- Math
- Condizioni di confronto
- Condizione di logica
- Not

Nota:

- Quando nel valore di un operando si verifica quanto segue, il valore è indefinito:

- Errore di comunicazione (la qualità della variabile è "cattiva")

- Accesso al numero di elementi dell'array che è fuori dai limiti

- Dividere per zero.

- Se il blocco logico contiene valori non definiti, il risultato è indefinito. Tuttavia, se utilizzata come [Condizione di logica], potrebbe ancora produrre un risultato.

Condizione di logica

## If

Questo blocco esegue le operazioni sotto [Do] se la condizione [If] viene giudicata vera.

##### Blocco

##### Testo

'if(CONDITION){}'

Nota: Durante l'esecuzione dello script, se la condizione [If] non è definita, esce dal blocco.

## If Else

Questo blocco esegue le operazioni sotto [Do] se la condizione [If] viene giudicata vera e le operazioni sotto la condizione [Else], [If] viene giudicata falsa.

##### Blocco

##### Testo

'if(CONDITION){}else{}'

Nota: Durante l'esecuzione dello script, se la condizione [If] non è definita, la logica salta [Do] ed esegue l'operazione [Else].

## Math

Questo blocco è un'espressione matematica. Inserire il blocco di valori nell'operando sinistro (X) e nell'operando destro (Y) e selezionare l'operatore.

##### Blocco

##### Testo

'SOURCE1 * SOURCE2'

Operatore | Espressione | Descrizione
+ | X + Y | Aggiungere
- | X - Y | Sottrai
* | X * Y | Moltiplica
/ | X / Y | Dividi
% | X % Y | Resto della divisione
& | X & Y | Restituisce il risultato dell'operazione AND a livello di bit. Se X = 0110; Y= 1100 il risultato è 0100
| | X | Y | Restituisce il risultato dell'operazione OR a livello di bit. Se X = 0110; Y= 1100 il risultato è 1110
^ | X ^ Y | Restituisce il risultato dell'operazione XOR a livello di bit. Se X = 0110; Y= 1100 il risultato è 1010
<< | X << Y | Spostamento a sinistra. Sposta i bit in X, a sinistra, del numero Y di posizioni di bit. Mantiene il segno.
>> | X >> Y | Spostamento a destra. Sposta i bit in X, a destra, del numero Y di posizioni di bit. Mantiene il segno.
>>> | X >>> Y | Riempimento zeri, spostamento a destra. Sposta i bit in X, a destra, del numero Y di posizioni di bit e riempie i bit spostati a sinistra con zeri, non mantiene quindi il segno.

Nota:

- AND/OR/XOR restituiscono sempre un valore intero a 32 bit senza segno.
- Se il valore di ingresso è negativo, le espressioni a scorrimento bit restituiscono un valore intero a 32 bit.
- Se il valore di ingresso è positivo, le espressioni a scorrimento bit restituiscono un valore intero a 32 bit senza segno.

Nota:

Il risultato dell’espressione matematica contiene i punti decimali.

(Esempio 1)
Nel caso seguente, se il valore di INT1 è 101, il risultato è 10.1 (.1 non è troncato).

##### Blocco

##### Testo

'INT1 / 10'

Per troncare i punti decimali, usare il blocco floor.
(Esempio 2)
Nel caso seguente, se il valore di INT1 è 101, il risultato è 10.

##### Blocco

##### Testo

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

## Condizioni di confronto

Questo blocco è la condizione di confronto. Inserire il blocco di valori nell'operando sinistro (X) e nell'operando destro (Y) e selezionare l'operatore.

##### Blocco

##### Testo

'CONDITION1 == CONDITION2'

Operatore | Descrizione | Esempio
<= | Restituisce vero se il valore di X è minore o uguale al valore di Y. | Se X = 7 e Y = 33, allora l’espressione X <= Y è vera.
>= | Restituisce vero se il valore di X è maggiore o uguale al valore di Y. | Se X = 32 e Y = 10, allora l’espressione X >= Y è vera.
< | Restituisce vero se il valore di X è minore del valore di Y. | Se X = 7 e Y = 38, allora l’espressione X < Y è vera.
> | Restituisce vero se il valore di X è superiore al valore di Y. | Se X = 27 e Y = 14, allora l’espressione X > Y è vera.
!= | Restituisce vero se il valore di X non è uguale al valore di Y. | Se X = 7 e Y = 33, allora l’espressione X != Y è vera.
== | Conferma vero se il valore di X è uguale al valore di Y. | Se X = 5 e Y = 5, allora l’espressione X == Y è vera.

## Condizione di logica

Questo blocco è la condizione logica. Inserire il blocco di valori nell'operando sinistro (X) e nell'operando destro (Y) e selezionare l'operatore.

##### Blocco

##### Testo

'CONDITION1 && CONDITION2'

Operatore | Descrizione | Esempio
&& | AND logico Restituisce vero se entrambi sono veri. | Se X = true, Y = false, allora l’espressione X && Y è false. Nota: Anche se il valore di uno degli operandi non fosse definito, la condizione logica risultante potrebbe essere valutata falsa se l'altro operando è falso. Vedere la tabella seguente.
X | Y | Risultato
Non definito | Non definito | Non definito
Non definito | true | Non definito
Non definito | false | false
true | Non definito | Non definito
false | Non definito | false
|| | Somma logica Restituisce vero tranne se entrambi gli ingressi sono falsi. | Se X = true, Y = false, allora l’espressione X || Y è true. Nota: Anche se il valore di uno degli operandi non fosse definito, la condizione logica risultante potrebbe essere valutata true se l'altro operando è true. Vedere la tabella seguente.
X | Y | Risultato
Non definito | Non definito | Non definito
Non definito | true | true
Non definito | false | Non definito
true | Non definito | true
false | Non definito | Non definito

## Not

Questo blocco esegue la negazione logica o la negazione dei bit. Inserire il blocco di valori nell'operando (X) e selezionare l'operatore.

##### Blocco

##### Testo

'!SOURCE'

Operatore | Descrizione | Esempio
! | NOT logico Restituisce l'inverso del valore booleano. | Se X = false, allora il risultato è true.
˜ | Bit NOT Restituisce il valore inverso di ciascun bit. Nota: quando si usano numeri interi, la lunghezza in bit delle espressioni di bit è sempre 32 bit. | Se X = 0011, allora il risultato è 1100.