전체 코드

namespace CSharpGrammar
{
    

    class Program
    {
        static void Main(string[] args)
        {
            // while 반복문

            //while(조건)
            //{
            //    // 조건에 따라서 반복
            //    // 참이면 중괄호 안에 실행문이 반복 실행 조건이 False일 때까지

            //}

            int count = 5;
            while(count > 0)
            {
                Console.WriteLine("Hello World");
                count--;
            }

            // do-while
            // 한번은 무조건 실행할 경우가 있을 경우 사용
            // 거울아 거울아
            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; // 반복 횟수를 제어할 변수 count를 5로 초기화합니다.
while (count > 0) // count가 0보다 클 때만 반복합니다.
{
    Console.WriteLine("Hello world"); // "Hello world"를 출력합니다.
    count--; // count 값을 1씩 감소시킵니다. (이 줄이 없으면 무한 루프 발생)
}

설명

  • 변수 초기화: count 변수에 5를 할당하여 반복 횟수를 정합니다.
  • 조건 평가: while (count > 0)로 조건을 확인하며, count가 0보다 클 때만 반복문 내부가 실행됩니다.
  • 루프 제어: count--;를 통해 반복마다 count의 값을 줄여, 언젠가 조건이 false가 되어 루프가 종료되도록 합니다.

3. do-while문

특징

  • 최소 1회 실행 보장: 루프 블록이 먼저 실행되고 나서 조건을 평가하므로, 조건이 false여도 최소 한 번은 실행됩니다.
  • 후조건 검사: 조건 검사가 루프 끝부분에 있으므로, 루프 내부의 작업이 반드시 한 번은 수행됩니다.

예제 코드

string answer; // 사용자의 입력을 저장할 변수 answer를 선언합니다.
do // do-while 루프: 내부의 코드가 최소 한 번 실행됩니다.
{
    Console.WriteLine("강사님은 잘생기셨나요? (y/n)"); // 사용자에게 질문을 출력합니다.
    answer = Console.ReadLine(); // 사용자가 입력한 값을 answer에 저장합니다.
} while (answer.ToLower() != "y"); // 사용자가 "y" 또는 "Y"를 입력할 때까지 반복합니다.

Console.WriteLine("정답입니다"); // 사용자가 "y"를 입력하면 이 메시지를 출력합니다.

설명

  • 입력 변수 선언: 사용자로부터 입력받은 값을 저장할 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문을 사용합니다.

profile
李家네_공부방

0개의 댓글