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

For / To / Step / Next / Exit For

ClassicUO โ€ข Basic

For๋Š” ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ ๋๊ฐ’์„ ํฌํ•จํ•˜๋Š” ์ˆซ์ž ๋ฒ”์œ„์—์„œ ๋ธ”๋ก์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด ์ธ๋ฑ์Šค๋‚˜ ์ •ํ•ด์ง„ ํšŸ์ˆ˜์˜ ์ž‘์—…์— ์ ํ•ฉํ•˜๋ฉฐ For Each๋Š” ์š”์†Œ ๊ฐ’์„ ์ˆœํšŒํ•ฉ๋‹ˆ๋‹ค.

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

For [VAR] counter = start To limit [Step increment]
    statements
Next [counter]
Continue For
Exit For
Break

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

  • counter / VAR โ€” ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ์Šค์นผ๋ผ ์นด์šดํ„ฐ์ž…๋‹ˆ๋‹ค. VAR๋Š” ํ”„๋กœ์‹œ์ € ์•ˆ์— ์„ ์–ธํ•˜๋ฉฐ ์ƒ๋žตํ•˜๋ฉด ๊ธฐ์กด ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Option Explicit On์—์„œ๋Š” ๋ฏธ๋ฆฌ ์„ ์–ธํ•˜๊ฑฐ๋‚˜ For Var๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ํ˜•์‹์€ DIM counter AS Integer๋กœ ๋จผ์ € ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž For ํ—ค๋” ์•ˆ์˜ AS๋Š” ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • start โ€” ์‹œ์ž‘ ์ˆซ์ž ์‹์ž…๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ ํ‰๊ฐ€ํ•˜๊ณ  ๋Œ€์ž…ํ•œ ๋‹ค์Œ limit์™€ increment๋ฅผ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • limit โ€” ๋ฒ”์œ„์— ํฌํ•จ๋˜๋Š” ๋๊ฐ’์œผ๋กœ ์ง„์ž… ์‹œ ํ•œ ๋ฒˆ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์–‘์ˆ˜ ๋‹จ๊ณ„๋Š” counter <= limit, ์Œ์ˆ˜ ๋‹จ๊ณ„๋Š” counter >= limit๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • increment โ€” ์„ ํƒ์  ์ˆซ์ž ๋‹จ๊ณ„๋กœ ๊ธฐ๋ณธ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค. ์Œ์ˆ˜๋‚˜ ์†Œ์ˆ˜๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ 0์€ ์žก์„ ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ์นด์šดํ„ฐ ํ˜•์‹๊ณผ ๋‹จ๊ณ„๊ฐ€ ์‹ค์ œ๋กœ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • statements / Next / exit โ€” ๋ณธ๋ฌธ๊ณผ Next๋Š” ๋ณ„๋„ ์ค„์ž…๋‹ˆ๋‹ค. Next ๋’ค ์ด๋ฆ„์€ ์ƒ๋žต ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์“ฐ๋ฉด ์นด์šดํ„ฐ์™€ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. Continue For๋Š” ๋‹ค์Œ ๋‹จ๊ณ„๋กœ, Exit For๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด For/For Each ๋ฐ–์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. Break๋Š” ์ข…๋ฅ˜์™€ ๊ด€๊ณ„์—†์ด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฐ˜๋ณต๋ฌธ์„ ๋๋ƒ…๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

For, Next, Exit For๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์นด์šดํ„ฐ๋Š” ์ˆซ์ž์ด๋ฉฐ ์ž๋™ ์•„์ดํ…œ ID๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด ์—”์ง„์€ ์ •์ƒ ์ข…๋ฃŒ ํ›„ ๋ฒ”์œ„ ๋ฐ– ๊ฐ’ ๋Œ€์‹  ๋งˆ์ง€๋ง‰์œผ๋กœ ์‹คํ–‰ํ•œ ๊ฐ’์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ณธ๋ฌธ์„ ๊ฑด๋„ˆ๋›ฐ๋ฉด start, ์กฐ๊ธฐ ์ข…๋ฃŒํ•˜๋ฉด ํ˜„์žฌ ๊ฐ’์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ๋Š” Main์—์„œ Integer 12, 28, 395๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋™์ž‘

  • ์ง„์ž… ์ˆœ์„œ: start ๋Œ€์ž…, ๋๊ฐ’๊ณผ ๋‹จ๊ณ„ ์ €์žฅ, 0 ๊ฑฐ๋ถ€, ์ฒซ ๊ฐ’ ๊ฒ€์‚ฌ์ž…๋‹ˆ๋‹ค. ๋ฐฉํ–ฅ์ด ๋งž์ง€ ์•Š์œผ๋ฉด ๋ณธ๋ฌธ์„ ๊ฑด๋„ˆ๋›ฐ๋ฉฐ start=limit์ด๋ฉด ํ•œ ๋ฒˆ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • Next๋Š” counter+step์„ ๊ฒ€์‚ฌํ•˜๊ณ  ๋‹ค์Œ ๋ฐ˜๋ณต์ด ๋ฒ”์œ„ ์•ˆ์ผ ๋•Œ๋งŒ ๋Œ€์ž…ํ•ฉ๋‹ˆ๋‹ค. 1 To 5 Step 3์€ 1๊ณผ 4๋ฅผ ๋ฐฉ๋ฌธํ•ฉ๋‹ˆ๋‹ค. ๋๊ฐ’ยท๋‹จ๊ณ„์˜ ์›๋ž˜ ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๊ฟ”๋„ ์ €์žฅ๋œ ๊ฐ’์€ ๋ฐ”๋€Œ์ง€ ์•Š์ง€๋งŒ ์นด์šดํ„ฐ ์ž์ฒด๋ฅผ ๋ฐ”๊พธ๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.
  • ์‹คํ–‰ ์ „ ๊ตฌ์กฐ์™€ Next ์ด๋ฆ„์„ ๊ฒ€์‚ฌํ•˜๋ฉฐ ๊ตฌ์กฐ ์˜ค๋ฅ˜๋Š” SC020์ž…๋‹ˆ๋‹ค. ์ค‘์ฒฉ ๋ฐ˜๋ณต๋ฌธ์—๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์นด์šดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. Try๋ฅผ ๋– ๋‚˜๋ฉด Finally๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ผ์‹œ ์ค‘์ง€์™€ ์ •์ง€๋Š” ์œ ์ง€๋˜์ง€๋งŒ ์ž๋™ ์ง€์—ฐ์ด๋‚˜ ์‹œ๊ฐ„ ์ œํ•œ์€ ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ

