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문에 대하여 알아보도록 하겠습니다.
긴 글 읽어주신 독자분들께 진심으로 감사드립니다 ~
'c언어' 카테고리의 다른 글
c언어 for문 직접 사용해보면서 간단한 예제 풀어보기(1부터 임의의 수 n까지의 합 구하기, 세제곱 값 구하기, *로 네모 그리기, 팩토리얼 값 구하기(for문 이용), 팩토리얼 값 구하기(while문 이용).. (0) | 2022.12.04 |
---|---|
c언어 for문 알아보기 (0) | 2022.12.04 |
c언어 반복문 루프에서 보초 값 사용하기(while문, 성적의 평균 구하기) (0) | 2022.12.04 |
c언어 while문 직접 사용해보면서 간단한 예제 풀어보기(구구단 출력하기, 제곱 값 출력하기, 1부터 n까지의 정수의 합 구하기, 입력한 수 까지 중 짝수의 합 구하기, 입력한 값들의 합 구하기) (0) | 2022.12.04 |
c언어 while문 알아보기 (0) | 2022.12.04 |
댓글