API Basic Logic ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
NOT / AND / OR / XOR
ClassicUO โข Basic
NOT์ ์กฐ๊ฑด์ ๋ฐ์ ํฉ๋๋ค. AND๋ ๋ ๋ค, OR๋ ์ ์ด๋ ํ๋, XOR๋ ์ ํํ ํ๋๊ฐ ์ฐธ์ด์ด์ผ ํฉ๋๋ค. &&๋ AND, ||๋ OR์ ๋ณ์นญ์ด๋ฉฐ ํค์๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์ต๋๋ค.
์ ํํ ๊ตฌ๋ฌธ
NOT (condition)
left AND right
left && right
left OR right
left || right
left XOR right
๋งค๊ฐ๋ณ์
leftโ ์ดํญ ์ฐ์ฐ์ ์ผ์ชฝ ์กฐ๊ฑด์ ๋๋ค. AND/OR๋ Integer ๋๋ Decimal์ด ํ์ํ๋ฉฐ 0์ ๊ฑฐ์ง, 0์ด ์๋ ์ซ์๋ ์ฐธ์ ๋๋ค.rightโ ์ค๋ฅธ์ชฝ ์กฐ๊ฑด์ด๋ฉฐ AND/OR์์๋ ์ซ์์ฌ์ผ ํฉ๋๋ค. ์์ชฝ์ ๋ชจ๋ ๊ณ์ฐํ๋ฏ๋ก AND ์ผ์ชฝ์ด ๊ฑฐ์ง์ด๊ฑฐ๋ OR ์ผ์ชฝ์ด ์ฐธ์ด์ด๋ ์๋ตํ์ง ์์ต๋๋ค.NOT / groupingโ NOT์ ๋ฐ์ ํ ์กฐ๊ฑด ์ ์ฒด๋ฅผ ๊ดํธ๋ก ๋ฌถ์ผ์ธ์. AND, OR, XOR๋ฅผ ์์ ๋๋ ๊ดํธ๋ก ๋ฌถ์์ ๋ช ํํ ํ์ธ์.
๋ฐํ๊ฐ
Integer 1(TRUE) ๋๋ Integer 0(FALSE)์ ๋๋ค. ๋นํธ ์ฐ์ฐ์ด ์๋ ๋ ผ๋ฆฌ ์ฐ์ฐ์ผ๋ก, 2 AND 4๋ ๋นํธ ๋ง์คํฌ๊ฐ ์๋ 1์ ๋๋ค. ๋ฐํ ํ๋๊ทธ๋ =TRUE ๋๋ =1, =FALSE ๋๋ =0์ผ๋ก ๊ฒ์ฌํ ์ ์์ต๋๋ค.
๋์
- ์ด ์์ง์์ AND, OR, XOR๋ ๊ฐ์ ์ฐ์ ์์๋ก ์ผ์ชฝ๋ถํฐ ๊ณ์ฐํฉ๋๋ค. TRUE OR FALSE AND FALSE๋ 0, TRUE OR (FALSE AND FALSE)๋ 1์ ๋๋ค. VB ์ฝ๋๋ฅผ ์ฎ๊ธธ ๋ ์ด ํธํ ๊ท์น์ ๊ณ ๋ คํ์ธ์.
- NOT(condition)์ ์กฐ๊ฑด์ ๊ณ์ฐํ๊ณ ์ฐธ๊ณผ ๊ฑฐ์ง์ ๋ฐ์ ํฉ๋๋ค. ๋น๊ต ์์ NOT 1=2๋ NOT(1=2)์ ๋๋ค. ๋ฐ์ ํ ๊ฐ ์์ฒด๊ฐ ๋น๊ต ํผ์ฐ์ฐ์๋ผ๋ฉด (NOT value)๋ก ์ฐ์ธ์.
- AND/OR๋ String, Array, Object, Unit์ ๊ฑฐ๋ถํฉ๋๋ค. ๊ธฐ์กด NOT๊ณผ XOR๋ ์ซ์ 0๊ณผ ๊ฐ์์ง ๊ฒ์ฌํ๋ฏ๋ก ํ ์คํธ "0", ๋น ๋ฌธ์์ด, ๋ฐฐ์ด, ๊ฐ์ฒด, Unit์ 0์ด ์๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค. ์ด ๊ฐ์๋ ๋ช ์์ ์ธ ์ซ์ ์กฐ๊ฑด์ ์ ์ํ์ธ์. CBool์ ๋ณ๋ ๋ณํ ๊ท์น์ ์ฌ์ฉํฉ๋๋ค.
- ์ค๋ฅธ์ชฝ ์์ ํจ์ ํธ์ถ, ๋๊ธฐ ๋ฐ ์ค๋ฅ๊น์ง ํญ์ ์คํ๋ฉ๋๋ค. ๊ดํธ๋ ๋ฌถ์๋ง ๋ฐ๊พธ๋ฉฐ ๊ณ์ฐ์ ์๋ตํ์ง ์์ต๋๋ค. ์ ์กฐ๊ฑด์ด ์ฑ๊ณตํ ๊ฒฝ์ฐ์๋ง ๋ค์ ์์ ์คํํ๋ ค๋ฉด ์ค์ฒฉ IF๋ฅผ ์ฌ์ฉํ์ธ์.
์์
1. ์ด๋ฆ ๋ถ์ธ ํ๋๊ทธ ๊ฒฐํฉ
# ready=TRUE, blocked=FALSE์
๋๋ค. NOT(blocked)๋ 1์ด๋ฏ๋ก canRun์ 1์
๋๋ค. ready XOR blocked๋ ์ ํํ ํ๋๋ง ์ฐธ์ด๋ฏ๋ก ์ฐธ์
๋๋ค. Main์ canRun*10+exclusive=11์ ๋ฐํํฉ๋๋ค.
Option Explicit On
SUB Main()
VAR ready = TRUE
VAR blocked = FALSE
VAR canRun = ready AND (NOT blocked)
VAR exclusive = ready XOR blocked
RETURN canRun * 10 + exclusive
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
ready=TRUE, blocked=FALSE์ ๋๋ค. NOT(blocked)๋ 1์ด๋ฏ๋ก canRun์ 1์ ๋๋ค. ready XOR blocked๋ ์ ํํ ํ๋๋ง ์ฐธ์ด๋ฏ๋ก ์ฐธ์ ๋๋ค. Main์ canRun*10+exclusive=11์ ๋ฐํํฉ๋๋ค.
2. ๋ ํธ์ถ ๊ด์ฐฐ
# Mark๋ ByRef๋ก ๋ฐ์ counter๋ฅผ ์ฆ๊ฐ์ํค๊ณ TRUE๋ฅผ ๋ฐํํฉ๋๋ค. Main์ counter=0์ผ๋ก ์์ํฉ๋๋ค. FALSE AND Mark(counter)๋ Mark๋ฅผ ํธ์ถํ๊ณ TRUE OR Mark(counter)๋ ๋ค์ ํธ์ถํฉ๋๋ค. ์กฐ๊ฑด ๊ฒฐ๊ณผ๋ 0๊ณผ 1์ด์ง๋ง Main์ counter=2๋ฅผ ๋ฐํํฉ๋๋ค. Mark ์ ์ฒด ์ฝ๋๊ฐ ํฌํจ๋ฉ๋๋ค.
Option Explicit On
FUNCTION Mark(ByRef counter)
counter = counter + 1
RETURN TRUE
END FUNCTION
SUB Main()
VAR counter = 0
VAR first = FALSE AND Mark(counter)
VAR second = TRUE OR Mark(counter)
RETURN counter
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
Mark๋ ByRef๋ก ๋ฐ์ counter๋ฅผ ์ฆ๊ฐ์ํค๊ณ TRUE๋ฅผ ๋ฐํํฉ๋๋ค. Main์ counter=0์ผ๋ก ์์ํฉ๋๋ค. FALSE AND Mark(counter)๋ Mark๋ฅผ ํธ์ถํ๊ณ TRUE OR Mark(counter)๋ ๋ค์ ํธ์ถํฉ๋๋ค. ์กฐ๊ฑด ๊ฒฐ๊ณผ๋ 0๊ณผ 1์ด์ง๋ง Main์ counter=2๋ฅผ ๋ฐํํฉ๋๋ค. Mark ์ ์ฒด ์ฝ๋๊ฐ ํฌํจ๋ฉ๋๋ค.
3. ๋ช ์์ ์ธ ๋ฌถ์
# legacy๋ TRUE OR FALSE ๋ค์ AND FALSE๋ฅผ ๊ณ์ฐํ์ฌ 0์
๋๋ค. grouped๋ ๊ดํธ ์ FALSE AND FALSE ๋ค์ TRUE์ OR๋ฅผ ๊ณ์ฐํ์ฌ 1์
๋๋ค. Main์ legacy*10+grouped=1์ ๋ฐํํฉ๋๋ค.
Option Explicit On
SUB Main()
VAR legacy = TRUE OR FALSE AND FALSE
VAR grouped = TRUE OR (FALSE AND FALSE)
RETURN legacy * 10 + grouped
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
legacy๋ TRUE OR FALSE ๋ค์ AND FALSE๋ฅผ ๊ณ์ฐํ์ฌ 0์ ๋๋ค. grouped๋ ๊ดํธ ์ FALSE AND FALSE ๋ค์ TRUE์ OR๋ฅผ ๊ณ์ฐํ์ฌ 1์ ๋๋ค. Main์ legacy*10+grouped=1์ ๋ฐํํฉ๋๋ค.