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

Do / Loop / While / Until / Repeat

ClassicUO โ€ข Basic

Do๋Š” ๋ณธ๋ฌธ ์ „์ด๋‚˜ ํ›„์— ์กฐ๊ฑด์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. While๋Š” ์ฐธ์ธ ๋™์•ˆ, Until์€ ์ฐธ์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. Repeat โ€ฆ Until์€ ๋ณธ๋ฌธ ๋’ค์— ๊ฒ€์‚ฌํ•˜๋Š” ์ง€์›๋˜๋Š” ๊ธฐ์กด ํ˜•์‹์ž…๋‹ˆ๋‹ค.

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

Do While condition
    statements
Loop
Do Until condition
    statements
Loop
Do
    statements
Loop While condition
Do
    statements
Loop Until condition
Do
    statements
Loop
Repeat
    statements
Until condition
Continue Do
Exit Do
Break

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

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

๋ฐ˜ํ™˜๊ฐ’

Do, Loop, Repeat, Until, Exit Do์—๋Š” ๋ฐ˜ํ™˜๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ๋Š” Main์—์„œ Integer 1,33,83์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์ด๋Š” ๊ฒฐํ•ฉ๋œ ์นด์šดํ„ฐ ๊ฐ’์ด์ง€ ๋ช…๋ น์˜ Boolean ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋™์ž‘

  • ์ค€๋น„ ๋‹จ๊ณ„์—์„œ ๋ธ”๋ก๊ณผ ์ด๋™์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ Do์˜ ์ฒ˜์Œ๊ณผ ๋ ๋ชจ๋‘์— ์กฐ๊ฑด์„ ์ง€์ •ํ•˜๋ฉด SC020์ž…๋‹ˆ๋‹ค. ์—”์ง„์€ ์„ ํƒํ•œ ์œ„์น˜์—์„œ ํ‰๊ฐ€ํ•˜๊ณ  While/Until ๊ทœ์น™์œผ๋กœ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
  • ํ›„์กฐ๊ฑด์˜ Continue Do๋Š” ๋ ์กฐ๊ฑด์„ ๋ฐ˜๋“œ์‹œ ๊ฒ€์‚ฌํ•˜๋ฉฐ ์ „์กฐ๊ฑด์ด๋ฉด ํ—ค๋”๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. Try๋ฅผ ๋– ๋‚˜๋Š” ์ด๋™ ์ „์— Finally๊ฐ€ ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • Repeat๋Š” ๋จผ์ € ์‹คํ–‰ํ•˜๋ฏ€๋กœ ๋นˆ ๋ฐฐ์—ด์€ ์ง„์ž… ์ „์— ์ฒ˜๋ฆฌํ•˜์„ธ์š”. ์•”๋ฌต์  ์‹œ๊ฐ„ ์ œํ•œ์€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ๋Œ€๊ธฐ์—๋Š” Wait์™€ ๊ธฐํ•œ์„ ์‚ฌ์šฉํ•˜๋ฉฐ ์ผ์‹œ ์ค‘์ง€ยท์ •์ง€ ๊ฒ€์‚ฌ๋Š” ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

1. ์ „ํ›„ ๊ฒ€์‚ฌ ์ฐจ์ด

# ready=True๋Š” ์ด๋ฏธ Until์„ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค. Do Until ready๋Š” 0๋ฒˆ ์‹คํ–‰ํ•˜์—ฌ before=0์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ฐ˜๋ณต์€ ์ฆ๊ฐ€ ํ›„ ๊ฒ€์‚ฌํ•˜๋ฏ€๋กœ after=1์ž…๋‹ˆ๋‹ค. Main์€ before*10+after=1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Sub Main()
    Var ready = True
    Var before = 0
    Var after = 0
    Do Until ready
        before += 1
    Loop
    Do
        after += 1
    Loop Until ready
    Return before * 10 + after
End Sub

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

