비조건 분기문 (break, return, continue)

Oct 2, 2017


[네이버 백과]

*분기문

  • 절차 분기문(procedure branching statement)

원시 프로그램 중에 쓰여진 순서에 따르지 않고 다음의 실행문이 아닌 다른 문에 제어의 명시적인 이행을 일으키는 문.

  • 무조건 분기문(unconditional branch statement)

프로그램의 순차적 수행 순서에서 이탈하여 지정된 곳으로 무조건 분기를 지시하는 문장.

[위키]

-**조건 분기문 **

구문의 덩어리르 어떤 조건이 만족하는 경우에만 실행하게 할 수 있다. 그렇지 않으면, 그 구문의 덩어리를 실행하지 않고 그 다음부터 실행한다. => 조건문

-비조건 분기문

실행 순서를 프로그램의 다른 부분으로 옮기는 것이다. 여러 언어에서 제공하는 GOTO문, 서브프로그램, 프로시저, 호출문들이 비조건 분기분이다.

#종합해 보면 분기문이라는 말이 우리가 알고 있는 조건문, 반복문을 통칭하는 의미 인것 같고, 내가 알고 싶은 ‘반복문을 탈출(?) 하는 방법’은 **비조건 분기문 **이라는 용어가 적합해 보인다.

[Oracle - Java documentation]

Branching Statements

**
**

-The *break *Statement

The break statement has two forms: labeled and unlabeled. (뭐 break문에 두 가지 폼이 있다는 것 같다.)

뒤에 해석을 덧붙이자면 언라벨드(라벨=명명) 형식은 switch나 *for, while, do-while *에서 쓰는 거랑 같다.

  • Oracle - java documentation의 코드를 가져왔다.

  • 배열에서 원하는 값을 찾아내는 간단한 코드이다.

  • for문 안에 if문이 있고 우리의 break 가 보인다.

  • searchfor에 해당하는 값을 찾으면 for문을 종료한다.

  • 알다시피이며 새로울게 없당.

문제는 라벨드된 놈인데, 코드 한번 보자.

(이건 이차원 배열에서 원하는 값을 찾는거다. 위랑 비슷해서 탐색하는 부분만 가져왔다.)

  • 이 줄의 위풍당당한 *search: *가 보이는가?

  • **break search; **

** *이게 라벨드다(Labeled)

아래 Oracle -java documention 의 설명이다.

안보이는데 걍 *break *만나면 for문 끝난다는 뜻이다.

※결론 쓰든 안쓰든 for문 끝남, 전달해주는 값 없고, for문 끝나면 for문 다음 명령어 수행.

*근데 라벨드는 쓰임을 좀 더 확인해 볼만은 하다.

*이 부분은 넘겨도 된다. 걍 내가 새롭게 알게된 사실이다.

*for문은 조건문을 무조건 다 돈다.

*라벨해 놓아도 순차가 남아있으면 for문 돈다.

-The *continue *Statement

(반복문을 스킵한다)

  • 좀 추상적인데 코드를 보면 문자열을 검색하다가 p가 아니면 for문 안의 *continue *밑의 명령어를 생략한다는 뜻이다.

*즉 p를 만나면 numPs++를 실행한다는 뜻.

*결과: Found 9 p’s in the string.

*이 친구도 라벨드가 있다.(다음에 설명한다 머리아프다)

-The *result *Statement

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html