C Visual Basic 기본문법 - 반복비교문(loop)

Cugain 2007.02.21 14:49 조회 수 : 139 추천:100

sitelink1  
sitelink2  
extra_vars5  
extra_vars6  

반복 비교 
반복문을 사용시에는 무한루프에 빠지지 않도록 주의해야한다.

?Do ... Loop

?선조건 후실행 구문
Do [{While | Until } 조건]
실행코드
[Exit Do]
실행코드
Loop
?후조건 선실행 구문
Do
실행코드
[Exit Do]
실행코드
Loop [{While | Until } 조건]

조건비교시 While 과 Until 을 사용할 수 있는데 While 는 뜻 그대로 조건이 일치하는 동안 루프가 실행되고, 
Until 은 조건이 일치할때까지 루프가 실행된다.(즉 Until에서는 조건이 만족되면 루프가 종료된다.)
Exit Do 는 루프실행중에 루프문을 빠져나갈 수 있다.
예제) 1 ~ 10까지 더하는 예제 최종 j 값은 55  , 100까지 더한 값을 얻으려면 코드에서 Do Until i = 100 으로 고치면 되겠쥐.
         텍스트박스하나 더 만들어서 더할값을 받아서 계산하도록 만들어바바바. 

Private Sub Command1_Click()
Dim i, j As Integer
' i 의 값이 10이 될때까지 실행된다.  
Do Until
i = 10
' 구문이 반복될때마다 i 값이 1씩 증가한다.
' i 값에는 0,1,2,3,4,5,6,7,8,9 가 들어간다. 즉 10번 반복.

i = i + 1
j = i + j
Loop
Text1 = j
End Sub
Private Sub Command1_Click()
Dim i, j As Integer
' i 의 값이 10보다 작은동안만 실행된다.
' 즉 i 가 10되서 돌아오면 루프가 중지된다.
Do While
i < 10
' i 값에는 0,1,2,3,4,5,6,7,8,9  가 들어간다.
i = i + 1
j = i + j
Loop
Text1 = j
End Sub

그런데 만약 이 구문안에서 i 가  영원히 10 이 될 수 없다면 어떻게 될지 생각해봅시다.
 => 들어는 보셨는가? 무한루프라고...  (비베에서 프로그램을 만들다가 무한루프가 돌면 거의 비베자체가 다운된다... 나만 그럴수도...^^;)


Private Sub Command1_Click()
Dim i, j As Integer
For i = 1 To 10
j = i + j
Next i
Text1 = j
End Sub
예제1) 1부터10까지 더한값 구하기.
위에 Do Until 문을 사용하는 것보다 간단한게 보이쥐?
For 문에서는 i 값을 1에서 10까지 자동으로 증가시켜서 넣어버리니깐두루.
For 문에서 10에서 1까지의 점점 줄어드는 값을 넣을려면 뒤에 증감치를 명시해야한다.
예) For i = 10 To 1 Step -1
 
Dim AbC(1 to 5, 1 to 10) As string
For i = 1 To 5
  For j = 1 To 10
    grid1.row = i
    grid1.col = j  
    AbC( i, j ) = grid1.Text
  Next j
Next i 
' 실행되면 i = 1일때 j 는 1 ~ 10까지 10번돌고 다시 i=2 가되고 j 가 다시 10번돌고... 이렇게해서 i 가 5 번실행되고 j는 50번 실행.
예제2) For 문의 중첩사용 예제.
  j1 j2 j3 j4           j10
i=1 a b c d e f g h i j
i=2 k l m n o p q r s t
i=3 u v w x y z . . . .
i=4 .  . . . . . . . . .
i=5 aa bb cc dd ee ff gg hh ii jj

위와 같은 그리드(5*10)가 있고 이안에 값들이 있다는 가정하에 이 안에 있는 값들을 전부 이차원배열로 선언된 AbC라는 변수에 집어넣는 예제를 보인것이다.
Text1.text = AbC(2,4) 라고 하면 텍스트박스에는 위 표에서 i=2  이고 j=4인 값에 해당하는 "n"이라는 값이 들어간다. 

?For Each 구성요소 In ... Next

For Each 구성요소 In 배열, 컨트롤모음(컬렉션),개체모음(컬렉션)
실행코드
[Exit For]
Next [구성요소]

예제) 폼안에 있는 컨트롤들의 이름을 리스트박스에 보여줌.
For Each Control In Form1.Controls  '폼에 등록된 컨트롤들의 컬렉션이 Form1.Controls 이다.
List1.Additem Control.Name   '컨트롤들의 Name프로퍼티 값을 리스트박스에 추가
Next
End Sub