"브레이크 (프로그래밍)"의 두 판 사이의 차이
2번째 줄: | 2번째 줄: | ||
== 개요 == | == 개요 == | ||
+ | 반복문의 흐름제어에는 3가지 키워드가 있다. | ||
+ | |||
+ | 1. break 문 | ||
+ | 2. countinue 문 | ||
+ | 3. goto 문 | ||
+ | |||
+ | 이 중에서 break문은 제어문 수행 중 일정 조건에 의해서 제어문에서 빠저나가는 경우에 사용을 한다. 즉 반복수행문(for문) 중에 어느 조건을 세우두고 그 조건에 맞으면 해당 제어문이 끝난다. | ||
== 역사 == | == 역사 == | ||
8번째 줄: | 15번째 줄: | ||
== 활용 == | == 활용 == | ||
+ | |||
+ | //기존 단일 loop | ||
+ | int a = 3; | ||
+ | for (int i=0; i<a; i++{ | ||
+ | System.out.println(i); | ||
+ | } | ||
+ | |||
+ | // 결과물 | ||
+ | 0 | ||
+ | 1 | ||
+ | 2 | ||
+ | |||
+ | // break 문 활용 | ||
+ | int a = 3; | ||
+ | for(int i=0; i<a; i++){ | ||
+ | if(i=1){ | ||
+ | System.out.println(i); | ||
+ | |||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // 결과물 | ||
+ | 1 | ||
+ | |||
+ | 이렇게 사용하면 i가 1일 때 바로 break문을 타고 for문을 벗어나기 때문에 결과물이 1이 출력된다.<ref name="반복문"><[https://docu94.tistory.com/41 반복문]><<독서하는 개발자's Blog>>, 2019-03-11</ref> | ||
+ | |||
+ | void foo(int i) | ||
+ | { | ||
+ | printf("안녕하세요(작동 Raimon 여기)."); | ||
+ | return i + 10; | ||
+ | } | ||
+ | |||
+ | void iffunc(int input) | ||
+ | { | ||
+ | if(foo(input) == 1) | ||
+ | { | ||
+ | // Do Something | ||
+ | } | ||
+ | else if(foo(input) == 2) | ||
+ | { | ||
+ | // Do Something | ||
+ | } | ||
+ | else if(foo(input) == 3) | ||
+ | { | ||
+ | // Do Something | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | // Do Something | ||
+ | } | ||
+ | } | ||
+ | |||
+ | 이 예제를 보면, foo(input)의 값은 변하지 않음이 보장되어 있음에도 불구하고 동일한 함수의 호출을 여러번 하는 결과가 나타난다. 이를 switch문으로 개선하면 다음과 같다. | ||
+ | |||
+ | void foo(int i) | ||
+ | { | ||
+ | printf("foo 함수가 실행되었습니다."); | ||
+ | return i + 10; | ||
+ | } | ||
+ | |||
+ | void switchfunc(int input) | ||
+ | { | ||
+ | switch(foo(input)) | ||
+ | { | ||
+ | case 1: | ||
+ | // Do Something; | ||
+ | break; | ||
+ | case 2: | ||
+ | // Do Something; | ||
+ | break; | ||
+ | case 3 | ||
+ | // Do Something; | ||
+ | break; | ||
+ | default: | ||
+ | // Do Something; | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | 또한 switch case문에서 case에 있는 상수 1, 2, 3 등 바이너리의 jump table에 미리 기록되어서 조건에 맞으면 jump table의 주소를 참조하여 빠르게 다음 코드를 처리할 수 있다. | ||
+ | |||
+ | 이처럼 switch문은 foo(input)함수를 한번만 실행하고 그 결과값을 대조하게 함으로써 전체 코드의 실행 시간을 단축시킨다.<ref name="switch"><[https://ko.wikipedia.org/wiki/Switch_%EB%AC%B8 switch문]><<위키백과>></ref> | ||
+ | |||
{{각주}} | {{각주}} |
2020년 8월 14일 (금) 11:12 판
브레이크(break)는 프로그래밍 언어에서 for 또는 while 등의 반복문(Loop)을 벗어날 때 사용하는 명령어이다. 조건문인 switch문에서 벗어날 때도 사용한다. return문이 결과값을 반환하는 반면, break문은 어떤 결과값도 반환하지 않는다.
개요
반복문의 흐름제어에는 3가지 키워드가 있다.
1. break 문 2. countinue 문 3. goto 문
이 중에서 break문은 제어문 수행 중 일정 조건에 의해서 제어문에서 빠저나가는 경우에 사용을 한다. 즉 반복수행문(for문) 중에 어느 조건을 세우두고 그 조건에 맞으면 해당 제어문이 끝난다.
역사
특징
활용
//기존 단일 loop int a = 3; for (int i=0; i<a; i++{ System.out.println(i); }
// 결과물 0 1 2
// break 문 활용 int a = 3; for(int i=0; i<a; i++){ if(i=1){ System.out.println(i); break; } }
// 결과물 1
이렇게 사용하면 i가 1일 때 바로 break문을 타고 for문을 벗어나기 때문에 결과물이 1이 출력된다.[1]
void foo(int i) {
printf("안녕하세요(작동 Raimon 여기)."); return i + 10;
}
void iffunc(int input) { if(foo(input) == 1) { // Do Something } else if(foo(input) == 2) { // Do Something } else if(foo(input) == 3) { // Do Something } else { // Do Something } }
이 예제를 보면, foo(input)의 값은 변하지 않음이 보장되어 있음에도 불구하고 동일한 함수의 호출을 여러번 하는 결과가 나타난다. 이를 switch문으로 개선하면 다음과 같다.
void foo(int i) {
printf("foo 함수가 실행되었습니다."); return i + 10;
}
void switchfunc(int input) { switch(foo(input)) { case 1: // Do Something; break; case 2: // Do Something; break; case 3 // Do Something; break; default: // Do Something; break; } }
또한 switch case문에서 case에 있는 상수 1, 2, 3 등 바이너리의 jump table에 미리 기록되어서 조건에 맞으면 jump table의 주소를 참조하여 빠르게 다음 코드를 처리할 수 있다.
이처럼 switch문은 foo(input)함수를 한번만 실행하고 그 결과값을 대조하게 함으로써 전체 코드의 실행 시간을 단축시킨다.[2]