API Basic While ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

While / Wend / Exit While / Break

ClassicUO โ€ข Basic

While๋Š” ๋งค ๋ฐ˜๋ณต ์ „์— ์กฐ๊ฑด์„ ๊ฒ€์‚ฌํ•˜๊ณ  ์ฐธ์ธ ๋™์•ˆ ๋ณธ๋ฌธ์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์—”์ง„์€ Wend๋กœ ๋‹ซ์œผ๋ฉฐ VB.NET์˜ End While ํ‘œ๊ธฐ๋Š” ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ •ํ™•ํ•œ ๊ตฌ๋ฌธ

While condition
    statements
Wend
Continue While
Exit While
Break

๋งค๊ฐœ๋ณ€์ˆ˜

  • condition โ€” ์ฒซ ๊ฒ€์‚ฌ์™€ ๋งˆ์ง€๋ง‰ ๊ฒ€์‚ฌ๋ฅผ ํฌํ•จํ•ด ๋งค๋ฒˆ ๋‹ค์‹œ ํ‰๊ฐ€ํ•˜๋Š” ์‹์ž…๋‹ˆ๋‹ค. ๋น„๊ต๋‚˜ ์ˆซ์ž Boolean์„ ์‚ฌ์šฉํ•˜์„ธ์š”. 0/False๋Š” ์ข…๋ฃŒ, 1/True ๋ฐ ๋‹ค๋ฅธ 0์ด ์•„๋‹Œ ์ˆซ์ž๋Š” ๊ณ„์†ํ•ฉ๋‹ˆ๋‹ค. ํ…์ŠคํŠธ๋ฅผ Boolean์œผ๋กœ ํ•ด์„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • statements โ€” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์กฐ๊ฑด์„ ์ง„ํ–‰์‹œํ‚ค๋Š” ๋ณธ๋ฌธ ๋ช…๋ น์ž…๋‹ˆ๋‹ค. ์ฒซ ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ด๋ฉด ๋ณธ๋ฌธ ์ „์ฒด๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.
  • Wend / exit โ€” Wend๋Š” ์กฐ๊ฑด์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. Continue While๋Š” ๋‹ค์‹œ ๊ฒ€์‚ฌํ•˜๊ณ  Exit While๋Š” ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋‚ด๋ถ€ ๋ฐ˜๋ณต๋ฌธ์„ ๋„˜์–ด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด While๋ฅผ ๋๋ƒ…๋‹ˆ๋‹ค. Break๋Š” ์ข…๋ฅ˜์™€ ๊ด€๊ณ„์—†์ด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฐ˜๋ณต๋ฌธ์„ ๋๋ƒ…๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

While, Wend, Exit While, Break๋Š” ๋ฐ˜ํ™˜๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ณธ๋ฌธ์˜ RETURN์€ ํ”„๋กœ์‹œ์ €/ํ•จ์ˆ˜ ์ „์ฒด๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ๋Š” Integer 6,1,406์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ 1์€ ๋ฐฐ์—ด ์ธ๋ฑ์Šค์ด์ง€ ์„ฑ๊ณต Boolean์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋™์ž‘

  • ๊ฒ€์‚ฌ, ๋ณธ๋ฌธ ์‹คํ–‰, ๊ฒ€์‚ฌ๋กœ ๋ณต๊ท€ํ•˜๋Š” ์ˆœ์„œ์ž…๋‹ˆ๋‹ค. ์ˆซ์ž ๊ฒฝ๊ณ„๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์นด์šดํ„ฐ๋ฅผ ์ž๋™ ์ฆ๊ฐ€์‹œํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ง„ํ–‰์„ ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์„ฑํ•˜์„ธ์š”. ๊ฒŒ์ž„ ์ƒํƒœ๋ฅผ ๋ฐ˜๋ณต ์กฐํšŒํ•  ๋•Œ ์ ์ ˆํ•œ Wait์™€ ๊ธฐํ•œ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”. While ์ž์ฒด๋Š” ๋Œ€๊ธฐํ•˜๊ฑฐ๋‚˜ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ์‹œ ์ค‘์ง€์™€ ์ •์ง€๋Š” ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Continue๋‚˜ ์ข…๋ฃŒ๋กœ ๋– ๋‚˜๋Š” Try์˜ Finally๋Š” ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ—ค๋”, ๋ช…๋ น, Wend๋Š” ํ”„๋กœ์‹œ์ €๋‚˜ ํ•จ์ˆ˜ ์•ˆ์—์„œ ๊ฐ๊ฐ ๋ณ„๋„ ์ค„๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

1. ์ž๋ฆฟ์ˆ˜ ํ•ฉ๊ณ„

