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보다 큰수가 아니기 때문에 반복문을 종료하였습니다.
'DEVELOPMENT > Kotlin' 카테고리의 다른 글
12. Kotlin, return, break, continue (0) | 2024.03.12 |
---|---|
10. Kotlin, Control flow - if, when (0) | 2024.03.03 |
9. Kotlin, Collections - List, Set, Map (0) | 2024.02.26 |
8. Kotlin, Basic Data Types - Arrays (0) | 2024.02.26 |
7. Kotlin, Basic Data Types - String (1) | 2024.02.26 |