1. ๋ฐฐ์—ด ์…€ ํ•ฉ๊ณ„

# values[2]๋Š” ์ธ๋ฑ์Šค 0,1,2์— 2,4,6์„ ๋‹ด์Šต๋‹ˆ๋‹ค. Sum์€ ๋ฐฐ์—ด์„ ByVal๋กœ ๋ฐ›๊ณ  index=0์—์„œ ์‹œ์ž‘ํ•ด length-1=2๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋‹จ๊ณ„ 1๋กœ ์„ธ ์…€์„ ๋ฐฉ๋ฌธํ•˜๊ณ  total=12๋ฅผ Main์— ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Function Sum(ByVal items)
    Var total = 0
    For Var index = 0 To GetArrayLength(items) - 1
        total += items[index]
    Next index
    Return total
End Function
Sub Main()
    Dim values[2]
    values[0] = 2
    values[1] = 4
    values[2] = 6
    Return Sum(values)
End Sub

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

values[2]๋Š” ์ธ๋ฑ์Šค 0,1,2์— 2,4,6์„ ๋‹ด์Šต๋‹ˆ๋‹ค. Sum์€ ๋ฐฐ์—ด์„ ByVal๋กœ ๋ฐ›๊ณ  index=0์—์„œ ์‹œ์ž‘ํ•ด length-1=2๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋‹จ๊ณ„ 1๋กœ ์„ธ ์…€์„ ๋ฐฉ๋ฌธํ•˜๊ณ  total=12๋ฅผ Main์— ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

2. ๋์—์„œ๋ถ€ํ„ฐ ์‚ญ์ œ

# items์—๋Š” -1,3,-2,5๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ Count()-1=3, ๋ 0, ๋‹จ๊ณ„ -1์ž…๋‹ˆ๋‹ค. ์Œ์ˆ˜ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ์ธ๋ฑ์Šค๋งŒ ์ด๋™ํ•˜๋ฏ€๋กœ ๋‚จ์€ ์š”์†Œ๋ฅผ ๋†“์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 3๊ณผ 5๊ฐ€ ๋‚จ์•„ Count()*10+3+5๋Š” 28์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Sub Main()
    Var items = List()
    items.Add(-1)
    items.Add(3)
    items.Add(-2)
    items.Add(5)
    For Var index = items.Count() - 1 To 0 Step -1
        If items[index] < 0 Then
            items.RemoveAt(index)
        End If
    Next index
    Return items.Count() * 10 + items[0] + items[1]
End Sub

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

items์—๋Š” -1,3,-2,5๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ Count()-1=3, ๋ 0, ๋‹จ๊ณ„ -1์ž…๋‹ˆ๋‹ค. ์Œ์ˆ˜ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ์ธ๋ฑ์Šค๋งŒ ์ด๋™ํ•˜๋ฏ€๋กœ ๋‚จ์€ ์š”์†Œ๋ฅผ ๋†“์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 3๊ณผ 5๊ฐ€ ๋‚จ์•„ Count()*10+3+5๋Š” 28์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

3. ์ €์žฅ๋œ ๊ฒฝ๊ณ„์™€ ์ตœ์ข… ์นด์šดํ„ฐ

# ReadLimit๋Š” ByRef calls๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  value๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘ 1, ๋ 5, ๋‹จ๊ณ„ 2๋ฅผ ๊ฐ๊ฐ ํ•œ ๋ฒˆ ํ‰๊ฐ€ํ•ด calls=3์ž…๋‹ˆ๋‹ค. ๋ณธ๋ฌธ์˜ upper=99, stride=1์€ ์ด ๋ฐ˜๋ณต์„ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 1,3,5๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ total=9, index๋Š” 5๋กœ ๋‚จ์Šต๋‹ˆ๋‹ค. Main์€ 395๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Function ReadLimit(ByRef calls, ByVal value)
    calls += 1
    Return value
End Function
Sub Main()
    Var calls = 0
    Var upper = 5
    Var stride = 2
    Var total = 0
    For Var index = ReadLimit(calls, 1) To ReadLimit(calls, upper) Step ReadLimit(calls, stride)
        total += index
        upper = 99
        stride = 1
    Next index
    Return calls * 100 + total * 10 + index
End Sub

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

ReadLimit๋Š” ByRef calls๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  value๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘ 1, ๋ 5, ๋‹จ๊ณ„ 2๋ฅผ ๊ฐ๊ฐ ํ•œ ๋ฒˆ ํ‰๊ฐ€ํ•ด calls=3์ž…๋‹ˆ๋‹ค. ๋ณธ๋ฌธ์˜ upper=99, stride=1์€ ์ด ๋ฐ˜๋ณต์„ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 1,3,5๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ total=9, index๋Š” 5๋กœ ๋‚จ์Šต๋‹ˆ๋‹ค. Main์€ 395๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


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

Basic