Swift 입문 | 제어 구문 | while 문에 의한 반복


for는 반복마다 변화하는 장치가 구문에 있다. 하지만, 더 간단하게 조건을 확인하고 반복 여부를 결정만 하는 단순한 반복 구문도 있다. 그것이 while 문이다.

while은 조건이 붙는 위치에 따라 두 가지 방법이 있다. (후자는 do while 문이라고 하기도 한다).

while의 기본형

while 조건 {
    ...... 반복 처리 ......
}

do while의 기본형

do {
    ...... 반복 처리 ......
} while 조건

while 이 후에 조건이 되는 것을 작성한다. 이 조건이 true이면 반복을 실행하고, false가 되면 반복을 빠져 나가는 간단한 구조이다.

간단하면서도 왜 2개의 작성법이 있는가. 그것은 조건을 체크하는 타이밍의 차이이다. 전자(구문 최초에 while이 있는 것)은 먼저 while 뒤에 있는 조건을 확인하고 그것이 true라면 다음 {} 부분을 실행한다.

후자(구문의 마지막에 while이 있는 것)은 반복 수행하는 {} 부분을 먼저 실행하고 끝나고 나서 while 조건을 확인한다. 결국은 처음부터 조건이 false하더라도 반드시 한번은 {} 부분을 실행하게 된다.

예를 들어, 간단한 반복을 비교해 보자

var n:Int = 0
 
while 10 > n++ {
    "index:" + String(n)
}
 
var m:Int = 0
do {
    "index:" + String(m)
} while 10 > m++

전자는 index:1 ~ index:10 형태로 값을 얻을 수 있다. 반면 후자는 index:0~index:9 형태이다. 조건문에 ++로 변수를 증가 시키고 있기 때문에, 조건이 앞에 있는지 뒤에 있는지에 따라 숫자가 벗어난다.

이런 식으로 섬세한 동작을 보면 양자는 미묘하게 달라진다. 개인적으로는 기본은 while에서 작성, do while은 특별한 사정이 있는 경우에만 사용할 것이라고 생각두면 좋은 것 같다.