C#의 do...while 루프는 조건을 루프의 끝에서 검사하는 반복문입니다. 일반적인 while 루프와 비슷하지만, 가장 큰 차이점은 루프 본문이 최소 한 번은 반드시 실행된다는 것입니다.
do...while 루프의 기본 문법
do...while 루프는 다음과 같은 형태로 작성합니다.
do {
실행할 문장;
} while( 조건 );동작 원리
조건식이 루프의 마지막에 위치하기 때문에, 조건을 검사하기 전에 루프 내부의 문장이 먼저 한 번 실행됩니다.
이후 조건이 참(true)이면 제어 흐름이 다시 do로 돌아가 루프 내부의 문장을 반복해서 실행합니다. 이 과정은 주어진 조건이 거짓(false)이 될 때까지 계속됩니다.
예제 코드
다음 예제는 변수 a의 초기값이 이미 조건(20 미만)을 만족하지 않음에도 불구하고, do...while 루프가 한 번은 실행되는 것을 보여줍니다.
using System;
namespace Loops {
class Program {
static void Main(string[] args) {
/* 지역 변수 정의 */
int a = 50;
/* do 루프 실행 */
do {
Console.WriteLine("value of a: {0}", a);
a = a + 1;
}
while (a < 20);
Console.ReadLine();
}
}
}
실행 결과
value of a: 50
결과 분석
변수 a의 값이 50으로 시작하므로 조건 a < 20은 처음부터 거짓입니다. 그럼에도 출력 결과가 한 번 나타난 이유는, do...while 루프가 조건 검사 전에 본문을 먼저 실행하기 때문입니다. 만약 일반 while 루프였다면 아무것도 출력되지 않았을 것입니다.
do...while 루프를 활용하면 좋은 경우
- 사용자에게 메뉴를 최소 한 번은 보여줘야 하는 콘솔 메뉴 프로그램
- 사용자 입력을 받은 후 유효성을 검사해야 하는 입력 검증 로직
- 게임 라운드처럼 적어도 한 번은 실행이 보장되어야 하는 반복 작업
이처럼 do...while 루프는 실행이 조건보다 우선해야 하는 상황에서 유용하게 사용할 수 있습니다.