
프로그래밍은 굉장히 많은 일을 할 수 있습니다.
계신기부터 자율 주행 시스템까지,
수많은 기술들이 그렇겠지만, 정보 기술의 등장 이래
프로그래밍은 현대 사회의 근간을 바꿔왔고, 바꿀 기술이라 생각합니다.
이런 프로그래밍을 활용해 할 수 있는 일 중 하나는 바로 반복적인 일을 처리하는 것이지요.
네 그렇습니다. 이번에 소개해 드릴 것은 코틀린의 반복문입니다.
1. for
C와 Java 처럼 코틀린에서도 for을 사용한 반복문이 있습니다. 하지만 구조는 조금 다릅니다.
<kotlin />
// Java
for(int i = 0; i<3; i++) {
System.out.println(i);
}
// 출력
0
1
2
// Kotlin
for(i in 0 until 3) { // 0 부터 3 미만까지 반복 (0~2)
println(i)
}
// 출력
0
1
2
처음 코틀린의 반복문을 봤을 땐, 자바와 파이썬을 합쳐놓은 듯한 느낌을 받았습니다.
for(i in a until b)와 같이 사용하면, a부터 b미만의 값을 i에 할당합니다.
물론, for(i in 0 .. 3)와 같이 사용하여 0이상 3이하의 값만큼 반복할 수도 있습니다.
1.1. 1부터 10까지의 합 구하기
<kotlin />
var sum = 0
for(i in 1 .. 10) {
sum += i
}
println(sum)
// 출력
>>> 55
반복문과 세트로 항상 같이 나오는 예시이죠. 1부터 10까지의 합 구하기 입니다.
1 .. 10 (혹은 1 until 11)으로 1부터 10까지의 범위를 돌며, sum에 값을 누적시켜 구할 수 있습니다.
1.2. for in arr
<kotlin />
val arr = arrayOf(3, 5, 7, 10)
for(i in arr) {
println(i)
}
// 출력
>> 3
5
7
10
=================================
val strings = listOf("Hello", "Kotlin", "World!")
for(str in strings) {
println(str)
}
// 출력
>> Hello
Kotlin
World!
배열 내 원소를 매개로 반복문을 돌릴 수도 있습니다.
자바의 확장 for문과 비슷한 느낌이네요.
저는 개인적으로 매우 자주 쓰고 있습니다.
1.3. arr.indics
<kotlin />
val arr = Array(3) { it }
for(i in arr.indices) {
println(arr[i])
}
// 출력
>> 0
1
2
indices는 Array 혹은 List의 프로퍼티 입니다. 해당 배열의 범위를 반환하는데요.
길이가 3인 배열의 경우 0 .. 2를 반환하며,
for(i in arr.indices)는 for(i in 0 .. 2)와 같다고 볼 수 있습니다.
1.4. 특정 간격을 두고 반복하기
<kotlin />
for(i in 0 until 10 step 2) { // 2 간격으로 반복
println(i)
}
// 출력
>> 0
2
4
6
8
step으로 간격을 지정하여 반복문을 돌릴 수도 있습니다.
1.5. 거꾸로 출력하기
<kotlin />
for(i in 5 downTo 0) {
println(i)
}
// 출력
>> 5
4
3
2
1
0
============================================================
for(i in 5 downTo 0 step 2) { // 2를 간격으로 5부터 0 까지 감소
println(i)
}
// 출력
>> 5
3
1
downTo를 사용해 감소하는 형태의 반복문을 만들 수도 있습니다.
2. while
<kotlin />
var n = 0
while(n < 5) {
println(n)
n++
}
// 출력
>> 0
1
2
3
4
===========================
while(true) {
println("Hello")
}
>> Hello
Hello
Hello
Hello
Hello
.
.
.
(무한 반복)
while문은 c, java와 사용법이 동일합니다.
while문은 소괄호 안의 조건문이 참인 동안 반복하는 반복문입니다.
첫 번째 프로그램의 경우, n이 증가하면서, n이 5가 되는 순간
while의 조건(n<5)를 만족시키지 못하기 때문에 반복을 중단합니다.
두 번째 프로그램의 경우, 반복문을 탈출할 수 있는 방법이 없기 때문에
프로그램을 임의로 종료시키지 않는 한 무한으로 반복됩니다.
3. do - while
<kotlin />
var a = 0
do {
println(a)
} while(a > 0)
// 출력
>> 0
=================================
do {
println("heeeeello")
} while(false)
// 출력
>> heeeeello
do - while문은 while의 조건문이 거짓이여도,
무조건 한 번은 실행되는 while문 입니다.
4. repeat
<kotlin />
repeat(5) { it ->
println(it)
}
// 출력
>> 0
1
2
3
4
repeat(n)은 n번 반복하는 반복문입니다.
매우 직관적이고, 짧고, 심플합니다.
저는 굉장히 애용중인 녀석입니다.
5. forEach
<kotlin />
val arr = arrayOf(1,3,6,1,23)
arr.forEach { it ->
println(it)
}
// 출력
>> 1
3
6
1
23
forEach는 함수형 프로그래밍의 일종입니다.
arr내 원소를 순차적으로 갖고 반복하는 형태입니다.
추후에 코틀린 람다식/함수형 프로그래밍 파트 혹은
코틀린 컬렉션 프레임워크 파트에서 한 번 더 다루게 될 것 같네요.
'코틀린 파헤치기 > 1부. 코틀린 기초' 카테고리의 다른 글
[코파기 1부] 11. 코틀린과 함수 (Function) (0) | 2023.03.15 |
---|---|
[코파기 1부] 10. 코틀린과 반복문 (2) : 흐름제어 - continue, break + 라벨링 (0) | 2023.03.15 |
[코파기 1부] 8. 코틀린과 리스트 (List) (0) | 2023.03.15 |
[코파기 1부] 7. 코틀린과 배열 (Array) (0) | 2023.03.14 |
[코파기 1부] 6. 코틀린과 null (.? !!. ?:) (0) | 2023.03.14 |