프로그래밍 언어/코틀린

코틀린 10. 흐름제어

닉네임못짓는사람 2020. 12. 23. 03:24
반응형

 

이번 글에서는 코틀린의 흐름제어에 대해서 알아보도록 하겠습니다.

흐름제어


코틀린에서 흐름제어가 가능하도록 해주는 키워드는 return, continue, break이 있습니다.

return에 대해서는 함수를 설명할 때 이야기했었는데요.

함수 내에서 return을 만나면 프로그램은 뒤에 더 실행할 코드가 있든 없든 즉시 함수를 종료시킵니다.

 

그리고 return을 제외한 두 가지(continue, break)은 사실 반복문 내에서만 사용됩니다.

즉, 반복문의 흐름을 제어한다는 뜻이죠.

그럼 두 흐름제어문이 각각 어떤 역할을 하는지 알아봅시다.

continue


먼저 continue입니다.

continue에 대해 알아보기 전에 continue의 사전적 의미에 대해 생각해보고 어떤 역할을 하는지 한 번 생각해봅시다.

아시다시피 continue는 '계속하다'라는 뜻을 가지고 있습니다.

그렇다면 반복문에서 무언가 계속한다는 뜻일 것 같은데 어떤 의미일까요?

 

continue는 반복문 내에서 실행될 시 현재 실행 중인 반복을 종료하고 다음 반복으로 넘어가게 됩니다.

어떤 뜻인지 코드를 통해서 알아봅시다.

fun main() {
    for(i in 0..9){
	println("Hello")
        continue
        println("World!")
    }
}

위의 코드는 for문을 사용해 Hello와 World!라는 문자열을 총 10번 출력시키려고 하고 있습니다.

그런데, 두 문자열을 출력하는 코드 중간에 continue를 끼워 넣고 실행시켜보았습니다.

그랬더니 Hello문자열은 정상적으로 출력되지만, World라는 문자열은 단 한 개도 출력되지 않은 것을 볼 수 있습니다.

 

이렇듯이 반복문 내에서 continue를 실행시킬 경우 해당 반복을 즉시 종료하고 다음 반복으로 넘어가게 됩니다.

현재 반복을 종료하고 다음번 반복을 계속한다. 즉, 건너뛰기라고 할 수 있겠네요.

break


다음은 break에 대해서 알아봅시다.

마찬가지로 break의 사전적 의미를 생각해보면 깨다, 부수다 등의 의미가 있는데, 과연 어떤 기능을 할까요?

 

break은 반복문 내에서 실행될 경우 그 즉시 해당 반복문 자체를 종료시킵니다.

이는 continue처럼 여러 번의 반복 중에서 한 번의 반복만 넘기는 것이 아니고, 그 반복문 자체를 종료시킨다는 의미입니다.

코드를 통해 한 번 확인해봅시다.

fun main() {
    for(i in 0..9){
	println("Hello")
        break
        println("World!")
    }
}

방금 전 코드에서 continue를 break으로 바꾸기만 한 코드입니다.

실행 결과를 확인해보면 이번에는 Hello라는 문자열 단 하나만 출력된 것을 볼 수 있습니다.

이는 반복문의 첫 번째 반복에서 break을 실행시켰기 때문에 즉시 반복문을 종료시킨 것입니다.

 

이렇게 break과 continue를 사용하면 원하는 타이밍에 반복문의 흐름을 제어할 수가 있는데요.

코틀린에서는 이에 그치지 않고 더 편리한 기능을 제공하고 있습니다.

lable


그것은 바로 lable기능을 지원한다는 것입니다.

보통 흐름제어의 경우 다중반복문을 완전히 종료시키고 싶을 때

안쪽의 반복문을 종료시킨 뒤, 다시 조건을 검사해서 바깥쪽의 반복문도 break으로 종료시켜야 했습니다.

 

하지만 이 lable은 다중반복문에서 특정 반복문에 이름을 붙여 안쪽에 있는 반복문 실행에서도

바깥쪽에 있는 반복문을 종료시킬 수 있는 등, 특정한 반복문을 지정하여 종료시킬 수 있는 기능입니다.

fun main() {
    exam@for(i in 0..9){
	for(j in 0..9){
            println(j)
            if(j == 5)
            	break@exam
        }
    }
}

lable을 지정해주는 방법은 for문의 키워드 앞에 "lable이름@"을 붙여주시면 끝입니다.

그리고 continue또는 break문뒤에 @lable이름 과 같이 사용해 반복문을 지정하여 제어할 수 있습니다.

 

위의 코드에서는 본래 i가 0~9까지, j가 0~9까지 증가하는 총 100번의 반복의 수행했어야 합니다.

하지만 안쪽 반복문에서 j가 5가 되면 바깥쪽 반복문을 break하도록 설정했기 때문에 6번만 반복한 것을 볼 수 있습니다.

 

이러한 흐름제어를 적절하게 사용하면 프로그래머가 반복문을 더 유연하게 사용할 수 있을 것입니다.

이번 글은 이 정도로 마치도록 하겠습니다.

감사합니다.

반응형

'프로그래밍 언어 > 코틀린' 카테고리의 다른 글

코틀린 12. 클래스  (0) 2020.12.24
코틀린 11. 입출력  (0) 2020.12.23
코틀린 9. 반복문  (0) 2020.12.22
코틀린 8. 조건문  (0) 2020.12.22
코틀린 7. Nullable변수  (0) 2020.12.21