C 언어 do while 문 완전 해설: 사용법과 실예로 배우는 반복 처리 기본

1. 소개

C 언어에서 반복 처리의 중요성

프로그래밍에서는 같은 처리를 여러 번 반복하는 “루프 처리”가 중요합니다. C 언어에서는 for문과 while문, 그리고 이번 주제인 do while문이 반복 처리에 사용됩니다. 이 기사에서는 do while문에 초점을 맞추어, 기본적인 사용법부터 실용 예제까지를 설명합니다.

2. do while문 기초

do while문 기본 구문

do while문은 최소 한 번은 루프 내부의 처리를 실행함을 보장합니다. 구문은 다음과 같습니다。
do {
    // 실행할 처리
} while (조건식);
이 구문에서는 do 블록 내부의 처리가 먼저 실행되고, 그 후에 조건식이 평가됩니다. 조건식이 true이면 다시 루프가 실행되고, false가 되면 루프를 종료합니다.

while문과의 차이

while문에서는 조건식이 먼저 평가되어, true인 경우에만 루프 내부의 처리가 실행됩니다. 반면에, do while문에서는 처음에 조건식의 평가가 이루어지지 않기 때문에 최소 한 번은 처리가 실행되는 점이 큰 차이점입니다。

3. do while문 사용처

사용자 입력 재시도

do while문은 사용자 입력을 검증할 때 유용합니다. 예를 들어, 비밀번호 입력을 반복하는 경우, do while문을 사용하여 첫 입력이 올바른지 확인할 수 있습니다. 입력이 올바르지 않은 경우, 사용자에게 다시 입력하도록 유도하는 처리를 쉽게 구현할 수 있습니다.

게임 반복 처리

게임 프로그램에서 플레이어가 특정 행동을 선택하는 한 반복 처리를 수행할 때에도 do while문이 활약합니다. 플레이어가 “게임을 계속한다”를 선택하는 한, 게임 루프를 지속하는 시나리오에서 사용됩니다.

4. do while문 코드 예제

기본적인do while문 예제

다음으로, do while문의 기본적인 사용법을 보여주는 코드 예제를 소개합니다.
#include <stdio.h>

int main() {
    int i = 0;

    do {
        printf("카운트: %dn", i);
        i++;
    } while (i < 5);

    return 0;
}
이 예에서는 do 블록 내부의 처리가 먼저 실행되고, i의 값이 5 미만인 동안 루프가 계속됩니다. 따라서 0부터 4까지의 숫자가 출력됩니다.

사용자 입력 예제

사용자가 입력한 값이 특정 조건을 만족할 때까지 루프를 반복하는 경우의 코드 예제입니다.
#include <stdio.h>

int main() {
    int number;

    do {
        printf("1부터 10까지의 숫자를 입력하세요: ");
        scanf("%d", &number);
    } while (number < 1 || number > 10);

    printf("입력된 숫자: %dn", number);

    return 0;
}
이 코드는 사용자가 1부터 10 범위 밖의 값을 입력하면 다시 입력을 요청합니다. 올바른 값이 입력될 때까지 루프가 계속됩니다.

5. 무한 루프와 제어

무한 루프 생성

do while문을 사용하여 무한 루프를 생성하는 것도 가능합니다. 무한 루프란, 조건식이 항상 true이기 때문에 영원히 반복되는 루프를 말합니다.
do {
    // 무한히 반복되는 처리
} while (1);

무한 루프 제어 방법

무한 루프를 제어하려면, break문이나 continue문을 사용합니다.
  • break: 루프에서 탈출하기 위해 사용합니다。
  • continue: 루프의 남은 처리를 건너뛰고 다음 반복을 시작합니다。
아래는 break문을 사용한 무한 루프 예시입니다。
#include <stdio.h>

int main() {
    int count = 0;

    do {
        printf("루프 횟수: %dn", count);
        count++;
        if (count > 5) {
            break;
        }
    } while (1);

    return 0;
}
이 코드에서는 count가 5를 초과했을 때 break문이 실행되어 루프에서 빠져 나갑니다。

6. 여러 조건을 사용한 do while문

여러 조건을 사용하는 방법

do while문에서는, &&(AND)와 ||(OR)와 같은 논리 연산자를 사용하여 여러 조건을 결합할 수 있습니다.
do {
    // 실행할 처리
} while (条件式1 && 条件式2);

복잡한 조건을 사용한 예

다음 예에서는 사용자의 입력이 1부터 100 범위에 있는지 확인하고, 범위를 벗어나면 다시 입력을 요청합니다.
#include <stdio.h>

int main() {
    int number;

    do {
        printf("1부터 100까지의 숫자를 입력해주세요: ");
        scanf("%d", &number);
    } while (number < 1 || number > 100);

    printf("입력된 숫자: %dn", number);

    return 0;
}
이 코드에서는 입력된 값이 1 이상이며 100 이하가 아닐 경우, 다시 입력을 요구합니다.

7. 요약

do while문은 최소한 한 번은 루프 내부의 처리를 실행하고 싶을 때 유용한 구문입니다。while문과do while문을 적절히 사용함으로써 프로그램의 유연성을 높일 수 있습니다。breakcontinue를 사용하여 루프를 제어하는 방법과, 여러 조건을 활용한 고급 사용법도 배우고, C 언어의 루프 처리를 확실히 마스터합시다。

8. 연습 문제와 해답 예시

문제

사용자에게 1부터 10까지의 정수를 입력받고, 올바른 입력이 될 때까지 재입력을 요구하는 프로그램을 작성하십시오. 입력이 올바른 경우에는 입력된 수값을 두 배로 표시하십시오. <h3답 예시
#include &lt>

int main() {
    int number;

    do {
        printf("1부터 10까지의 수를 입력하십시오: ");
        scanf("%d", &number);
    } while (number < 1 || number > 10);

    printf("입력된 수값의 두 배: %dn", number * 2);

    return 0;
}
이 연습 문제에서는 do while 문을 사용하여 사용자 입력을 검증하고, 범위 밖의 입력이 발생한 경우 재입력을 요구하는 처리를 구현하고 있습니다.

9. 관련 정보와 다음 단계

do while문을 이해하면, 다른 루프 구문(for문, while문)과의 사용 구분에 대해서도 배우는 것이 좋습니다. 또한, 다음에 배워야 할 C 언어의 중요한 토픽으로 “포인터”가 있습니다. 포인터 개념을 이해함으로써 보다 고급 프로그램을 만들 수 있게 됩니다. 꼭 다음 단계로 학습해 보세요.
侍エンジニア塾