# 로직

논리 블록은 수학 식이나 논리 식의 조건에 따라 다양한 연산을 수행할 수 있습니다.

다음 논리 블록은 조건의 결과에 따라 연산을 실행합니다. 값 블록 또는 논리 블록에서 [If] 또는 [If Else] 조건을 설정합니다.

- If
- If Else

다음 논리 블록은 조건에 사용할 숫자 값이나 논릿값을 출력합니다.

- Math
- 비교 조건
- 논리적 조건
- Not

메모:

- 다음 중 하나가 피연산자의 값에 발생하는 경우 그 값은 정의되지 않습니다:

- 통신 오류(변수의 품질이 “나쁨”)

- 범위를 벗어난 배열 요소 번호 액세스하기

- 0으로 나눕니다.

- 논리 블록에 정의되지 않은 값이 포함되어 있으면 결과가 정의되지 않습니다. 그러나 [논리적 조건]으로 사용되는 경우 여전히 결과를 출력할 수도 있습니다.

논리적 조건

## If

이 블록은 [If] 조건이 true로 평가되면 [Do]에서 동작을 실행합니다.

##### 블록

##### 텍스트

'if(CONDITION){}'

메모: 스크립트를 실행하는 동안 [If] 조건이 정의되지 않은 경우 블록을 종료합니다.

## If Else

이 블록은 [If] 조건이 true로 평가되면 [Do] 아래의 작업을 실행하고 [If] 조건이 false로 평가되면 [Else] 아래의 작업을 실행합니다.

##### 블록

##### 텍스트

'if(CONDITION){}else{}'

메모: 스크립트 실행 중에 [If] 조건이 정의되지 않은 경우 로직은 [Do]를 건너뛰고 [Else] 연산을 실행합니다.

## Math

이 블록은 수학적 표현식입니다. 값 블록을 왼쪽 피연산자(X)와 오른쪽 피연산자(Y)에 삽입하고 연산자를 선택합니다.

##### 블록

##### 텍스트

'SOURCE1 * SOURCE2'

연산자 | 표현식 | 설명
+ | X + Y | 더하기
- | X - Y | 빼기
* | X * Y | 곱하기
/ | X / Y | 나누기
% | X % Y | 나누기의 나머지
& | X & Y | 비트 수준의 AND 연산 결과를 반환합니다. If X = 0110; Y= 1100 경우 결과는 0100입니다.
| | X | Y | 비트 수준의 OR 연산 결과를 반환합니다. If X = 0110; Y= 1100 경우 결과는 1110입니다.
^ | X ^ Y | 비트 수준의 XOR 연산 결과를 반환합니다. If X = 0110; Y= 1100 경우 결과는 1010입니다.
<< | X << Y | 왼쪽 시프트. X의 비트를 왼쪽으로 Y 비트 수만큼 위치를 옮깁니다. 부호를 유지합니다.
>> | X >> Y | 오른쪽 시프트. X의 비트를 오른쪽으로 Y 비트 수만큼 위치를 옮깁니다. 부호를 유지합니다.
>>> | X >>> Y | 0으로 채우기, 오른쪽 시프트. X의 비트를 오른쪽으로 Y 비트 수만큼 위치를 옮기고 왼쪽의 시프트된 비트를 0으로 채웁니다. 따라서 부호를 유지하지 않습니다.

메모:

- AND/OR/XOR 은 항상 32비트 부호 없는 정수값을 반환합니다.
- 입력값이 음수인 경우 비트 시프트 표현식은 32비트 정수값을 반환합니다.
- 입력값이 양수인 경우 비트 시프트 표현식은 32비트 정수값을 반환합니다.

메모:

수학적 표현식 결과에는 소수점이 포함됩니다.

(예제 1)
다음 경우에서 INT1의 값이 101이면 결과는 10.1입니다(.1은 잘리지 않음).

##### 블록

##### 텍스트

'INT1 / 10'

소수점을 자르려면 floor 블록을 사용하십시오.
(예 2)
다음 경우에 INT1 값이 101이면 결과는 10입니다.

##### 블록

##### 텍스트

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

## 비교 조건

이 블록은 비교 조건입니다. 값 블록을 왼쪽 피연산자(X)와 오른쪽 피연산자(Y)에 삽입하고 연산자를 선택합니다.

##### 블록

##### 텍스트

'CONDITION1 == CONDITION2'

연산자 | 설명 | 예
<= | X 의 값이 Y 의 값보다 작거나 같은 경우 true를 반환합니다. | X = 7이고 Y = 33인 경우, 식 X <= Y 는 true입니다.
>= | X 의 값이 Y 의 값보다 크거나 같은 경우 true를 반환합니다. | X = 32이고 Y = 10인 경우, 식 X >= Y 는 true입니다.
< | X 의 값이 Y 의 값보다 작은 경우 true를 반환합니다. | X = 7이고 Y = 38인 경우, 식 X < Y 는 true입니다.
> | X 의 값이 Y 의 값보다 큰 경우 true를 반환합니다. | X = 27이고 Y = 14인 경우, 식 X > Y 는 true입니다.
!= | X 의 값이 Y 의 값과 같지 않은 경우 true를 반환합니다. | X = 7이고 Y = 33인 경우, 식 X != Y 는 true입니다.
== | X의 값이 Y의 값과 같지 않은 경우 true를 반환합니다. | X = 5이고 Y = 5인 경우, 식 X == Y 는 true입니다.

## 논리적 조건

이 블록은 논리 조건입니다. 값 블록을 왼쪽 피연산자(X)와 오른쪽 피연산자(Y)에 삽입하고 연산자를 선택합니다.

##### 블록

##### 텍스트

'CONDITION1 && CONDITION2'

연산자 | 설명 | 예
&& | 논리적 AND 둘 다 true인 경우 true를 반환합니다. | X = true이고 Y = false인 경우, 식 X && Y 는 false입니다. 메모: 피연산자 중 하나의 값이 정의되지 않았더라도 다른 피연산자가 거짓이면 결과적으로 논리적 조건이 거짓으로 평가될 수 있습니다. 아래 표를 참조하십시오.
X | Y | 결과
정의되지 않음 | 정의되지 않음 | 정의되지 않음
정의되지 않음 | true | 정의되지 않음
정의되지 않음 | false | false
true | 정의되지 않음 | 정의되지 않음
false | 정의되지 않음 | false
|| | 로직 합계 입력이 모두 false인 경우를 제외하고 true를 반환합니다. | X = true이고 Y = false인 경우, 식 X || Y 는 true입니다. 메모: 피연산자 중 하나의 값이 정의되지 않았더라도 다른 피연산자가 참이면 결과적으로 논리적 조건이 참으로 평가될 수 있습니다. 아래 표를 참조하십시오.
X | Y | 결과
정의되지 않음 | 정의되지 않음 | 정의되지 않음
정의되지 않음 | true | true
정의되지 않음 | false | 정의되지 않음
true | 정의되지 않음 | true
false | 정의되지 않음 | 정의되지 않음

## Not

이 블록은 논리 부정 또는 비트 부정을 수행합니다. 값 블록을 피연산자(X)에 삽입하고 연산자를 선택합니다.

##### 블록

##### 텍스트

'!SOURCE'

연산자 | 설명 | 예
! | 논리적 NOT Bool형 값의 역을 반환합니다. | X = false인 경우 결과는 true입니다.
˜ | 비트 NOT 각 비트의 역수를 반환합니다. 메모: 정수 사용 시 비트 표현식의 비트 길이는 항상 32비트입니다. | X = 0011인 경우 결과는 1100입니다.