안녕하세요,
이번 포스팅에서는 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문은 반복문을 사용할 때 여러 조건들을 체크하기 위해 유용하게 사용될 수 있습니다.
이상으로 이번 포스팅을 마치겠습니다.
피드백 사항이나 질문이 있으시다면 댓글 달아주시고, 공감도 한 번씩 눌러주시면 감사하겠습니다.
'C언어 강좌' 카테고리의 다른 글
[C언어_09] C언어 문제 풀이 #3 (0) | 2020.11.07 |
---|---|
[C언어_08] 중첩 반복문/무한루프: 문제풀이에 어떻게 응용하는가 (0) | 2020.11.02 |
[C언어_06] C언어 문제 풀이 #2 (0) | 2020.10.14 |
[C언어_05] 다양한 조건문 (if, if...else, if...else if...else, switch) (0) | 2020.10.11 |
[C언어_04] C언어의 다양한 연산자 & 참, 거짓 (0) | 2020.10.09 |