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

GoTo / label:

ClassicUO โ€ข Basic

GoTo๋Š” ํ˜„์žฌ ํ”„๋กœ์‹œ์ € ๋˜๋Š” ํ•จ์ˆ˜์˜ ์ด๋ฆ„ ์žˆ๋Š” ๋ ˆ์ด๋ธ”๋กœ ์‹คํ–‰์„ ์˜ฎ๊น๋‹ˆ๋‹ค. ๋ ˆ์ด๋ธ”์€ ์ฝ”๋“œ ์œ„์น˜์ด๋ฉฐ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์‹œ์ €๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์ œ์–ด์—๋Š” If, ๋ฐ˜๋ณต๋ฌธ, Return์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

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

GoTo label
label:

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

  • label โ€” ๊ฐ™์€ ํ”„๋กœ์‹œ์ € ์•ˆ์—์„œ label:์„ ๋ณ„๋„ ์ค„์— ์„ ์–ธํ•œ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค. ์ด๋™์€ ๋”ฐ์˜ดํ‘œ, ๊ด„ํ˜ธ, ๋Œ€์ƒ ๋’ค ์ฝœ๋ก  ์—†์ด GoTo label๋กœ ์”๋‹ˆ๋‹ค. ์•ž๋’ค ์ด๋™์„ ์ง€์›ํ•˜๋ฉฐ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ์‹œ์ €์—์„œ๋Š” ์ด๋ฆ„์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„์— ์ ์„ ์“ธ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ชจ๋“ˆ ๋ฉค๋ฒ„๋ผ๋Š” ๋œป์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ˆซ์ž, ๊ณ„์‚ฐ์‹, ๋‹ค๋ฅธ ํ”„๋กœ์‹œ์ €์˜ ๋ ˆ์ด๋ธ”์€ ์ง€์›๋˜๋Š” ๋Œ€์ƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

GoTo์™€ label:์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ 1/0 ๋˜๋Š” TRUE/FALSE๋กœ ์„ฑ๊ณต์„ ๋‚˜ํƒ€๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ Main์€ ์ง์ ‘ ๊ณ„์‚ฐํ•œ Integer -1, 6, 123์„ ๋ช…์‹œ์ ์œผ๋กœ Returnํ•ฉ๋‹ˆ๋‹ค.

๋™์ž‘

  • ์ค€๋น„ ๋‹จ๊ณ„์—์„œ ๋ ˆ์ด๋ธ” ์ฃผ์†Œ๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ํ”„๋กœ์‹œ์ € ์ „์ฒด๋ฅผ ์ฝ์€ ๋’ค ์ด๋™ ๋Œ€์ƒ์„ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์‹คํ–‰์€ ํ™•์ •๋œ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์†Œ์Šค๋ฅผ ๋‹ค์‹œ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ ๊ฐ’์€ ์œ ์ง€๋˜๊ณ  ์ด์ „ ๋™์ž‘์€ ์ทจ์†Œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์•Œ ์ˆ˜ ์—†๋Š” ๋Œ€์ƒ์€ SC009์ด๋ฉฐ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹คํ–‰์„ ๋ง‰์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ํ”„๋กœ์‹œ์ €์˜ ์ค‘๋ณต ์ด๋ฆ„์€ ๋Œ€์†Œ๋ฌธ์ž๊ฐ€ ๋‹ฌ๋ผ๋„ ์ดˆ๊ธฐํ™” ์ „์— SC021์„ ๋ƒ…๋‹ˆ๋‹ค. Include ์ง„๋‹จ์€ ์›๋ณธ ํŒŒ์ผ๊ณผ ์ค„์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ ๋ฌธ์ž๋Š” ๊ฒฝ๊ณ ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ •ํ™•ํ•œ ๊ตฌ๋ฌธ์„ ์“ฐ์„ธ์š”.
  • ํ™œ์„ฑ Try ๋ฐ–์œผ๋กœ ์ด๋™ํ•˜๋ฉด ์•ˆ์ชฝ์—์„œ ๋ฐ”๊นฅ์ชฝ ์ˆœ์„œ๋กœ Finally๋ฅผ ์‹คํ–‰ํ•œ ๋’ค ๋Œ€์ƒ์— ๋„์ฐฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ํ™œ์„ฑ Try ์•ˆ์˜ ์ด๋™์€ ๊ทธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. Finally ์˜ค๋ฅ˜๋กœ ๋Œ€์ƒ์— ๋„์ฐฉํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ณต๋ฌธ๊ณผ Try/Catch/Finally๋Š” ์ •์ƒ ์‹œ์ž‘๋ฌธ์œผ๋กœ ๋“ค์–ด๊ฐ€์„ธ์š”. ์ค‘๊ฐ„์œผ๋กœ ์ด๋™ํ•ด๋„ ๊ฑด๋„ˆ๋›ด ์ดˆ๊ธฐํ™”๋‚˜ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ๋ณต์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์žฌ๊ฐœ ๋ฐฉ๋ฒ•์œผ๋กœ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ๋ฐ˜๋ณต ์ œ์–ด์—๋Š” Continue ๋˜๋Š” Exit๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • ๋’ค๋กœ ์ด๋™ํ•  ๋•Œ ์ž๋™ ์‹œ๋„ ํšŸ์ˆ˜ ์ œํ•œ, ์‹œ๊ฐ„ ์ œํ•œ, ๋Œ€๊ธฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ข…๋ฃŒ ์กฐ๊ฑด์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”. ์ผ๋ฐ˜ ํ๋ฆ„๋„ ๋ ˆ์ด๋ธ”์„ ์ง€๋‚˜๊ฐ€๋ฏ€๋กœ ๋ถˆํ•„์š”ํ•œ ๊ตฌ๊ฐ„์€ ์ด๋™์ด๋‚˜ Return์œผ๋กœ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๊ธฐ๋Š” On Error๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

