전체 코드
namespace CSharpGrammar
{
class Program
{
static void Main(string[] args)
{
int count = 5;
while(count > 0)
{
Console.WriteLine("Hello World");
count--;
}
string answer;
do
{
Console.WriteLine("강사님은 잘생기셨나요? (y/n)");
answer = Console.ReadLine();
} while (answer != "y");
Console.WriteLine("정답입니다.");
}
}
}
1. 개요
- while문과 do-while문은 C#에서 반복적으로 코드를 실행할 때 사용하는 제어문입니다.
- 두 반복문은 기본적으로 조건이 참인 동안 코드를 반복 실행하지만, 실행 순서와 사용 목적에 따라 차이가 있습니다.
2. while문
특징
- 조건 먼저 평가: 루프에 들어가기 전에 조건을 검사합니다.
- 조건이 거짓이면 한 번도 실행되지 않을 수 있음: 조건이 처음부터 false이면 루프 내부의 코드가 한 번도 실행되지 않습니다.
- 반복 제어: 루프 내부에서 조건이 언젠가 false가 될 수 있도록 적절한 제어(예: 변수 감소 등)를 해주어야 무한 루프를 방지할 수 있습니다.
예제 코드
int count = 5;
while (count > 0)
{
Console.WriteLine("Hello world");
count--;
}
설명
- 변수 초기화:
count 변수에 5를 할당하여 반복 횟수를 정합니다.
- 조건 평가:
while (count > 0)로 조건을 확인하며, count가 0보다 클 때만 반복문 내부가 실행됩니다.
- 루프 제어:
count--;를 통해 반복마다 count의 값을 줄여, 언젠가 조건이 false가 되어 루프가 종료되도록 합니다.
3. do-while문
특징
- 최소 1회 실행 보장: 루프 블록이 먼저 실행되고 나서 조건을 평가하므로, 조건이 false여도 최소 한 번은 실행됩니다.
- 후조건 검사: 조건 검사가 루프 끝부분에 있으므로, 루프 내부의 작업이 반드시 한 번은 수행됩니다.
예제 코드
string answer;
do
{
Console.WriteLine("강사님은 잘생기셨나요? (y/n)");
answer = Console.ReadLine();
} while (answer.ToLower() != "y");
Console.WriteLine("정답입니다");
설명
- 입력 변수 선언: 사용자로부터 입력받은 값을 저장할
answer 변수를 선언합니다.
- 루프 구조:
do 블록 안에 있는 코드는 먼저 실행됩니다.
- 이후 조건문
while (answer.ToLower() != "y")를 검사하여, 사용자가 "y" (대소문자 무관)를 입력할 때까지 계속 반복합니다.
- 최소 1회 실행: 조건이 어떤 값이더라도, 질문은 반드시 한 번은 출력됩니다.
4. while문과 do-while문의 비교 및 개선 사항
비교
- while문
- 조건을 먼저 평가하기 때문에, 조건이 false이면 내부 코드가 한 번도 실행되지 않을 수 있음.
- 반복 횟수나 조건이 명확한 경우에 유용하며, 조건 제어가 중요함.
- do-while문
- 내부 코드가 최소 한 번은 실행됨.
- 사용자 입력 등 최초 실행은 반드시 한 번 해야 하는 경우에 적합함.
개선 사항 및 주의점
- 무한 루프 방지: while문에서는 조건에 영향을 주는 코드(
count--와 같은)가 반드시 포함되어야 함.
- 대소문자 처리: 사용자 입력에 대해 대소문자 구분 없이 처리하고자 할 때는
answer.ToLower() 또는 answer.ToUpper()를 활용하여 조건문을 작성합니다.
- 사용 시나리오 고려: 반복문의 사용 목적에 따라 while문과 do-while문 중 적절한 것을 선택해야 합니다.
예를 들어, 조건에 맞지 않아도 최소 한 번 실행이 필요한 경우 do-while문을 사용합니다.