다음을 통해 공유


For...Next 문(Visual Basic)

업데이트: 2007년 11월

문의 그룹을 지정한 횟수만큼 반복합니다.

For counter [ As datatype ] = start To end [ Step step ]
    [ statements ]
    [ Exit For ]
    [ statements ]
Next [ counter ]

구성 요소

  • counter
    For 문에서 필수적 요소입니다. 숫자 변수이며 루프에 대한 제어 변수입니다.

  • datatype
    counter가 아직 선언되지 않은 경우 필수적 요소입니다. counter의 데이터 형식입니다.

  • start
    필수적 요소. 숫자 식입니다. counter의 초기 값입니다.

  • end
    필수적 요소. 숫자 식입니다. counter의 최종 값입니다.

  • step
    선택적 요소. 숫자 식입니다. 루프가 실행될 때마다 counter가 증가되는 정도입니다.

  • statements
    선택적 요소. 지정한 횟수만큼 실행되는 For와 Next 사이의 하나 이상의 문입니다.

  • Exit For
    선택적 요소. For 루프의 외부로 제어를 이동합니다.

  • Next
    필수적 요소. For 루프의 정의를 끝냅니다.

설명

일련의 문을 특정 횟수만큼 반복하려면 For...Next 구조를 사용합니다.

While...End While 문(Visual Basic)이나 Do...Loop 문(Visual Basic)은 루프에서 문을 몇 번 실행해야 하는지 미리 알지 못하는 경우 유용합니다. 그러나 루프 실행 횟수를 아는 경우에는 For...Next 루프가 더 유용합니다. 루프를 처음 입력할 때 반복 횟수를 결정합니다.

step의 값은 양수 또는 음수가 될 수 있습니다. 다음과 같이 루프 처리를 결정합니다.

Step 값

루프가 실행되는 경우

양수 또는 0

counter <= end

음수

counter >= end

지정되지 않은 경우step의 기본값은 1입니다.

규칙

  • 데이터 형식. 일반적으로 counter의 데이터 형식은 Integer이지만 크거나 같음(>=), 작거나 같음(<=), 더하기(+) 및 빼기(-) 연산자를 지원하는 모든 형식일 수 있습니다. 이러한 모든 연산자를 지원하는 경우 사용자 정의 형식일 수도 있습니다.

    일반적으로 start, end 및 step 식은 Integer 형식으로 계산되지만 counter 형식으로 확대 변환되는 모든 데이터 형식으로 계산될 수도 있습니다. counter에 대해 사용자 정의 형식을 사용하는 경우 CType 변환 연산자를 정의하여 start, end 또는 step의 형식을 counter의 형식으로 변환해야 함을 의미합니다.

  • **선언.**counter를 해당 루프의 외부에 선언하지 않은 경우에는 For 문 내에서 선언해야 합니다. 이 경우 counter의 범위는 루프 본문입니다. 그러나 루프 외부와 내부 모두에 counter를 선언할 수는 없습니다.

  • 반복 횟수. Visual Basic에서는 루프를 시작하기 전에 start, end 및 step 반복 값을 한 번만 계산합니다. 문 블록이 end 또는 step을 변경하는 경우 이 변경 내용은 루프의 반복에는 영향을 주지 않습니다.

  • **루프 중첩.**For 루프를 서로 중첩할 수 있습니다. 하지만 각 루프에는 고유한 counter 변수가 있어야 합니다. 다음은 올바른 구문입니다.

    For i As Integer = 1 To 10
        For j As Integer = 1 To 10
            For k As Integer = 1 To 10
                ' Insert statements to operate with current values of i, j, and k.
            Next k
        Next j
    Next i
    

    하나의 구조 내에서 다른 종류의 제어 구조를 중첩할 수도 있습니다. 자세한 내용은 중첩 제어 구조를 참조하십시오.

    참고:

    외부 중첩 수준의 Next 문이 내부 수준의 Next 앞에 있는 경우 컴파일러는 오류 신호를 보냅니다. 하지만 컴파일러는 counter를 모든 Next 문에 지정하는 경우에만 이러한 중복 오류를 감지할 수 있습니다.

  • 제어 변수 식별. 필요에 따라 Next 문에 counter를 지정할 수 있습니다. 이렇게 하면 특히 For 루프를 중첩한 경우 프로그램의 가독성이 향상됩니다. 해당 For 문에 나타나는 변수와 동일한 변수를 지정해야 합니다.

  • 루프 외부로 이동.Exit 문(Visual Basic)을 사용하면 제어가 Next 문 다음 문으로 바로 전달됩니다. 잘못된 값이나 종료 요청과 같이 계속 반복할 필요가 없거나 반복할 수 없는 조건을 발견하면 루프를 끝낼 수 있습니다. 또한 Try...Catch...Finally에서 예외를 catch하는 경우 Finally 블록의 끝에서 Exit For를 사용할 수 있습니다.

    For 루프의 모든 위치에 Exit For 문을 원하는 만큼 사용할 수 있습니다. Exit For는 대개 If...Then...Else 구조 등에서 일부 조건을 확인한 다음 사용됩니다.

  • **무한 루프.**Exit For를 한 번 사용하여 조건이 무한 루프 상태가 되는지 여부를 테스트할 수도 있습니다. 무한 루프란 매우 많이 또는 무한정 실행되는 루프를 말합니다. 이러한 조건을 감지한 경우 Exit For를 사용하여 루프를 이스케이프할 수 있습니다. 자세한 내용은 Do...Loop 문(Visual Basic)을 참조하십시오.

