나의 IT일지
분기문(break문, continue문) 본문
제어문이란 프로그램의 흐름을 제어하는 문법으로 조건문과 반복문이 있다.
- 조건문이란 일정 조건을 만족시킬 때, 실행문을 실행하도록하는 문법으로, if문과 switch문이 있다.
- 반복문이란 일정 조건을 만족하는 동안 같은 실행문을 반복적으로 실행하도록 하는 문법으로 while문과 for문이 있다.
그리고 이러한 제어문 안에서도 분기문이라는 것을 사용하는데, 분기문이란 제어문의 일종으로, 흐름을 가로채거나(continue문) 흐름에서 빠져나가게 하기(break문) 등 기존 흐름에 따르지 않고 다른 명령을 수행하도록 하는 문법이다.
break문
반복문,조건문의 명령문을 탈출시키는 기능을 가진 제어문으로, 보통 반복문의 반복 실행을 즉시 끝낼 때 사용한다.
#include<stdio.h>
void main() {
int sum = 0;
int i;
for (i=1; i <= 100; i++) {
sum = sum + i;
printf("%d까지의 합은 %d이다\n", i, sum);
if (sum >= 200) { break; }
}
printf("합이 200보다 커지게되는 경우는 1부터 %d까지의 합이다.", i);
}
위의 코드는 break문의 예시로, if문이 없었다면, 원래는 변수 i가 100이 되기 전까지 실행이 된다. 하지만 if문에 break문이 있어서 if문의 조건이 맞춰지면 자동적으로 for문을 탈출할 수 있게 된다. 즉 변수 i가 100이 되기 전에, 합이 200이상이 되면 해당 코드는 종료하게 되는것이다.
break문을 사용할 때, 주의해야 할 사항이 있다. break는 break문이 실행되는 실행문만 빠져나간다. 즉, 여러개의 반복문이 중첩된 경우에는 현재 위치한 반복문 하나만 빠져나간다.
while (...) { for (...) { ... if(조건식) {break;} } } |
while (...) { for (...) { ... } if(조건식) {break;} } |
for문만 탈출하고 while문은 실행된다. | while문에서 탈출한다. |
continue문
반복문, 조건문의 실행을 중지하고 실행위치를 반복문이나 조건문의 실행문 뒤로 이동하는 제어문으로, 명령문을 건너뛸 때 사용한다.
#include<stdio.h>
void main() {
int sum = 0, i;
for (i = 1; i <= 100; i++) {
if (i % 2 == 0) {
continue;
}
sum = sum + i;
printf("%d까지의 홀수의 합은 %d\n", i, sum);
}
printf("홀수의 합은 %d", sum);
}
위의 코드를 보면, 짝수일 때, contine문을 통해 "sum = sum + i", "printf("%d까지의 홀수의 합은 %d\n", i, sum)"명령을 무시하는 것을 알 수 있다.
만약 if문이 없었다면, 원래는 홀수 뿐만 아니라 짝수까지 합한 것이 출력이 되어야 한다. 하지만 if문에 continue문이 있어서, if문의 조건이 맞춰지면 반복문의 다음 실행문의 명령들은 모두 무시하고 증감식으로 들어가게 된다. 즉 변수 i가 홀수이면, 변수 sum과 변수 i의 합을 변수 sum에 저장하고 출력하는 것이다.
continue문을 while문에서 사용할 때, 실행문에 증감식을 넣어버리면 무한 반복이 되어버린다.
i = 1;
while (i <= 100){
if(i % 3 == 0){
continue
}
sum += 1;
i++;
}
만약 i의 값이 3일 경우, if(i % 3 == 0)이 참이 되기 때문에 continue문이 적용이 된다. 그렇게 되면 증감식이 적용이 안되어서 i의 값이 계속 3이 되어 버린다. 따라서 continue문을 사용할 때에는 무한 반복이 되지 않도록 주의해야 한다.
'프로그래밍 언어 > C언어' 카테고리의 다른 글
함수 (0) | 2023.02.14 |
---|---|
다중 반복문 (0) | 2023.02.13 |
반복문(for문) (0) | 2023.02.11 |
반복문(while문) (0) | 2023.02.10 |
조건문(switch문) (0) | 2023.02.09 |