Kotlin에서 반복문은 for 또는 while을 사용하여 구현할 수 있습니다.

for와 while 사용법에 대해 이야기 하기전에 Kotlin에서 제공하는 Ranges의 개념을 이해할 필요가 있습니다.

Ranges

Ranges 반복문에서 몇번을 반복할 것인지에 대한 구현입니다.

// 시작 숫자, 마지막 숫자 포함
1..5 // 1,2,3,4,5
1.rangeTo(5) // 1,2,3,4,5

// 마지막 숫자 포함하지 않음
1..<5 // 1,2,3,4
1 until 5 // 1,2,3,4
1.rangeUntil(5) // 1,2,3,4

// 역으로 반복
(1..5).reversed() //5,4,3,2,1
5 downTo 1 // 5,4,3,2,1

// step를 사용하여 임의의 단계로 숫자를 반복 
0..10 step 2 // 0,2,4,6,8,10
0.rangeTo(10) step 2 // 0,2,4,6,8
0 until 10 // 0,2,4,6,8
0.rangeUntil(10) step 2 //0,2,4,6,8
10 downTo 0 sten 2 // 10,8,6,4,2,0

// char에도 동일하게 적용 가능
tempChar in 'a' until 'f' step 2 //a,c,e

 

Loops

Kotlin에서는 반복 구조를 구현하기 위해 for와 while을 사용할 수 있습니다.

Rages를 사용하여 범위 값안에서 반복하여 작업을 해야하는 경우는 for를 사용하고,

특정 조건이 충족될 때까지 작업을 계속하려면 while를 사용합니다.

 

for

for 반복 구문을 사용해서 구구단 프로그램을 만들어 보겠습니다.

fun main() {
    println("몇단을 외워볼까요?")
    
    // readln()은 입력값을 String으로 반환
    // 계산을 위해 Int로 분석
    val level = readln().toInt
    
    println("$level 단을 외워보겠습니다.")
    
    // 결과 값을 저장할 변수 생성
    var result = 0
    // 1에서 9까지(9포함) for문 구현
    for(num in 1..9) {
    	result = level*num
    	println("$level X $num = $result")
    }
}

실행 결과

 

for 구문의 반복 지정을 위해서 range를 사용하는 방법을 알아보았습니다.

사실 for 구문의 반복 지정은 range를 통해서만 가능한 것은 아닙니다.

Kotlin 공식 문서에 따르면 'iterator(반복자)를 제공하는 어떤 것이던 for 반복문에서 사용할수 있다.' 라고 언급하고 있습니다.

무슨 이야기 인지 예제로 알아보겠습니다.

fun main() {
    // Array 선언
    val array = arrayOf("apple","banana","cherry")

    // iterator는 array의 element 순서대로 반복하는 iterator를 반환 
    for (value in array.iterator())
        print("$value ")
    //apple banana cherry

    // indices는 array의 유효한 인덱스 범위를 반환
    for (index in array.indices)
        print("${array[index]} ")
    //apple banana cherry
    
    // array의 각 element를 index와 element 자체를 포함하는
    // IndexedValue로 래핑하여 Lazy Iterable 반환
    for ((index, value) in array.withIndex())
        println("$index:$value ")
    //0:apple 1:banana 2:cherry 
}

 

while

while 과 do-while 반복 구문이 있습니다. 두 구문은 특정 조건(혹은 상태)가 만족하는 한 { }안의 내용을 연속적으로 반복한다는 것은 같으나 특정 조건(혹은 상태)를 확인하는 시점이 다릅니다.

 

특정 조건(혹은 상태) 확인 시점

while 반복문은 조건을 먼저 확인하고 조건이 맞으면 { }안의 내용을 실행

do-while 반복문은 먼저 실행하고 그 다음 조건을 확인. 따라서 조건과 상관없이 먼저 한번은 실행됩니다.

fun main() {
    var x = 5
    
    // x가 0보다 크면 반복 실행합니다.
    while (x > 0) {
        println("x는 ${x}입니다.")
        x--
    }
    println("do-while 반복문 실행전 x는 ${x}입니다.")
    
    //먼저 실행한 후 x가 0보다 큰지 확인합니다.
    do {
        println("x는 ${x}입니다.")
        x--
    } while (x > 0)
}

위 예제에 대한 결과는 아래와 같습니다.

do-while문 x가 0보다 크지 않아도 실행 됨

결과에서 본것처럼 do-while문 실행전에 x의 값은 0이었습니다. do-while문은 구문을 먼저 실행하고 조건을 확인하기 때문에 먼저 {} 안의 프린트 문을 실행하였고 그 후에 x가 0보다 큰수가 아니기 때문에 반복문을 종료하였습니다.

 

 

 

+ Recent posts