while문은 조건식의 값이 참이면 문장을 반복 수행하고 거짓이면 반복을 중단한다.

 

 

while문 기본형식

 

while(조건식)

    반복할 문장;

 

 

조건식은 참, 거짓으로 계산되는 수식으로 관계 연산자나 논리 연산자를 사용한 수식이 일반적이다.

 

 

예시

# pragma warning(disable : 4996)
# pragma warning(disable : 6031)
# include <stdio.h>
# include <math.h>

int main()
{
	int i, sum = 0;

	i = 1;
	while (i <= 10)
	{
		sum = sum + i;
		i = i + 1;
	}
	printf("1부터 %d까지의 합은 %d입니다.", i-1, sum);

	return 0;
}

 

cf) while문을 시작할 때 처음부터 조건식의 값이 거짓일 경우에는 본체가 한번도 실행되지 않을 수 있다. 

 

 

while문으로 무한루프 만들기

while문으로 무한루프를 만들려면 조건식에 항상 참인 값을 사용.

0이 아닌 값은 모두 참이지만 보통은 while(1)처럼 1을 사용한다.

위의 while문은 다음과 같인 변형될 수 있다.

무한 루프를 빠져나오기 위해서는 for문과 마찬가지로 탈출조건 필요(break)

while(1)
{
    if (i > 10) break;
    sum += i;
    mult *= i;
    i++;
}

 

 

무조건 한 번은 반복하기 do~while문

 

do

{

    반복할 문장;

} while (조건식);

 

do는 무조건 뒤에 {}(중괄호)가 필요하다.

i = 1;
do{
   printf("***\n")
} while (i <= 100);

 

이게 유용한 이유는

코드는 제어문이 많을수록 가독성과 디버깅에 좋지 않기 때문이다.

# pragma warning(disable : 4996)
# pragma warning(disable : 6031)
# include <stdio.h>
# include <math.h>

int main()
{
	while (1)
	{
		printf("양수를 입력하세요. ");
		scanf("%d", &n);
		if (n > 0)
			break;
	}
}

 

이것보다

# pragma warning(disable : 4996)
# pragma warning(disable : 6031)
# include <stdio.h>
# include <math.h>

int main()
{
	do
	{
		printf("양수를 입력하세요.");
		scnaf("%d", &n);
		
		if (n > 0)
			break;
	} while (n <= 0);
}

 

이게 더 좋은 코드 왜냐면 제어문이 전자는 2개이고 후자는 1개이기에 

 

 

continue문

반복문을 실행하다가 continue문을 만나게 되면 continue 다음에 있는 문장은 수행하지 않고 루프의 시작이나 끝부분으로 이동한다. 즉, for문이나 while문과 같은 반복문에서 continue를 만나면 for이나 while의 시작부분으로 돌아가 조건식부터 다시 검사하게 되며, do~while문에서 continue를 만나면 do~while문의 끝에 있는 조건식을 검사하고 루프를 반복한다. 

 

 

오늘 내용 총 복습할 수 있는 예시

# pragma warning(disable : 4996)
# pragma warning(disable : 6031)
# include <stdio.h>
# include <math.h>

int main()
{
	int n, cnt, sum;

	sum = 0;
	cnt = 1;
	
	while (cnt <= 5)
	{
		printf("양의 정수를 입력하세요. ");
		scanf("%d", &n);

		if (n >= 0)
		{
			printf("%d번째: 지금까지의 합 %d + %d = ", cnt, sum, n);
			sum = sum + n;
			cnt = cnt + 1;
			printf("%d\n\n", sum);
		}

	}
}

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

자료 배열 2 (9장)  (0) 2024.05.27
자료 배열 1 (8장)  (0) 2024.04.29
C,C++ - 반복문  (0) 2024.04.03
C,C++ -switch문  (1) 2024.04.03
C,C++ - 제어문(if)  (0) 2024.04.03

+ Recent posts