1. ์•ž์œผ๋กœ ๋ถ„๊ธฐ

# amount=0์€ NoItems๋ฅผ ์„ ํƒํ•ด result=-1๋กœ ๋งŒ๋“  ํ›„ Finished์—์„œ -1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. amount=4์ด๋ฉด ์ •์ƒ ๊ฒฝ๋กœ๊ฐ€ 40์„ ๋Œ€์ž…ํ•˜๊ณ  GoTo Finished๊ฐ€ NoItems๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ๋‘ ๋ ˆ์ด๋ธ”์€ Main์— ์†ํ•˜๋ฉฐ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์•„๋‹™๋‹ˆ๋‹ค.
Option Explicit On
Sub Main()
    Var amount = 0
    Var result = 0
    If amount <= 0 Then
        GoTo NoItems
    End If
    result = amount * 10
    GoTo Finished
NoItems:
    result = -1
Finished:
    Return result
End Sub

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

amount=0์€ NoItems๋ฅผ ์„ ํƒํ•ด result=-1๋กœ ๋งŒ๋“  ํ›„ Finished์—์„œ -1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. amount=4์ด๋ฉด ์ •์ƒ ๊ฒฝ๋กœ๊ฐ€ 40์„ ๋Œ€์ž…ํ•˜๊ณ  GoTo Finished๊ฐ€ NoItems๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ๋‘ ๋ ˆ์ด๋ธ”์€ Main์— ์†ํ•˜๋ฉฐ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์•„๋‹™๋‹ˆ๋‹ค.

2. ํšŸ์ˆ˜๊ฐ€ ์ œํ•œ๋œ ๋ฐ˜๋ณต

# attempt๋Š” 0์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ๊ฒ€์‚ฌ ์ „์— ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. Again๊ณผ again์€ ๊ฐ™์€ ๋ ˆ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์— ๊ฑธ์ณ 1, 2, 3์„ ๋”ํ•œ ๋’ค attempt<3์ด ๊ฑฐ์ง“์ด ๋˜์–ด 6์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. total์€ ๋ ˆ์ด๋ธ” ์•ž์—์„œ ์ดˆ๊ธฐํ™”ํ•˜๋ฏ€๋กœ ์ด๋™ํ•  ๋•Œ 0์œผ๋กœ ๋˜๋Œ์•„๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Option Explicit On
Sub Main()
    Var attempt = 0
    Var total = 0
Again:
    attempt += 1
    total += attempt
    If attempt < 3 Then
        GoTo again
    End If
    Return total
End Sub

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

attempt๋Š” 0์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ๊ฒ€์‚ฌ ์ „์— ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. Again๊ณผ again์€ ๊ฐ™์€ ๋ ˆ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์— ๊ฑธ์ณ 1, 2, 3์„ ๋”ํ•œ ๋’ค attempt<3์ด ๊ฑฐ์ง“์ด ๋˜์–ด 6์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. total์€ ๋ ˆ์ด๋ธ” ์•ž์—์„œ ์ดˆ๊ธฐํ™”ํ•˜๋ฏ€๋กœ ์ด๋™ํ•  ๋•Œ 0์œผ๋กœ ๋˜๋Œ์•„๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

3. ์ค‘์ฒฉ Try ๋ฒ—์–ด๋‚˜๊ธฐ

# trace๊ฐ€ 1์ด ๋œ ๋’ค GoTo Finished๊ฐ€ trace=99๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ์•ˆ์ชฝ Finally๋Š” ์ˆซ์ž 2, ๋ฐ”๊นฅ์ชฝ์€ 3์„ ๋ถ™์ž…๋‹ˆ๋‹ค. ๊ทธ ๋’ค Finished์— ๋„์ฐฉํ•˜์—ฌ 123์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ด๋™์—์„œ ๊ฐ Finally๋Š” ํ•œ ๋ฒˆ์”ฉ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
Option Explicit On
Sub Main()
    Var trace = 0
    Try
        Try
            trace = trace * 10 + 1
            GoTo Finished
            trace = 99
        Finally
            trace = trace * 10 + 2
        End Try
    Finally
        trace = trace * 10 + 3
    End Try
Finished:
    Return trace
End Sub

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

trace๊ฐ€ 1์ด ๋œ ๋’ค GoTo Finished๊ฐ€ trace=99๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ์•ˆ์ชฝ Finally๋Š” ์ˆซ์ž 2, ๋ฐ”๊นฅ์ชฝ์€ 3์„ ๋ถ™์ž…๋‹ˆ๋‹ค. ๊ทธ ๋’ค Finished์— ๋„์ฐฉํ•˜์—ฌ 123์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ด๋™์—์„œ ๊ฐ Finally๋Š” ํ•œ ๋ฒˆ์”ฉ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.


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

Basic