더북(TheBook)

이 반복문은 지정한 조건이 참이 될 때까지 반복한다. do 루프도 거의 비슷하지만 의존 블록을 실행하고 나서 조건을 검사한다는 점이 다르다.

do {                                // 반복 시작
  x *= (2.0 - a*x);                 // 헤론의 근사 공식
} while (fabs(1.0 - a*x) >= eps);   // 기준에 근접할 때까지 반복한다.

다시 말해 while 루프는 조건이 처음부터 거짓(false)이면 의존 블록이 실행되지 않지만, do 루프는 의존 블록이 최소한 한 번은 실행된다.

for문과 마찬가지로 dowhile{...} 블록을 사용하는 것이 좋다. dowhile의 차이점 중 좀 미묘한 부분이 하나 더 있다. do는 항상 while (조건) 뒤에 세미콜론(;)이 붙는다. 10.2.1절에서 자세히 설명하겠지만 이러한 문법적 특성은 여러 문장을 중첩할 때 상당히 유용하다.

지금까지 살펴본 세 가지 반복문에 breakcontinue문을 곁들이면 훨씬 다양하게 제어할 수 있다. break문은 종료 조건을 다시 평가하지 않고 종료한다. 의존 블록 안에서도 break문 뒤에 나온 부분은 실행하지 않고 루프를 종료한다.

while (true) {
  double prod = a*x;
  if (fabs(1.0 - prod) < eps) {  // 기준에 충분히 근접하면 멈춘다.
    break;
  }
  x *= (2.0 - prod);             // 헤론의 근사 공식
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.