본문 바로가기
프로그래밍/C

while문, for문, do ~ while문

by 길냥이 2025. 4. 18.
728x90

목차

  1. while문
  2. for문
  3. do ~ while문

 

1. while문

일정 조건을 만족하는 동안 계속 돌아가는 것이 반복문이에요.

구조에 따라 세 가지로 쪼갤 수 있는데, 

문장 바로 옆에 조건식이 위치하는 for문과 while문

문장의 맨 끝에 조건식이 위치하는 do ~ while문이죠.

 

for문은 while문으로, while문은 for문으로 치환할 수 있어요.

 

일단 while문의 기본 구조에 대해 알아보죠.

while (조건식)

{

    실행문;

}

처럼 생겼어요.

 

바로 한번 써볼까요

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int a = 1;
	int sum = 0;
	
	printf("종료하려면 0을 입력합니다.\n");      

	while (a != 0)        //a가 0이 아닐 경우 시행
	{
		printf("합산할 숫자를 입력하세요 : ");
		scanf("%d", &a);
		sum += a;         //받은 값 합산
	}

	printf("총합 : %d", sum);      //while문 종료 후 실행

	return 0;
}

좋아요. 실행해봅시다.

종료하려면 0을 입력합니다.
합산할 숫자를 입력하세요 : 4
합산할 숫자를 입력하세요 : 5
합산할 숫자를 입력하세요 : 10
합산할 숫자를 입력하세요 : 0
총합 : 19

짜잔. while문은 이렇게 쓸 수 있어요.

 

조건을 만족하는 동안 반복문을 반복하지만, 조건이 거짓이 되면 반복문을 탈출해요.

 

2. for문

for문은 실행문의 반복 횟수를 명확히 알 수 있을 때 사용해요.

가령 같은 문장을 30번 출력한다고 하면 for문을 사용하는게 좋아요.

 

for문의 기본 구조는 다음과 같아요

for(초기식; 조건식; 증감식)

{

    실행문;

}

물론 저 식들에 콤마 연산자를 추가해서 식을 여러개로 늘릴 수 있는데, 그러면 가독성이 떨어지므로 while문 사용을..

 

어쨌든! 한번 사용해보죠. 같은 문장을 10번 출력해봅시다.

#include <stdio.h>

int main()
{
	int a = 0;       //for문의 반복 홋수를 세기 위한 변수

	for (a = 0; a < 10; a++)   //a를 0으로 초기화, a가 10보다 작은 동안, for문을 시행하고 a에 1을 더합니다.
	{
		printf("for문을 실습 중입니다, %d번째 시행입니다.\n",a+1); //a == 0부터 실행문 시행
	}

	printf("시행이 종료되었습니다.\n");   //for문을 빠져나오면 실행

	return 0;
}

이렇게 만들 수 있어요.

for문을 사용할 때는 지키면 좋은 몇 가지 규칙이 있는데

초기식, 조건식, 증감식을 알아보기 쉽게 작성하고,

반복 횟수를 세는 변수를 for문 안에서 조작하지 않는 것이 좋아요.

 

당연하게도 for문을 while문으로 치환할 수 있어요.

 

for(초기식; 조건식; 증감식)

{

    실행문;

}

 

초기식;

while(조건식)

{

    실행문;

    증감식;

}

 

와 같은 방식으로 바꿀 수 있답니다.

다만 for문은 반복 횟수를 한눈에 볼 수 있으므로, 저 3개 식이 직관적이라면 for문을 사용하는 것이 좋아요.

3. do ~ while문

이전에 봤던 for문과 while문은 조건식을 먼저 확인하고 내부 구문을 반복해요.

즉, 조건식이 거짓이라면 내부 구문은 한번도 작동되지 않아요.

하지만 do ~ while문은 조건식이 거짓이라도 내부 구문을 한 번은 작동시키는 문장이에요.

 

구조는 다음과 같아요.

do

{

    실행문;

} while (조건식);

이놈은 특이하게 구문의 맨 끝에 세미콜론이 달려요.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int a = 0;
	do
	{
		printf("    주문을 입력하세요\n");   //do ~ while문, 한번은 시행합니다.
		printf("<1> 아메리카노\n");
		printf("<2> 에스프레소\n");
		printf("<3> 프라푸치노\n");
		printf("<4> 카페모카\n");
		scanf("%d", &a);
		switch (a)               //받은 a값에 따라서 출력 결정
		{ 
		case 1:
			printf("아메리카노 주문하셧습니다.\n\n");
			break;
		case 2:
			printf("에스프레소 주문하셧습니다.\n\n");
			break;
		case 3:
			printf("프라푸치노 주문하셧습니다.\n\n");
			break;
		case 4:
			printf("카페모카 주문하셧습니다.\n\n");
			break;
		default:
			printf("주문 종료합니다.\n\n");
		}
	} while (a != 0);            //a가 0이 아닐 경우 반복합니다, a가 0이면 탈출합니다.
}

좀 두꺼운데요!

 

사실 switch문 이후는 딱히 살펴보지 않아도 괜찮아요. 이 프로그램을 시행하면 저 구문 한번은 시행한답니다.

만약 저게 while문이라면, 위쪽에서 a에 대한 초기화를 받을 때 0으로 받아서 한번도 시행하지 않았지만, 

do ~ while문이기 때문에 한번은 실행되고, 값이 변형되어서 계속 실행되게 된답니다.

 

while문과 for문은 서로 치환될 수 있어요.

do while문과도 치환될수 있어요. 하지만 do while문으로 치환할 경우에는 필요에 따라 코드를 앞쪽에 하나 더 넣는 과정이 필요해요. 왜냐고요? 그야 한 번은 실행되도록 만들어야 하니까요.

 

728x90

'프로그래밍 > C' 카테고리의 다른 글

상수와 데이터 출력 - 예제 모음  (0) 2025.04.18
중첩 반복문과 반복문 탈출  (0) 2025.04.18
switch ~ case문  (0) 2025.04.18
if문  (0) 2025.04.18
그 외 연산자  (0) 2025.04.16