[C]  1에서 100 사이의 3의 배수의 합 : for, while, do while 반복문의 이해
Language/C, C++

[C] 1에서 100 사이의 3의 배수의 합 : for, while, do while 반복문의 이해

#include <stdio.h>

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

	// for
	for (i = 1; i <= 100; i++)
	{
		if (i % 3 == 0)
			sum += i;
	}
	printf("%d\n", sum);

	// while
	i = 1;
	sum = 0;
	while (i<=100)
	{
		i++;
		if (i % 3 == 0)
			sum += i;
	}
	printf("%d\n", sum);

	// do while
	i = 1;
	sum = 0;
	do
	{
		if (i % 3 == 0)
			sum += i;
		i++;
	} while (i <= 100);
	printf("%d", sum);

	return 0;
}

// 각 반복문이 새로 시작되기 직전에 변수 i 를 1, sum 을 0로 다시금 초기화시키는 이유는 코드가 위에서 아래를 향해 순차적으로 명령줄을 실행하기 때문에 값이 중복 적용되는 것을 방지하기 위함입니다.

// 위 소스코드를 그대로 사용한다면 i 와 sum 을 초기화시켜줄 필요는 없지만, 만약 각 반복문마다 i 에 다른 값을 적용시키게 된다면 이전 반복문의 최종값을 저장해둔 sum 값이 다음 반복문에서 그대로 중첩 적용되어 원하지 않는 값이 나오게 됩니다.

 


 

 코딩 입문자들이 반복문 파트에서 가장 헷갈려 하는 것이 아마 do while문 일텐데요.

 

 프로그래밍 언어도 결국 언어이기 때문에 함수의 이름을 아래처럼 직관적으로 해석하시면 함수가 동작하는 알고리즘을 이해하기가 굉장히 수월해집니다.

do      한 번 실행해줘  ( 무엇을 실행해줘 ? )
{
     블럭 안에 입력한 명령들을  ( 한 번 실행시켰어. 이 블럭을 몇 번 반복할까 ? )
} while (true);      조건식에 입력한 범위까지

 이를 통해 알 수 있듯이, do while 문이 while 문과 전체적인 동작 자체는 같다고 볼 수 있지만 근소한 차이가 있습니다.

 while 문의 경우는 조건식을 적용시킨 상태에서 바로 반복 동작하지만,

do while 문은 do 를 통해 일단 1회 동작시킨 다음부터 while 의 조건식을 적용시키는 것이죠.

 

 하지만 반복문이라는 것은 결국 궁극적으로 어떠한 명령들을 반복 수행하기 위한 수단으로 사용하는 것이기 때문에

do while 은 특수한 경우에만 사용되는 편이고 대부분의 반복문들은 for 문과 while 문으로 충분히 구성이 가능하겠습니다.

 

 필자의 경우 대부분의 반복문을 for 문을 통해 작성하고, 참(1) 값으로 무한루프를 돌려야하는 경우에만 while 을 사용합니다.