"브레이크 (프로그래밍)"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
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]


각주

  1. <반복문><<독서하는 개발자's Blog>>, 2019-03-11
  2. <switch문><<위키백과>>

참고자료

같이보기