API Basic If ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
IF / ELSEIF / ELSE / END IF
ClassicUO โข Basic
IF๋ ์ต๋ ํ๋์ ๋ถ๊ธฐ๋ฅผ ์ ํํฉ๋๋ค. IF์ ์ด์ด์ง๋ ELSEIF๋ฅผ ์์๋๋ก ํ์ธํด ์ฒ์ ์ฐธ์ธ ์กฐ๊ฑด์ ์ ํํฉ๋๋ค. ๋ชจ๋ ๊ฑฐ์ง์ด๋ฉด ์ ํ์ ์ธ ELSE๋ฅผ ์คํํ๊ณ ๋ณดํต END IF ๋ค์์ผ๋ก ์งํํฉ๋๋ค.
์ ํํ ๊ตฌ๋ฌธ
IF condition THEN
statements
END IF
IF condition THEN
statements
ELSEIF elseifCondition THEN
statements
ELSE
statements
END IF
๋งค๊ฐ๋ณ์
conditionโ condition: ์ง์ ์ ํ ๋ฒ ํ์ธํ๋ ์. ์ซ์ 0์ ๊ฑฐ์ง, 0์ด ์๋ ์๋ ์ฐธ์ ๋๋ค. ๋ช ์์ ์ธ ๋น๊ต๋ API ๋ ผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๊ถ์ฅํฉ๋๋ค.elseifConditionโ elseifCondition: ์์ ์กฐ๊ฑด์ด ๋ชจ๋ ๊ฑฐ์ง์ผ ๋๋ง ํ์ธํ๋ ์ถ๊ฐ ์กฐ๊ฑด. ELSEIF๋ ํ ๋จ์ด๋ก ์๋๋ค.statements / ELSEโ statements / ELSE: ๋ค์ ์ค๋ค์ ๋ช ๋ น. ELSE๋ ์ ํ ์ฌํญ์ด๋ฉฐ ์กฐ๊ฑด ์์ด ๋ง์ง๋ง์ ํ ๋ฒ๋ง ์ฌ ์ ์์ต๋๋ค. THEN๊ณผ END IF๋ ํ์์ด๋ฉฐ ์ฌ๋ฌ ์ค ๋ธ๋ก์ ์ฌ์ฉํฉ๋๋ค.
๋ฐํ๊ฐ
๊ฐ์ ๋ฐํํ์ง ์์ต๋๋ค(Unit). IF๋ ์ ์ด๋ฌธ์ด๋ฉฐ ํจ์๊ฐ ์๋๋๋ค. ์กฐ๊ฑด์ด๋ ์ ํ๋ RETURN์ ๊ฐ์ ๋ง๋ค ์ ์์ต๋๋ค. ๋ ผ๋ฆฌ ๊ฐ 1/0์ TRUE/FALSE์ ๋น๊ตํ ์ ์์ต๋๋ค. IF count๋ 0์ด ์๋ ๋ชจ๋ ๊ฐ์๋ฅผ ๋ฐ์๋ค์ด์ง๋ง IF count=TRUE๋ 1๋ง ์ผ์นํฉ๋๋ค.
๋์
- ์ปดํ์ผ๋ฌ๋ ์กฐ๊ฑด ๋ฐ ์ข ๋ฃ ์ ํ๋ฅผ ๋ง๋ญ๋๋ค. ๊ฑฐ์ง์ด๋ฉด ๋ค์ ์กฐ๊ฑด์ด๋ ELSE๋ก ์ด๋ํ๊ณ ์ ํํ ๋ถ๊ธฐ๋ ๋๋จธ์ง๋ฅผ ๊ฑด๋๋๋๋ค. ์ค์ฒฉ IF์๋ ์์ฒด ELSE๊ฐ ์์ต๋๋ค. RETURN์ ๋ฐ๊นฅ FINALLY๋ฅผ ์ํํ๋ฉฐ ํ๋ก์์ ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
- ๊ธฐ์กด ํธํ์ฑ์ ์ํด IF๋ ๋ชจ๋ ์ข ๋ฅ๋ฅผ CBool๋ก ๋ณํํ์ง ์๊ณ ์ซ์ 0๊ณผ ๋น๊ตํฉ๋๋ค. ๋ฌธ์์ด "0", ๋น ๋ฌธ์์ด, ๋ฐฐ์ด, ๊ฐ์ฒด, Unit์ ์ฐธ ๋ถ๊ธฐ๋ฅผ ์ ํํฉ๋๋ค. ๋ฌธ์์ด์ ๋ช ์์ ์ผ๋ก ๋ณํํ๊ฑฐ๋ ์ํ๋ ์์ฑ์ ๋น๊ตํ์ธ์. AndAlso/OrElse๋ ์ซ์๋ฅผ ์๊ตฌํฉ๋๋ค.
- ๊ฑด๋๋ด ๋ถ๊ธฐ์ ์ ์ธ์ ์คํ ์ค ๋ณ์๋ฅผ ๋ง๋ค์ง ์์ต๋๋ค. ๊ณต์ ํ ๊ฒฐ๊ณผ๋ IF ์ ์ ์ ์ธํ๊ณ ์ด๊ธฐํํ์ธ์. Option Explicit๋ ์ด๋ฆ์ ๊ฒ์ฌํ๋ฉฐ ๋ชจ๋ ๊ฒฝ๋ก์ ๋์ ์ ๋ณด์ฅํ์ง ์์ต๋๋ค. ์ฌ๋ฌ ELSE๋ Option Explicit ์์ด๋ ์คํ ์ SC015๋ก ๊ฑฐ๋ถ๋ฉ๋๋ค.
์์
1. ๋ค ๊ฐ์ง ๋ถ๋ฅ
# Classify(value)๋ <0, =0, <10, ๋ง์ง๋ง ELSE๋ฅผ ํ์ธํฉ๋๋ค. -2, 0, 7, 20์ negative, zero, small, large๋ฅผ ๋ฐํํฉ๋๋ค. Main์ "negative:zero:small:large"๋ฅผ ๋ฐํํ๊ณ ๊ฐ ํธ์ถ์ RETURN ํ๋๋ง ์คํํฉ๋๋ค.
Option Explicit On
FUNCTION Classify(value)
IF value < 0 THEN
RETURN "negative"
ELSEIF value = 0 THEN
RETURN "zero"
ELSEIF value < 10 THEN
RETURN "small"
ELSE
RETURN "large"
END IF
END FUNCTION
SUB Main()
RETURN Classify(-2) + ":" + Classify(0) + ":" + Classify(7) + ":" + Classify(20)
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
Classify(value)๋ <0, =0, <10, ๋ง์ง๋ง ELSE๋ฅผ ํ์ธํฉ๋๋ค. -2, 0, 7, 20์ negative, zero, small, large๋ฅผ ๋ฐํํฉ๋๋ค. Main์ "negative:zero:small:large"๋ฅผ ๋ฐํํ๊ณ ๊ฐ ํธ์ถ์ RETURN ํ๋๋ง ์คํํฉ๋๋ค.
2. ์ค์ฒฉ๋ ํ๋จ
# Action(enabled, amount)๋ enabled๋ฅผ ํ์ธํ ๋ค amount>0์ ๋ฐ๋ผ work ๋๋ idle์ ์ ํํฉ๋๋ค. ๋ฐ๊นฅ ELSE๋ disabled์
๋๋ค. (TRUE,5), (TRUE,0), (FALSE,5)๋ "work:idle:disabled"๋ฅผ ๋ง๋ญ๋๋ค. END IF๋ง๋ค ํด๋น ๋ธ๋ก์ ๋ซ์ต๋๋ค.
Option Explicit On
FUNCTION Action(enabled, amount)
IF enabled THEN
IF amount > 0 THEN
RETURN "work"
ELSE
RETURN "idle"
END IF
ELSE
RETURN "disabled"
END IF
END FUNCTION
SUB Main()
RETURN Action(TRUE, 5) + ":" + Action(TRUE, 0) + ":" + Action(FALSE, 5)
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
Action(enabled, amount)๋ enabled๋ฅผ ํ์ธํ ๋ค amount>0์ ๋ฐ๋ผ work ๋๋ idle์ ์ ํํฉ๋๋ค. ๋ฐ๊นฅ ELSE๋ disabled์ ๋๋ค. (TRUE,5), (TRUE,0), (FALSE,5)๋ "work:idle:disabled"๋ฅผ ๋ง๋ญ๋๋ค. END IF๋ง๋ค ํด๋น ๋ธ๋ก์ ๋ซ์ต๋๋ค.
3. ์กฐ๊ฑด ํ์ธ ์์
# Check(calls,value)๋ ByRef์ calls๋ฅผ ์ฆ๊ฐ์ํค๊ณ value๋ฅผ ๋ฐํํฉ๋๋ค. ์ฒซ ์กฐ๊ฑด์ ๊ฑฐ์ง, ๋์งธ๋ ์ฐธ์ด๋ฏ๋ก ์
์งธ์ ELSE๋ ์๋ตํฉ๋๋ค. result=7, calls=2์ด๋ฉฐ Main์ calls*10+result=27์ ๋ฐํํฉ๋๋ค. ๋ชจ๋ ๋ณด์กฐ ํจ์๊ฐ ํฌํจ๋ฉ๋๋ค.
Option Explicit On
FUNCTION Check(ByRef calls, ByVal value)
calls += 1
RETURN value
END FUNCTION
SUB Main()
VAR calls = 0
VAR result = 0
IF Check(calls, FALSE) THEN
result = 5
ELSEIF Check(calls, TRUE) THEN
result = 7
ELSEIF Check(calls, TRUE) THEN
result = 9
ELSE
result = 8
END IF
RETURN calls * 10 + result
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
Check(calls,value)๋ ByRef์ calls๋ฅผ ์ฆ๊ฐ์ํค๊ณ value๋ฅผ ๋ฐํํฉ๋๋ค. ์ฒซ ์กฐ๊ฑด์ ๊ฑฐ์ง, ๋์งธ๋ ์ฐธ์ด๋ฏ๋ก ์ ์งธ์ ELSE๋ ์๋ตํฉ๋๋ค. result=7, calls=2์ด๋ฉฐ Main์ calls*10+result=27์ ๋ฐํํฉ๋๋ค. ๋ชจ๋ ๋ณด์กฐ ํจ์๊ฐ ํฌํจ๋ฉ๋๋ค.