일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- doit코틀린프로그래밍
- Direct2D
- 문법
- tipssoft
- 리뷰
- 배열
- Visual Studio
- c
- c++
- CS
- 알고리즘
- 이지스퍼블리싱
- Tips프로그래밍강좌
- 백준
- Programming
- Tips강좌
- 김성엽
- 지식나눔강좌
- Win32
- 포인터
- VS ERROR
- 연산자
- Windows
- Javascript
- c#
- 함수
- Desktop
- 티스토리
- Kotlin
- 프로그래밍
- Yesterday
- Today
- Total
F.R.I.D.A.Y.
Kotlin: 12 흐름 제어하기 본문

책에서는 <04-3 흐름의 중단과 반환> 영역입니다. 책은 람다식(Lambda expression), 인라인 함수(inline function) 등 구성에 대해서는 이미 나왔습니다. 프로그램을 처음 배운다면 람다식이나 인라인 함수 등은 솔직히 어려울 수 있습니다. 그래서 후순위로 미뤄두고 기본적인 문법 사항이 모두 포스트 된 다음에 글을 쓰려고 합니다. 그래서 return 키워드를 이용한 제어는 다른 포스트에서 후술 하겠습니다.
Index
- 흐름 제어하기
- break
- continue
- 라벨 사용하기
- 선언
- 사용
- Next.
흐름 제어하기copy^
이전 시간에 반복문에 대해 알아봤습니다. 이 문단에서는 반복문의 흐름을 제어하는 방법을 알아볼 것입니다.
breakcopy^
코틀린에서는 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 반복문을 탈출하게 됩니다.
continuecopy^
컨티뉴(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)
}
}

라벨 사용하기copy^
라벨이라는 문법도 있습니다. 이 문법은 break, continue, return 키워드와 함께 사용합니다.
선언copy^
라벨의 선언은 반복문 for 앞에서 사용할 수 있습니다.
first@ for(i in 1..10){
second@ for(k in 1..10){
if(i == k) continue@second
println("$i * $k = ${i * k}")
}
}

라벨은 꼭 라벨명 뒤에 at(@) 기호를 붙여서 써주어야 합니다.
사용copy^
설명을 위해 작성한 위 코드는 반복문이 여러 겹으로 겹쳐진 다중 반복문입니다. 각 반복문 앞에 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.copy^
Kotlin: 13 예외 처리
우리가 살면서 목돈을 마련하는 이유는 무엇일까요? 미래를 예측할 수 없기 때문에. 즉, 만일의 상황이 발생했을 때 이를 대비하기 위해 목돈을 마련해둡니다. 프로그램에서도 이렇게 목돈과 같은 문법이 존재합..
pang2h.tistory.com
'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 |