기타제어문 ( break, continue, goto, return)
c언어의 기타 제어문 (break , continue , goto, return)에 대해서 알아보자.
break와 continue는 반복문에서 주로 사용하고,
goto와 return은 프로그램의 실행 순서에 관여할 때 주로 사용된다.
1) break
break는 반복문에서 주로 사용되는데 "실행중인 코드를 빠져나가는 역할"을 한다.
예로 들어, 자동차에 있는 브레이크를 생각할 수 있다.
자동차가 달리던 중 빨강 신호를 발견하고 차를 멈췄다. 프로그래밍도 비슷하다.
반복문을 처리하다가 빨강 신호를 발견하면 현재 하던 작업을 중지한다.
반복문 안에서 break문을 만나게되면 무조건 반복문을 빠져나오게 된다.
예제를 살펴보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include <stdio.h>
int main(){
int hap = 0;
int i;
for (i = 1; i <= 100; i++)
{
hap += i;
if (hap >= 3210)
break;
}
printf("1~100의 합 중 최초로 3210이 넘는 위치는? : %d\n", i);
return 0;
}
결괏값 : 80 |
cs |
위 코드는 1부터 100까지의 합 중 최초 3210이 넘는 위치를 구하는 for문을 이용한 반복문이다.
여기서 for문 안에 if문 hap >= 3210 break;를 사용하여 값이 3210 보다 크거나 같을 시 break를 만나 루프를
빠져나오게 된다.
2) continue
반복문 실행 도중 continue를 만나면 다시 처음으로 돌아가서 처음부터 반복문을 수행하게 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#include <stdio.h>
int main(){
int hap = 0;
int i;
for ( i = 1; i <= 100; i++)
{
if ( i % 3 == 0)
continue;
hap += i;
}
printf("1~100까지의 합 (3의 배수 제외) : %d\n", hap);
}
|
cs |
for문을 보면 1부터 100까지 증가하면서 실행될것이다.
for문 안에 있는 조건문 if문 i % 3 =- 0은 i를 3으로 나눌 시 나머지가 0, 즉 3의 배수를 뜻한다.
이 if문의 조건에 충족하는 값을 만날 시 contunue로 넘어가 다시 for문을 실행하게 된다.
거짓일 시 if contuinue를 실행하지 않고 그 밑에 있는 hap = hap + i를 실행하며 프로그램이
계속 돌아갈 것이다.
예제를 한번 더 보도록 하자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#include <stdio.h>
int main(){
int i = 0;
for (i = 1; i <= 30; i++)
{
if (i >= 1 && i <= 5)
{
if ( i == 3)
{
printf("옆에 학생이 3번 학생은 결석이라고 말해준다.\n");
}
printf("%d 번 출석했습니다.\n", i);
}
}
}
|
cs |
30명의 학생들이 강의실에 들어와서 교수는 출석체크를 하려고 한다.
교수가 먼저 1~5번 까지의 학생 이름을 부르면 학생들은 몇번 출석했습니다 라고 대답을 해야 출석이 인정된다.
위 코드를 보면 (for <= 30) 30명까지의 학생들이 있는 것을 확인할 수 있다.
for문 안에는 if문( i >=1 && i <= 5) 1~5번까지의 학생들 먼저 출석을 부르는 것을 볼 수 있고
if문 안에 if문 3번 학생이 몸이 안좋아서 결석을 하여 옆 학생이 대신 말해주는 코드이다.
실행해보면,
3번 학생이 결석이라고 교수에게 전달했는데, 3번 출석했다니??
이 머쓱타드인 상황을 해결하기 위해 continue 문이 도와주어야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <stdio.h>
int main(){
int i = 0;
for (i = 1; i <= 30; i++)
{
if (i >= 1 && i <= 5)
{
if ( i == 3)
{
printf("옆에 학생이 3번 학생은 결석이라고 말해준다.\n");
continue;
}
printf("%d 번 출석했습니다.\n", i);
}
}
}
|
cs |
이렇게 continue 문이 들어가야 결과가 이렇게 나올 수 있다.
위 코드에서 i가 3인 상태에서 continue를 만나게 되면 아래 출력문은 건너뛰고
i가 4인 반복문으로 넘어가게 되는 것이다.
3) goto문
다중 루프(loop, 반복문 등)에서 한 번에 탈출하기 위해서 goto 문을 사용한다.
잘 사용하지는 않지만 한번 알아만 보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include <stdio.h>
int main(){
int hap = 0;
int i;
for ( i = 1; i <= 100; i++)
{
hap += i;
if ( hap > 1000)
goto gototest;
}
gototest:
printf("1부터 %d까지 합하면 1000이 넘습니다.\n", i);
return 0;
}
|
cs |
goto 함수를 이용할 때 위처럼 레이블을 지정해야 한다.
goto 레이블; 위 코드에선 goto gototest; 을 지정하면 지정한 레이블로 바로 넘어가게 된다.
예를 들어
goto gototest;
gototest: printf("나는 ooo이다.");
이런 식으로 goto 함수를 사용할 수 있다.
원하는 값을 구하고 멈추고 출력할 때 주로 사용되긴 하지만
프로그램의 흐름을 복잡하게 만들기 때문에 코드가 길어질 경우 버그를 초래할 수 있기 때문에
사용을 권장하진 않는다.
4) retrun
return 함수는 현재 함수를 호출한 곳으로 돌아가게 하는 함수이다.
보통 main 함수에서의 return은 프로그램을 종료한다는 의미로 사용되고있다.
return EXIT_SECCESS; = return 0;
return EXIT-FAUSE; = return 1;
보통 성공적으로 프로그램이 종료되면 return 0을 사용하고,
비정상적으로 종료될 때 ruturn 1이 사용된다고 생각하면 쉽다.
엄청 쉽게 예제로 설명하면
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <stdio.h>
int main(){
printf("안");
printf("녕");
printf("하");
return 0;
printf("세");
printf("요");
}
|
cs |
보통은 return 함수를 맨 밑에 써주지만 return 함수의 활용도를 알아보기 위해 중간에 놓아보았다.
만약 return 0이 소스코드의 맨 밑에 위치한다면 실행결과창에선 안녕하세요가 출력될 것이다.
하지만 위 소스코드에서 return 0은 중간에 위치하고 있다.
이 프로그램을 실행하면 어떻게 출력될까?
결과를 보면 "안녕하" 까지만 출력되는 것을 볼 수 있다. 즉, return 0 값이 있는 곳에서 함수를 호출한 곳으로
돌아가게 되고 소스코드는 종료된다.
그러므로 "세요"는 출력되지 않는다.
기타제어문을 정리해보자.
break : 결과가 참일 시 프로그램을 멈추는 역할
continue : 결과가 참일 시 프로그램을 멈추는 역할
goto : 레이블을 설정하여 goto 함수를 사용하면 지정한 레이블로 바로 넘어가며 지정된 레이블에 있는 값 실행
return : 현재 함수를 호출한 곳으로 돌아감
'Algorithm > C언어' 카테고리의 다른 글
[ 9. C언어의 기본 - 1차원 배열 ] (0) | 2021.10.12 |
---|---|
[ 8. C언어의 기본 - 포인터 ] (0) | 2021.10.11 |
[ 6. C언어의 기본 - 제어문의 반복문 ] (0) | 2021.10.06 |
[ 5. C언어의 기본 - 제어문의 조건문 ] (0) | 2021.10.05 |
[ 4. C언어의 기본 - 연산자 ] (0) | 2021.09.30 |