동작

  • **루프 시작.**For...Next 루프 실행이 시작될 때만 Visual Basic에서 start, end 및 step을 계산합니다. 그런 다음 counter에 start를 할당합니다. 문 블록을 실행하기 전에 counter와 end를 비교하고 counter가 이미 끝 값을 지났으면 For 루프가 종료되고 Next 문 다음의 문으로 제어가 전달됩니다. 그렇지 않은 경우 문 블록이 실행됩니다.

  • 루프 반복. Visual Basic에서 Next 문을 만날 때마다 step을 기준으로 counter를 증가시키고 For 문으로 돌아옵니다. 다시 counter와 end를 비교하여 결과에 따라 블록을 다시 실행하거나 루프를 종료합니다. counter가 end를 지나가거나 Exit For 문을 만날 때까지 이 프로세스는 계속됩니다.

  • 루프 종료. 루프는 counter가 end를 지나갈 때까지 종료되지 않습니다. counter가 end와 같으면 루프가 계속됩니다. 블록 실행 여부를 결정하는 비교 연산은 step이 양수일 경우 counter <= end이고 step이 음수일 경우 counter >= end입니다.

  • 반복 값 변경. 루프 안에 있는 동안 counter의 값을 변경하면 코드를 읽고 디버깅하기가 더욱 어려워질 수 있습니다. start, end 또는 step의 값을 변경하더라도 루프를 처음 입력했을 때 결정한 반복 값에는 영향을 주지 않습니다.

예제

다음 예제에서는 단계 값이 다른 중첩된 For...Next 구조를 보여 줍니다.

Dim words, digit As Integer
Dim thisString As String = ""
For words = 10 To 1 Step -1
    For digit = 0 To 9
        thisString &= CStr(digit)
    Next digit
    thisString &= " "
Next words

앞의 예제에서는 0에서 9까지 10개의 인스턴스를 포함하는 문자열을 만듭니다. 각 문자열은 하나의 공백을 사용하여 구분됩니다. 외부 루프는 루프가 실행될 때마다 루프 카운터 변수를 감소시킵니다.

참고 항목

작업

방법: 루프 성능 개선

개념

루프 구조

중첩 제어 구조

참조

While...End While 문(Visual Basic)

Do...Loop 문(Visual Basic)

Exit 문(Visual Basic)

For Each...Next 문(Visual Basic)