ready=True๋Š” ์ด๋ฏธ Until์„ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค. Do Until ready๋Š” 0๋ฒˆ ์‹คํ–‰ํ•˜์—ฌ before=0์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ฐ˜๋ณต์€ ์ฆ๊ฐ€ ํ›„ ๊ฒ€์‚ฌํ•˜๋ฏ€๋กœ after=1์ž…๋‹ˆ๋‹ค. Main์€ before*10+after=1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

2. ์ œํ•œ๋œ ์‹œ๋„์™€ ์ •๋ฆฌ

# attempts๋Š” 0์—์„œ ์‹œ์ž‘ํ•ด ๋งค๋ฒˆ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค. ์ฒซ ๋‘ Continue Do๋Š” Finally๋ฅผ ์‹คํ–‰ํ•œ ๋’ค attempts<4๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ Exit Do๋„ Finally๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. attempts=3, cleanup=3์ด๋ฏ€๋กœ 33์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ๋„คํŠธ์›Œํฌ ์žฌ์‹œ๋„๊ฐ€ ์•„๋‹Œ ๋กœ์ปฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ž…๋‹ˆ๋‹ค.
Option Explicit On
Sub Main()
    Var attempts = 0
    Var cleanup = 0
    Do
        Try
            attempts += 1
            If attempts < 3 Then
                Continue Do
            End If
            Exit Do
        Finally
            cleanup += 1
        End Try
    Loop While attempts < 4
    Return attempts * 10 + cleanup
End Sub

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

attempts๋Š” 0์—์„œ ์‹œ์ž‘ํ•ด ๋งค๋ฒˆ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค. ์ฒซ ๋‘ Continue Do๋Š” Finally๋ฅผ ์‹คํ–‰ํ•œ ๋’ค attempts<4๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ Exit Do๋„ Finally๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. attempts=3, cleanup=3์ด๋ฏ€๋กœ 33์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ๋„คํŠธ์›Œํฌ ์žฌ์‹œ๋„๊ฐ€ ์•„๋‹Œ ๋กœ์ปฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ž…๋‹ˆ๋‹ค.

3. ์ข…๋ฃŒ ํ‘œ์‹์„ ์ฝ๋Š” ๊ธฐ์กด ๋ฐ˜๋ณต๋ฌธ

# values=[3,5,0]์€ ๋น„์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Repeat๋Š” ์…€์„ ์ฝ๊ณ  index๋ฅผ ๋Š˜๋ ค ํ•ฉ์‚ฐํ•ฉ๋‹ˆ๋‹ค. Until์€ 0์ด๋‚˜ ๋ฐฐ์—ด ๋์—์„œ ๋ฉˆ์ถ”๋ฉฐ 0์„ ์ฐพ์œผ๋ฉด OrElse๊ฐ€ ๋‘ ๋ฒˆ์งธ ๊ฒ€์‚ฌ๋ฅผ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค. total=8, index=3์œผ๋กœ 83์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Sub Main()
    Dim values[2]
    values[0] = 3
    values[1] = 5
    values[2] = 0
    Var index = 0
    Var value = 0
    Var total = 0
    Repeat
        value = values[index]
        index += 1
        total += value
    Until (value = 0) OrElse (index >= GetArrayLength(values))
    Return total * 10 + index
End Sub

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

values=[3,5,0]์€ ๋น„์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Repeat๋Š” ์…€์„ ์ฝ๊ณ  index๋ฅผ ๋Š˜๋ ค ํ•ฉ์‚ฐํ•ฉ๋‹ˆ๋‹ค. Until์€ 0์ด๋‚˜ ๋ฐฐ์—ด ๋์—์„œ ๋ฉˆ์ถ”๋ฉฐ 0์„ ์ฐพ์œผ๋ฉด OrElse๊ฐ€ ๋‘ ๋ฒˆ์งธ ๊ฒ€์‚ฌ๋ฅผ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค. total=8, index=3์œผ๋กœ 83์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


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

Basic