do-while

Jaemyeong Lee·2024년 8월 4일
0

FastCampusC++

목록 보기
19/78

첫 번째 블록

{
    int i = 0;
    while (i < 10)
    {
        cout << i << endl;
        i++;
    }

    // 위 while 문과 동일하게 동작
    do 
    {
        cout << i << endl;
        i++;
    } while (i < 10);
}
  1. while 문:
    • i를 0으로 초기화합니다.
    • i가 10보다 작을 때까지 반복합니다.
    • i를 출력하고, i를 1씩 증가시킵니다.
    • 결과적으로 0부터 9까지의 숫자가 출력됩니다.
  2. do-while 문:
    • do-while 문은 조건을 나중에 평가하기 때문에, 최소 한 번은 실행됩니다.
    • i를 출력하고, i를 1씩 증가시킵니다.
    • i가 10보다 작을 때까지 반복합니다.
    • i가 10 이상이 되어도 한 번 더 실행되므로 10부터 시작하여 그 이상이 출력됩니다.

두 번째 블록

{
    int i = 0;
    // 실행 안 됨
    while (i < 0)
    {
        cout << i << endl;
        i++;
    }

    // 0 출력
    do 
    {
        cout << i << endl;
        i++;
    } while (i < 0);
}
  1. while 문:
    • i를 0으로 초기화합니다.
    • i가 0보다 작지 않기 때문에 반복문이 실행되지 않습니다.
  2. do-while 문:
    • do-while 문은 최소 한 번 실행됩니다.
    • i를 출력하고, i를 1씩 증가시킵니다.
    • i가 0보다 작지 않기 때문에 반복문은 한 번만 실행되고 종료됩니다.
    • 결과적으로 0이 출력됩니다.

세 번째 블록

{
    // Jump 를 위한 do while
    int num;
    cin >> num;
    do
    {
        if (num % 3 == 0)
            break;
        if (num % 5 == 0)
            break;

        cout << "wow" << endl;
    } while (false);

    cout << "abcd" << endl;
}
  1. 사용자로부터 정수 num을 입력받습니다.
  2. do-while 문을 사용하여 특정 조건에서 빠져나오도록 합니다.
    • num이 3의 배수이거나 5의 배수이면 break로 반복문을 종료합니다.
    • 그렇지 않으면 "wow"를 출력합니다.
    • while (false)로 인해 do-while 문은 한 번만 실행됩니다.
  3. "abcd"가 항상 출력됩니다.

네 번째 블록

{
    // 팩토리얼
    int num;
    cin >> num;

    int total = 1;
    do {
        total *= num;
    } while (--num);
    cout << total << endl;
}
  1. 사용자로부터 정수 num을 입력받습니다.
  2. total 변수를 1로 초기화합니다.
  3. do-while 문을 사용하여 num이 0이 될 때까지 반복합니다.
    • 각 반복에서 totalnum을 곱하고, num을 1씩 감소시킵니다.
  4. 최종적으로 total에는 num의 팩토리얼 값이 저장되어 출력됩니다.

다섯 번째 블록

{
    // 알파벳 출력
    char ch = 'a';
    do {
        cout << ch << endl;
    } while (++ch <= 'z');
}
  1. ch 변수를 'a'로 초기화합니다.
  2. do-while 문을 사용하여 ch가 'z'보다 작거나 같을 때까지 반복합니다.
    • 각 반복에서 ch를 출력하고, ch를 1씩 증가시킵니다.
  3. 결과적으로 'a'부터 'z'까지의 모든 소문자 알파벳이 출력됩니다.

여섯 번째 블록

{
    // 피보나치 수열
    // 0, 1, 1, 2, 3, 5, 8, 13, 21
    // a(0) = 0, a(1) = 1
    // a(n) = a(n - 2) + a(n - 1)
    int num;
    cin >> num;
    if (num <= 1)
    {
        cout << num << endl;
    }
    else
    {
        int prevValue = 0;
        int currValue = 1;
        do {
            int nextValue = prevValue + currValue;
            prevValue = currValue;
            currValue = nextValue;
        } while (--num - 1);

        cout << currValue << endl;
    }
}
  1. 사용자로부터 정수 num을 입력받습니다.
  2. num이 1 이하이면 num을 출력합니다.
  3. 그렇지 않으면 피보나치 수열을 계산합니다.
    • prevValue를 0으로, currValue를 1로 초기화합니다.
    • do-while 문을 사용하여 num - 1 번 반복합니다.
    • 각 반복에서 다음 피보나치 수를 계산하고, prevValuecurrValue를 갱신합니다.
  4. 최종적으로 currValue에는 num번째 피보나치 수가 저장되어 출력됩니다.

정리

do-while 문은 최소 한 번은 실행되어야 하는 반복 작업에 유용합니다. while 문과의 차이점은 조건 평가가 반복문 끝에 위치한다는 점입니다. 이로 인해 반복문이 무조건 한 번은 실행됩니다. 각 예제는 다양한 조건과 상황에서 do-while 문을 사용하는 방법을 보여줍니다.

profile
李家네_공부방

0개의 댓글