본문 바로가기
개발/C, C++

[c/c++] do while문

by 77monkey 개발자 2023. 8. 20.
반응형

저번시간에 작성한 while문을 잘 이해하셨다면, do while문은 쉽게 익히실 수 있습니다. 혹시 바로 해당 페이지로 오셨다면, 아래 while문 페이지도 참고해 주세요~

 

2023.08.17 - [개발] - [c/c++] while문

 

[c/c++] while문

for문이라는 산을 넘었으니 이제 while문은 쉬울 것으로 생각된다. 자, while문은 편한 마음으로 시작해 보도록 하자. while문 형식 while (조건) { //코드 } 원하는 조건을 만족하는 동안에 while문 중괄호

77monkey.tistory.com


do while문 형식

do {
	//코드
} while (조건);

원하는 조건을 만족하는 동안에 do while문 중괄호 블록이 반복됩니다. 

여기서 놓치기 쉬운 부분이 while (조건) 다음에 ";" 세미콜론을 빠트리는 경우가 있습니다.

세미콜론을 빠트리지 않도록 주의 부탁드려요~~!

while과 다른 점이 무엇인지 궁금하실 수 있는데, while문은 바로 조건문을 확인해서 조건이 거짓이면 while문을 실행하지 않지만, do while문은 1번은 무조건 실행이 된다는 점에서 다릅니다!

그렇기 때문에 적어도 한 번은 실행하고 싶으실 때에는 do while문을 사용하시면 됩니다. 

 

do while문 예시

#include <stdio.h>

int main() {
	int i;

	i = 0;
	do {
		printf("%d\n", i);
		i++;
	} while (i < 10);

	return 0;
}

0부터 9까지 출력하는 코드입니다. 

i를 0으로 초기화를 하고 바로 do while문으로 들어가게 됩니다. 

그리고 i를 출력해주고 i를 증가시킵니다. 

이제 while 옆의 조건을 확인하게 됩니다. i가 10보다 작기 때문에 참이 되기 때문에 다시 do while문 중괄호 블록으로 갑니다. 

이렇게 반복하다가 i가 10이 되는 순간 조건이 거짓이 되기 때문에 do while문을 나가게 됩니다. 

결과는 아래와 같습니다. 

0
1
2
3
4
5
6
7
8
9

 

do while문 사용 예시

do while(0) 

do {
	//코드
} while (0);

위와 같은 코드는 매크로를 만들 때 많이 사용이 되고, do while문 구문이 한번만 실행이 되고 코드 라는 부분에 여러 줄의 코드를 넣을 수 있어서 매크로를 어디에 넣어도 해당 매크로 구문이 다 실행될 수 있도록 합니다. 

메뉴 등처럼 사용자의 입력을 받는 경우

사용자의 입력을 받아서 원하는 동작을 이루어지도록 하는 경우도 있습니다. 

예를 들면 아래와 같은 코드입니다.

#pragma warning (disable:4996)

#include <stdio.h>

int main() {
	const char * menu[5] = { "", "삼계탕", "추어탕", "햄버거", "짜장면" };
	int input;
	
	do {
		printf("점심 메뉴를 선택해 주세요\n");
		printf("1. 삼계탕\n");
		printf("2. 추어탕\n");
		printf("3. 햄버거\n");
		printf("4. 짜장면\n");
		printf("입력: ");
		scanf("%d", &input);
		
	} while ( input < 0 || 4 < input );

	printf("오늘의 점심메뉴는 %s입니다.\n", menu[input]);

	return 0;
}

조금 어려울수도 있는데, 여기서 do while문만 집중적으로 살펴보면 다음과 같습니다. 

input이라는 변수가 0보다 작거나 4보다 클 경우에 계속 입력을 새로 받습니다. 

그러다가 input이 0보다 크고 4보다 작으면 do while문을 탈출해서 오늘의 점심 메뉴가 무엇인지 출력을 해줍니다. 

결과를 보시면 다음과 같습니다. 

점심 메뉴를 선택해 주세요
1. 삼계탕
2. 추어탕
3. 햄버거
4. 짜장면
입력: 3
오늘의 점심메뉴는 햄버거입니다.

input으로 받은 숫자 값을 문자열로 바꾸기 위해서 배열을 사용합니다. 그러면 위와 같이 표현이 가능합니다. 

 

마무리

do while문까지 배웠기 때문에 반복문에 대해서는 다 배웠습니다. 

이제 for, while, do while문을 적절하게 사용함으로써 프로그램을 만드시길 바랍니다. 

혹시 menu 예시 코드가 궁금하시면 댓글 부탁드립니다. 친절하게 설명드리도록 하겠습니다.

반응형

'개발 > C, C++' 카테고리의 다른 글

[c/c++] 1차원 배열  (0) 2023.08.25
[c/c++] switch문  (0) 2023.08.21
[c/c++] while문  (0) 2023.08.17
[c/c++] for문 (2)  (1) 2023.08.16
[c/c++] for문  (0) 2023.08.16