# DigitSum์€ number=123์„ ByVal๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค. MOD 10์œผ๋กœ ๋งˆ์ง€๋ง‰ ์ž๋ฆฌ๋ฅผ ์ฝ๊ณ  Fix(number/10)์œผ๋กœ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค: 123โ†’12โ†’1โ†’0. total=3+2+1=6์ด๋ฉฐ ๋งˆ์ง€๋ง‰ ๊ฑฐ์ง“ ์กฐ๊ฑด์œผ๋กœ ๋๋‚˜ Main์ด 6์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ 0์ด๋ฉด ๋ณธ๋ฌธ ์—†์ด 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Function DigitSum(ByVal number)
    Var total = 0
    While number > 0
        total += number MOD 10
        number = Fix(number / 10)
    Wend
    Return total
End Function
Sub Main()
    Return DigitSum(123)
End Sub

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

DigitSum์€ number=123์„ ByVal๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค. MOD 10์œผ๋กœ ๋งˆ์ง€๋ง‰ ์ž๋ฆฌ๋ฅผ ์ฝ๊ณ  Fix(number/10)์œผ๋กœ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค: 123โ†’12โ†’1โ†’0. total=3+2+1=6์ด๋ฉฐ ๋งˆ์ง€๋ง‰ ๊ฑฐ์ง“ ์กฐ๊ฑด์œผ๋กœ ๋๋‚˜ Main์ด 6์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ 0์ด๋ฉด ๋ณธ๋ฌธ ์—†์ด 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

2. ์ฒซ ์ผ์น˜ ์ฐพ๊ธฐ

# FirstAbove๋Š” values=[4,7,9], threshold=6์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ธธ์ด ๊ฒ€์‚ฌ๊ฐ€ values[index]๋ฅผ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. index=1์—์„œ 7>6์ด๋ฏ€๋กœ found=1์„ ์ €์žฅํ•˜๊ณ  Exit While๋กœ ๋๋ƒ…๋‹ˆ๋‹ค. ์ผ์น˜๊ฐ€ ์—†์œผ๋ฉด -1์ด๋ฉฐ Main์€ 0๋ถ€ํ„ฐ ์„ธ๋Š” ์ธ๋ฑ์Šค 1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Function FirstAbove(ByVal values, ByVal threshold)
    Var index = 0
    Var found = -1
    While index < GetArrayLength(values)
        If values[index] > threshold Then
            found = index
            Exit While
        End If
        index += 1
    Wend
    Return found
End Function
Sub Main()
    Dim values[2]
    values[0] = 4
    values[1] = 7
    values[2] = 9
    Return FirstAbove(values, 6)
End Sub

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

FirstAbove๋Š” values=[4,7,9], threshold=6์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ธธ์ด ๊ฒ€์‚ฌ๊ฐ€ values[index]๋ฅผ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. index=1์—์„œ 7>6์ด๋ฏ€๋กœ found=1์„ ์ €์žฅํ•˜๊ณ  Exit While๋กœ ๋๋ƒ…๋‹ˆ๋‹ค. ์ผ์น˜๊ฐ€ ์—†์œผ๋ฉด -1์ด๋ฉฐ Main์€ 0๋ถ€ํ„ฐ ์„ธ๋Š” ์ธ๋ฑ์Šค 1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

3. ์กฐ๊ฑด ๊ฒ€์‚ฌ ํšŸ์ˆ˜

# CanContinue๋Š” checks๋ฅผ ByRef, index์™€ limit=3์„ ByVal๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค. checks๋ฅผ ๋Š˜๋ฆฐ ํ›„ index<limit๋ฅผ 1/0์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. index=0,1,2,3์—์„œ ๊ฒ€์‚ฌํ•˜๋ฏ€๋กœ ์„ธ ๋ฐ˜๋ณต์— ๋„ค ํ˜ธ์ถœ์ž…๋‹ˆ๋‹ค. total=6์ด๋ฉฐ Main์€ 406์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Function CanContinue(ByRef checks, ByVal index, ByVal limit)
    checks += 1
    Return index < limit
End Function
Sub Main()
    Var checks = 0
    Var index = 0
    Var total = 0
    While CanContinue(checks, index, 3)
        index += 1
        total += index
    Wend
    Return checks * 100 + total
End Sub

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

CanContinue๋Š” checks๋ฅผ ByRef, index์™€ limit=3์„ ByVal๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค. checks๋ฅผ ๋Š˜๋ฆฐ ํ›„ index<limit๋ฅผ 1/0์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. index=0,1,2,3์—์„œ ๊ฒ€์‚ฌํ•˜๋ฏ€๋กœ ์„ธ ๋ฐ˜๋ณต์— ๋„ค ํ˜ธ์ถœ์ž…๋‹ˆ๋‹ค. total=6์ด๋ฉฐ Main์€ 406์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


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

Basic