Kotlin (3) 반복문

오늘은 코틀린에서 사용되는 간단한 반복문들에 대해서 학습하려고 한다.

반복문은 대부분의 언어가 그러하듯, 틀은 비슷하지만 디테일이 조금씩 다르기에 비슷한 형식을 지녔더라도 굳이 다시 언급하고 지나가려고 한다.

이후에 나오는 코드들은 Kotlin Playground에서 직접 입력하고, 실행하며 학습하면 도움이 된다!

바로 본론으로 넘어가겠다.

Kotlin

☝ 반복문

1.1 For-In

Kotlin에서의 for문은 기본적으로 For (<item> in <items>)의 형태로 사용된다.

기본적인 for문 예시부터 확인하며 익혀보자.

Kotlin

fun main() {
	val items = listOf("sword","shield","armor","gloves","boots")
    for (item in items) {
        println("you got {$item} !!")
    }
}

Result

you got {sword} !!
you got {shield} !!
you got {armor} !!
you got {gloves} !!
you got {boots} !!

이런 식으로 items의 각 원소들을 item이라고 하는 이름으로 차례차례 반복문을 수행하게 된다.

물론, 아래처럼 사용하여 index 형식으로 사용할 수도 있다.

Kotlin

fun main() {
	val items = listOf("sword","shield","armor","gloves","boots")
    for (i in items.indices) {
        println("you got {${items[i]}} !!")
    }
}

Result

you got {sword} !!
you got {shield} !!
you got {armor} !!
you got {gloves} !!
you got {boots} !!

위의 예제는 전 예제와 같은 결과를 얻을 수 있지만, item이라는 이름으로 수행하는 경우가 아닌, 각각의 index를 참조하여 만들어낸 결과라는 점이 다르다.

1.2 Number Iteration

물론 인덱스를 이용하지 않더라도, 직접 range를 지정하여 for문을 사용 할 수도 있다.

Kotlin

fun main() {
	for (i in 0..5) {
        print("$i ")
    }
}

Result

0 1 2 3 4 5

이렇게 범위를 지정하여 사용하는 for문은 다른 언어들과는 가장 큰 차이점을 갖는다.

바로, 마지막 범위까지 포함하여 시행한다는 것이다.

python이였다면, for i in range(0,n)를 수행한다면 0,1,2…..n-1 에 대한 시행만 발생하지만, kotlin에서는 0,1,2…..n-1, n에 대한 결과를 얻을 수 있다는 큰 차이점이 존재한다.

만약, python처럼 n-1번째 시행까지에 대한 결과를 얻고 싶다면, 아래 예제처럼 코드를 작성하면 된다.

Kotlin

fun main() {
	for (i in 0..5-1) {
        print("$i ")
    }
    println(" << 0..4" )
    for (i in 0 until 5) {
        print("$i ")
    } 
    println(" << 0 until 5" )
}

Result

0 1 2 3 4  << 0..4
0 1 2 3 4  << 0 until 5

위의 2가지의 for문은 같은 결과를 갖는다.

until 키워드를 사용하여 for문을 작성하면, 다른 언어처럼 n-1번째 까지의 시행만이 기록된다.

1.3 downTo, step

위의 경우는 index가 증가하는 경우에 대한 for문에 대해 알아보았다.

그렇다면 반대로 감소하는 경우에 대해서는 어떻게 하면 될까?

for (i in n..0)으로 하면 될까?

아쉽게도 아니다. n이 시작부터 이미 0보다 크므로, for문이 시행되자마자 종료된다.

이때는 downTo를 이용하면 된다.

아래 예제를 참고하자.

Kotlin

fun main() {
    for (i in 5 downTo 0) {
        print("$i ")
    } 
    println(" << downTo" )
}

Result

5 4 3 2 1 0  << downTo

그렇다면 1이 아닌 n씩 증가/감소하도록 구성하기 위해서는 어떤 명령어를 사용해야할까?

step를 사용하면 간단히 해결할 수 있다.

step는 증가, 감소에 모두 사용할 수 있다.

Kotlin

fun main() {
    for (i in 10 downTo 0 step 2) {
        print("$i ")
    }
    println(" << downTo + step 2" )
    for (i in 0..10 step 2) {
        print("$i ")
    }
    println(" << step 2 ")
}

Result

10 8 6 4 2 0  << downTo + step 2
0 2 4 6 8 10  << step 2 

1.4 while

while, do-while문은 타 언어와 큰 차이점이 없다.

예시를 통해 간단히 짚고만 넘어가자.

Kotlin

fun main() {
	var whileNumber = 0
	while (whileNumber < 5) {
	    print("${whileNumber++} ")
	}
	println(" << while")
	
	var doWhileNumber = 0
	do{
	    print("${doWhileNumber++} ")
	} while (doWhileNumber < 5) 
	println(" << do-while")
}

Result

0 1 2 3 4  << while
0 1 2 3 4  << do-while

태그:

카테고리:

업데이트:

댓글남기기