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์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ณด์กฐ ํ•จ์ˆ˜๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.


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

Basic