While 문
while문은 [조건]을 만족하는 동안만 문장을 반복합니다. DoLoop문과 달리 반복중에 중지할 수 없습니다.
형식
While 조건
문장1
문장2
.
.
.
Wend
Do Loop 문
Do Loop문의 While을 사용하면, [조건]을 만족하는 동안 문장을 반복하여 수행을 합니다. 또한, Until을 사용하면 [조건]과 같을 때 까지 반복을 합니다.
반복 중에 Exit Do를 이용하여 강제적으로 반복을 종료할 수 있습니다.
형식
① Do
문장1;
[Exit Do]
문장2;
.
.
Loop [{While | Until} 조건]
② Do [{While | Until} 조건]
문장1;
[Exit Do]
문장2;
.
.
Loop
① Do .. Loop While문
예(True)인 동안은 문장을 반복하고 아니오(False)이면 Do .. Loop While문장 다음 문장을 수행합니다. [조건]을 나중에 확인하기 때문에 [조건]을 만족하지 않아도 [반목 문장]을 한번은 수행합니다.
② Do While .. Loop문
예(True)인 동안은 문장을 반복하고 아니오(False)이면 Do While .. Loop 문장 다음 문장을 수행합니다. [조건]을 먼저 확인하기 때문에 [조건]을 만족하지 않으면, [반복문장]을 수행하지 않고 다음 문장을 수행합니다. 결국, [조건]에 만족하지 않으면 [반복 문장]을 한번도 수행하지 않습니다.
Private Sub Command1_Click()
Dim i As Integer
i = 0
Do While i < 0
Label1.Caption = "Do While .. Loop문 수행 했음"
Loop
Do
Label2.Caption = "Do .. Loop While문 수행 했음"
Loop While i < 0
End Sub
실행 결과 : Label1은 출력되지 않고 Label2는 'Do .. Loop While문 수행 했음'이라고 출력됩니다
③ Do .. Loop While문과 Do .. Loop Until문의 차이점
Private Sub Command1_Click()
Dim I As Integer
I = 0
Do
I = I + 1
Loop Until I = 50
Label2.Caption = I
I = 0
Do
I = I + 1
Loop While I < 50
Label1.Caption = I
End Sub
실행 결과 : Label1과 Label2는 동일한 값인 50이 출력됩니다.
Exit 문
Exit문은 반복문이나 프로시저 수행 중에 강제적으로 종료해야 할 경우에 사용합니다. 종류는 다음과 같습니다.
종 류 | 설 명 |
Exit Function | Function 프로시저를 종료합니다. |
Exit For | For...Next나 For Each...Next의 반복을 중지합니다. 중첩된 For문을 사용한 경우 안쪽 레벨의 For문을 Exit For로 중지하면 한 레벨 위인 For문을 수행합니다. |
Exit Do | Do Loop 문 안에서 반복을 중지를 할 때 사용합니다. 중첩된 DoLoop문을 사용하는 경우 안쪽 레벨의 Loop문을 Exit Do로 중지하면 한 레벨 위인 Do Loop문을 수행합니다. |
Exit Property | Property 프로시저를 종료합니다. |
Exit Sub | Sub 프로시저를 종료합니다. |
Private Sub Command1_Click()
' 프로시저를 종료한다.
Exit Sub
Label1.Caption = "비주얼 베이직"
End Sub
실행 결과 : Label1에 값이 들어 있지 않습니다. 그 이유는 Exit Sub문으로 Sub 프로시저를 종료하였기 때문입니다.
Private Sub Command1_Click()
Dim i, j As Integer
For i = 1 To 100
For j = 1 To 50
If j = 30 Then Exit For
Next j
Next i
Label1.Caption = i
Label2.Caption = j
End Sub
실행 결과 : Label1은 '101'이 출력되고 Label2는 '30'이 출력됩니다. Label2에 '30'이 출력되는 이유는 j가 30 값일 때 Exit For로 For문을 중지하였기 때문입니다. Exit For는 현재 반복 중인 For문만을 벗어 납니다.
0 댓글