F.R.I.D.A.Y.

Kotlin: 12 흐름 제어하기 본문

DEV/Kotlin

Kotlin: 12 흐름 제어하기

F.R.I.D.A.Y. 2020. 4. 4. 23:08
반응형

 책에서는 <04-3 흐름의 중단과 반환> 영역입니다. 책은 람다식(Lambda expression), 인라인 함수(inline function) 등 구성에 대해서는 이미 나왔습니다. 프로그램을 처음 배운다면 람다식이나 인라인 함수 등은 솔직히 어려울 수 있습니다. 그래서 후순위로 미뤄두고 기본적인 문법 사항이 모두 포스트 된 다음에 글을 쓰려고 합니다. 그래서 return 키워드를 이용한 제어는 다른 포스트에서 후술 하겠습니다.


흐름 제어하기

 이전 시간에 반복문에 대해 알아봤습니다. 이 문단에서는 반복문의 흐름을 제어하는 방법을 알아볼 것입니다.

break

 코틀린에서는 break라는 키워드가 존재합니다. 먼저 break란 단어의 의미를 알아보겠습니다.

네이버 사전

 반복문이라는 흐름을 깨버리는 것이 break라고 생각할 수 있습니다. 실제로도 그렇게 이루어지니까요.

 

 

- 1부터 10까지 더하기 -

 

 다시 한번 1부터 10까지 더해보겠습니다.

fun main(args:Array<String>){
	var sum = 0

	for(i in 1..10){
		sum += i
	}

	println(sum)
}

 출력한 결과는 55가 될 것입니다. 그렇다면 이 코드에서 범위를 수정하지 않고 1부터 5까지만 더하도록 해보겠습니다.

if(i <= 5) sum += i

 i의 값이 5 이하일 때만 값을 더하도록 if문 분기를 하면 되겠죠. 그런데 이 경우에는 if문을 열 번 비교하게 됩니다. 범위를 수정하지 않았으니 무조건 루프가 10번 돌 테니까요. 이때 break를 이용할 수 있습니다.

fun main(args:Array<String>){
	var sum = 0

	for(i in 1..10){
		if(i > 5) break
		sum += i
	}

	println(sum)
}

 이렇게 하면 i의 값이 6이 되었을 때 if문 판별이 참이 되어 break 키워드가 수행되고 for 반복문을 탈출하게 됩니다.

continue

 컨티뉴(continue) 키워드는 break와 달리 반복 구간을 완전히 끝내지 않고 해당 회차를 넘어가는 대신 다음 회차는 그대로 진행하도록 하는 키워드입니다.

 다시, 1부터 10 중에 홀수만 출력하는 프로그램이 있다고 해봅니다.

fun main(args:Array<String>){
	for(i in 1..10){
		if(i % 2 == 1) println(i)
	}
}

 이 코드는 아래처럼 변형할 수 있습니다.

fun main(args:Array<String>){
	for(i in 1..10){
		if(i % 2 == 0) continue
		println(i)
	}
}

continue로 작성한 코드의 결과


라벨 사용하기

 라벨이라는 문법도 있습니다. 이 문법은 break, continue, return 키워드와 함께 사용합니다.

선언

 라벨의 선언은 반복문 for 앞에서 사용할 수 있습니다.

first@ for(i in 1..10){
	second@ for(k in 1..10){
    	if(i == k) continue@second
        println("$i * $k = ${i * k}")
    }
}

for 키워드 앞에 선언된 라벨

 라벨은 꼭 라벨명 뒤에 at(@) 기호를 붙여서 써주어야 합니다.

사용

 설명을 위해 작성한 위 코드는 반복문이 여러 겹으로 겹쳐진 다중 반복문입니다. 각 반복문 앞에 first@와 second@ 라벨이 붙어있음을 알 수 있습니다. continue나 break를 이용하면 해당 영역으로 이동할 수 있습니다. 만일 위 코드의 continue@second가 continue@first 로 변경되었다면 i와 k의 값이 같을 경우 다음 i로 넘어갈 것입니다. 즉, 아래와 같이 출력이 되겠지요.

이전(continue@second) 변경(continue@first)
1 * 2 = 2 2 * 1 = 2
1 * 3 = 3 3 * 1 = 3
... 3 * 2 = 6
5 * 4 = 20 4 * 1 = 4
5 * 6 = 30 4 * 2 = 8
5 * 7 = 35 4 * 3 = 12
... ...

 

 간혹, 다중 반복문을 통해 특정 값을 검색하는 경우가 있습니다. 이 경우 특정 값을 찾았다면 이후 검색을 필요가 없겠죠. 그럴 때 break@label을 통해 검색을 위한 다중 반복문 자체를 탈출할 수 있습니다.


Next.

 

Kotlin: 13 예외 처리

우리가 살면서 목돈을 마련하는 이유는 무엇일까요? 미래를 예측할 수 없기 때문에. 즉, 만일의 상황이 발생했을 때 이를 대비하기 위해 목돈을 마련해둡니다. 프로그램에서도 이렇게 목돈과 같은 문법이 존재합..

pang2h.tistory.com

# index

728x90
반응형

'DEV > Kotlin' 카테고리의 다른 글

Kotlin: 14 인라인 함수와 익명 함수  (0) 2020.04.06
Kotlin: 13 예외 처리  (1) 2020.04.05
Kotlin: 11 반복문-while, do-while  (0) 2020.04.03
Kotlin: 10 반복문-for  (0) 2020.04.03
Kotlin: 09 분기 제어-when  (0) 2020.04.02
Comments