본문 바로가기
c언어

c언어 do_while문 알아보기

by 개발자 L 2022. 12. 4.
반응형

c언어 do_while문 알아보기

네 안녕하세요, 이번 포스팅에서는 c언어에서 사용하는 반복문 중 하나인 do_while문에 대하여 알아보도록 하겠습니다.

do_while문도 무한루프를 돌릴 때 종종 사용을 합니다.

하지만 while문과 약간의 차이가 있습니다.

그래서 while문과 조금 헷갈리는 부분이 없지 않아 있기 때문에 잘 쓰지 않으나,

아예 안 쓰지는 않으니 한 번 알아보도록 하겠습니다.

 

1. do_while문의 형태

do_while문은 이러한 구조를 가지고 있습니다.

do
{
	문장 1;
	문장 2;
	문장 3;
	...
}while (조건식);

우리가 보던 while문과 차이가 좀 있습니다.

일단 바로 보이는 것이 있죠?
while이 위에 있지 않고 밑에 있으며,

while의 조건식이 있는 부분에 세미콜론(;)이 붙어있습니다.

그리고 이 둘은 결정적인 차이를 두 가지를 가지고 있습니다.

제가 표로 정리를 했습니다.

문법 while문 do_while문
차이점 조건에 맞지 않으면 돌아가지 않음(조건 내에서 돌아가므로) 최소 한 번은 돌아감
(while문이 제시하는 조건에 들어올 때 까지)
정방향 구조(조건 제시가 먼저) 역방향 구조(구문 실행이 먼저)

이러한 차이를 가지고 있습니다.

그래서 사람들이 좀 헷갈려 합니다.

하지만, 이 차이만 아신다면 충분히 쓸 수 있습니다.

그리고  while문이 시작과 끝을 정할 수 있으며, 간혹 로직에서 스킵을 해야만 하는 부분들이 있을 시 넘길 수 있고, 끝만 정할 수 있으며, 적어도 한 번은 수행이 될 수밖에 없고, 다시 말하면 조건에 맞지 않아도 적어도 한 번 수행이 되기 때문에,

무조건 한 번은 실행이 기본으로 깔리는 문법인 do_while문보다는 좀 더 쓰기가 편합니다.

그래서 사람들이 while문을 더 많이 찾습니다.

그러면 do_while문으로 무한루프를 돌리는 방법을 한 번 알아보도록 하겠습니다.

#include <stdio.h>

int main()

{
    int n, sum = 0;
    
    do
    {
        printf("성적을 입력하세요 : ");
        scanf("%d", &n);

        sum += n;
    } while(n != 0);

    printf("입력된 숫자들의 합은 %d입니다.\n", sum);

    return 0;
}

이렇게 한 번 작성을 해봤습니다.

그리고 의외로 do_while문에서는 같다(==)와 아니다(!=) 논리식이 자주 쓰입니다.

그 이유는 do_while문은 기본적으로 '해당 조건에 부합할 때까지' 돌리기 때문입니다.

그래서 while문이 제시하는 조건에 같아지거나, 혹은 while문이 제시하는 조건이 '아니다'라면,

그 '아니다'가 제시한 값을 입력할 시에 종료가 알아서 됩니다.

그래서 do_while문은 일반적인 무한루프들에는 쓰기가 좀 더 편합니다.

굳이 장치를 걸어두지 않아도, 이 구문이 알아서 제공을 해주니까요.

그럼 결과도 한 번 보도록 하겠습니다.

성적을 입력하세요 : 50
성적을 입력하세요 : 55
성적을 입력하세요 : 89
성적을 입력하세요 : 11
성적을 입력하세요 : 245
성적을 입력하세요 : 0
입력된 숫자들의 합은 450입니다.

이렇게 0을 입력하면 종료가 되면서 연산의 결과가 출력이 되는 것을 보실 수가 있습니다.

반응형

 

2. do_while문 사용해보기(메뉴 선택하기)

do_while문을 이용하여 메뉴를 선택하는 프로그램을 만들 수도 있습니다.

보통 이러한 메뉴는 최소 한 번은 선택을 하게 되며,

들어가자마자 닫는 경우도 거의 없기 때문입니다.

그럼 바로 예시를 들어보도록 하겠습니다.

#include <stdio.h>

int main()

{
    int i = 0;
    
    do
    {
        printf("하나를 선택하세요 : \n");
        printf("1 --- 새로 만들기\n");
        printf("2 --- 파일 열기\n");
        printf("3 --- 파일 닫기\n");
        scanf("%d", &i);
    } while(i < 1 || i > 3);

    printf("선택된 메뉴는 %d입니다.\n", i);

    return 0;
}

이렇게 한 번 작성을 해봤습니다.

여기서는 1 보다 작은 값을 입력하거나, 3 보다 큰 값을 입력하게 되면 다시 선택창이 나타납니다.

그럼 결과를 한 번 보도록 하겠습니다.

먼저 1을 선택한 경우입니다.

하나를 선택하세요 :
1 --- 새로 만들기
2 --- 파일 열기
3 --- 파일 닫기
1
선택된 메뉴는 1입니다.

2를 선택한 경우입니다.

하나를 선택하세요 :
1 --- 새로 만들기
2 --- 파일 열기
3 --- 파일 닫기
2
선택된 메뉴는 2입니다.

3을 선택한 경우입니다.

하나를 선택하세요 :
1 --- 새로 만들기
2 --- 파일 열기
3 --- 파일 닫기
3
선택된 메뉴는 3입니다.

1 보다 작거나 3 보다 큰 값을 입력했을 경우입니다.

하나를 선택하세요 : 
1 --- 새로 만들기
2 --- 파일 열기
3 --- 파일 닫기
0
하나를 선택하세요 : 
1 --- 새로 만들기
2 --- 파일 열기
3 --- 파일 닫기
4
하나를 선택하세요 : 
1 --- 새로 만들기
2 --- 파일 열기
3 --- 파일 닫기

이렇게 다시 창이 뜨는 것을 볼 수가 있습니다.

이제 여러분들은 무한루프를 돌리는 또 다른 방법을 하나 더 알게 되었습니다.

 

여기까지 do_while문에 대하여 알아보았는데요,

다음 포스팅에서는 for문에 대하여 알아보도록 하겠습니다.

긴 글 읽어주신 독자분들께 진심으로 감사드립니다 ~

반응형

댓글