본문 바로가기

C언어 강좌

[C언어_07] 반복문(while / for), continue, break

안녕하세요,

이번 포스팅에서는 C언어의 반복문과 continue, break에 대해 알아보는 시간을 가져보도록 하겠습니다.

 

만약 "Hello, World!"를 총 10번 출력하고 싶다고 할 때, 어떻게 하면 좋을까요? 지금까지 공부했던 방법만 가지고 이야기하자면, "Hello, World!"를 출력하는 printf 함수 호출문을 10번 삽입해야 합니다. 그러나 이 방법은 비효율적입니다.

따라서 효율적으로 코드를 짤 수 있는 방법이 반복문을 활용하는 것입니다.


| While문

While 문은 특정조건을 주고 그 조건을 만족하는 동안, 특정영역을 계속해서 반복하는 구조입니다. 

아래 코드를 살펴보며 자세히 얘기해보겠습니다.

int num = 0;

while(num<3) // 반복의 조건 : num < 3
{
	printf("Hello, World!"); // 실행문
	num ++; // 증감식
}

while문의 소괄호 안에는 반복의 조건을 제시하고, 이 조건이 만족되는 동안 중괄호 안에 존재하는 코드가 반복 실행되는 구조입니다.

그럼 현재 num의 값이 0인 상태에서 위의 while문을 실행한다고 가정해보면,

먼저 printf 호출문이 실행이 되고, 다음으로 증감식인 num ++이 실행이 됩니다. 따라서 한 번 실행이 되면 0이었던 num값이 1로 증가하게 되면서 num < 3이 될때까지 실행문이 실행됩니다.

 

또한 반복문 안에서도 들여쓰기를 해야합니다.

 

초기식;

while
(조건식)
{
    실행문;
    증감식;
}

다음과 같이 정리할 수 있습니다.

 


| for문

for문은 반복문 중에서 가장 많이 사용되는 반복분입니다.

새로운 형태의 반복문이라기 보다, 특정상황에서 while문보다 편하게 반복문을 구성할 수 있도록 설계된 것입니다.

 

"문자열 'Hi'를 총 3회 출력하고 싶습니다."

 

위의 문장을 보면 반복의 횟수가 정해져 있습니다. 

이렇듯 반복의 횟수를 정한 상태에서의 while문을 작성하면 다음과 같습니다.

 

void main()
{
	int num = 0; // 필수요소 1. 반복을 위한 변수의 선언
	while(num<3) // 필수요소 2. 반복의 조건검사
	{
		printf("Hi");
		num ++; // 필수요소 3. 반복의 조건을 '거짓'으로 만들기 위한 연산
	}
}

주석을 통해 표현한 필수요소 1, 2, 3 중 어느 것 하나라도 생략할 수 없습니다.

이 필수요소들을 한 데 묶어 놓으면, 반복의 반복횟수를 판단하기가 더 쉬워집니다.

그리고 이러한 생각을 반영해서 만든 것이 for문입니다.

 

위의 코드에서 언급한 필수요소 1, 2, 3을 가리켜 각각 다음과 같이 표현합니다.

 

  • 필수요소 1          초기식          반복을 위한 변수의 선언 및 초기화에 사용
  • 필수요소 2          조건식          반복의 조건을 검사하는 목적으로 선언됨
  • 필수요소 3          증감식          반복의 조건을 '거짓'으로 만드는 증가 및 감소 연산

그리고 for문을 이용하면 다음과 같이 위의 3요소를 한 데 묶을 수 있습니다.

for ( 초기식 ; 조건식 ; 증감식)
{
     // 반복의 대상이 되는 문장들
}

따라서 앞서 보인 while문은 다음과 같이 for문으로 변경이 가능합니다.

void main()
{
	for (int num = 0; num < 3; num++)
		printf("Hi"); // 반복의 대상이 한 줄이므로 중괄호 생략!
}

확실히 반복문이 훨씬 간결해졌음을 알 수 있습니다.

 


이번에 설명하는 continue문과 break문은 while문과 같은 반복문과 관련이 있다. 그런데 이 두 문장은 보통 if문과 함께 쓰인다.

| break문 

break문은 반복문을 탈출할 때(빠져 나올 때) 사용하는 키워드입니다.

break;

위의 break문이 실행되면, break문을 가장 가까이서 감싸고 있는 반복문 하나를 빠져나오게 됩니다.

 

break문을 사용하지 않으면 for문이나 while문 같은 반복문이 종결조건이 완료될 때까지 계속해서 반복문을 돌게 됩니다. 하지만 이 break문을 이용하면, 종결조건을 만족하지 않았는데도 반복문을 빠져나올 수 있습니다.

 

조건문과 함께 쓰이다 보니 조건문을 빠져나오는 것처럼 헷갈릴 수 있지만,

조건문이 아니라 반복문을 빠져나온다는 것!

 


| continue문

이 역시 break문과 마찬가지로 반복문 안에 삽입이 됩니다.

 

continue문은 반복문을 계속 진행하는 역할을 합니다.

"계속한다는 건 그냥 그대로 코드를 진행하는 것 아닌가?" 라고 생각할 수 있지만

이 "계속" 이라는 의미는 아래 코드를 생략하고 다음 반복을 실행한다는 의미입니다.

continue;

반복문 안에서 위의 문장을 실행하게 되면, 실행중인 위치에 상관없이 반복문의 조건검사 위치로 이동을 합니다. 그리고 검사결과 반복조건이 여전히 '참'이라면 반복영역을 다시 실행하게 됩니다.

 

이처럼 break문과 continue문은 반복문을 사용할 때 여러 조건들을 체크하기 위해 유용하게 사용될 수 있습니다.

 


이상으로 이번 포스팅을 마치겠습니다.

피드백 사항이나 질문이 있으시다면 댓글 달아주시고, 공감도 한 번씩 눌러주시면 감사하겠습니다.