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์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


en ยท ru ยท uk ยท fr ยท de ยท it ยท es ยท zh-tw ยท ja ยท ko

Basic