For ... Next

카운터(Counter)에 명시된 횟수만큼 반복한다.

카운터 변수에 일정한 값을 할당해주어야하며, 루프가 반복될때마다 카운터는 자동으로 증가하거나 감소하고,

범위를 벗어나면 루프를 탈출한다.

그리고 중간에 Exit For 명령문을 이용하여 임의로 루프를 탈출할 수 있다.

Step요소는 양수/음수 모두 사용가능하며 양수일 경우 증가, 음수일 경우 감소한다. 생략시 1씩 증가한다.

<%
For idx = 10 To 100 [ Step 10 ]
     '명령문
     [ Exit For ]
     '명령문
Next
%>

For Each ... Next

컬렉션의 항목이나 배열의 요소를 모두 탐색한다.

해당 요소들을 모두 탐색하거나 반복문 중에 Exit For문을 만날 경우 루프가 끝난다.

배열이나 컬렉션에 하나 이상의 요소가 존재하면 루프를 실행한다.

For Each ... Next 루프를 중첩시킬 수는 있지만, 각 루프의 요소 변수는 유일해야만 한다. (For...Next도 마찬가지)

<%
Dim objFSO, objDir, objFiles, objF
SET objFSO = CreateObject("Scripting.FileSystemObject")
SET objDir = objFSO.GetFolder(Server.MapPath("/"))
SET objFiles = objDir.Files
 
For Each objF In objFiles
     Response.Write objF.name &"<br>"
Next
%>

 

Do ... Loop

조건문이 참(True)이 될때까지 또는 참인 동안 반복한다.

For...Next나 For Each...Next 루프처럼 초기값과 종료값, 증가치가 명확하지 않은 경우에 효율적이다.

Do ... Loop 경계안의 모든 코드를 무한정 반복 수행하는 형태이므로 정지 조건이 없거나 조건이 언제나 참이라면

무한 루프를 돌게된다.

<%
status = True
Do [{While | Until} status = True]
     '명령문
     [Exit Do]
     '명령문
Loop
%>

조건이 참인 동안(While) 혹은 조건이 참일 때까지(Until) 실행문을 무한히 반복하며 Exit Do를 만나면 중도에 멈출 수 있다.

<%
status = True
Do
     '명령문
     [Exit Do]
     '명령문
Loop [{While | Until} status = True]
%>

이처럼 조건이 Loop문 다음에 쓰이게 되면 일단 명령문을 실행한 후 조건을 비교하여 반복 실행할지 멈출지를 결정한다.

 

While ... Wend

Do...Loop와 마찬가지로 조건이 참인 동안 반복한다.