본문 바로가기
Computer Science/Kotlin

[Kotlin 기초] 코틀린 반복문 - for, until, downto, step, while

by sy.cho__ 2024. 5. 2.

 

오늘은 코틀린에서 반복문을 사용하는 방법에 대해 알아보겠습니다. 

반복문은 조건문과 더불어 모든 언어에서 가장 많이 사용하는 문법인것 같아요.

for문과 while문에 대해 알아볼게요!

 

1. for문


기본 사용법

기본적으로 for문을 사용하려면 반복문의 시작과 끝을 설정해야 하죠.

코틀린에서는 .. 라는 키워드를 사용해서 for문을 사용할 수 있습니다. 

 

fun main() {
    //for loop ..를 사용해 for loop 돌리기
    for(i in 0..3){
        println(i)
    }
}

 

i가 0부터 3까지 순환하면서 출력하는 예제입니다. 

실행결과를 보면 0부터 3까지 출력된 것을 확인할 수 있어요. 

기본 for문 실행결과

 

.. 를 사용하면 0부터 3까지 차례대로 반복문이 수행됩니다.

여기서 중요한건 0과 3이 포함된다는 거에요.

만약 마지막 값인 3을 포함하지 않고 loop를 실행하고 싶다면 until이라는 키워들 사용합니다. 

 

fun main() {
    // until을 사용하면 3 미만까지는 수행
    for(i in 0 until 3){
        println(i)
    }
}

 

until을 사용하면 3 이전까지만 수행되기 때문에 마지막 값을 포함하지 않고 로직이 실행됩니다.

for - until 실행결과

 

 

증가, 감소값을 다양하게 하여 for문 사용(step)

만약 1씩 증가하는게 아니라 2 혹은 10 단위로 증가해야 하는 경우도 있을땐 step이라는 키워드를 사용하면 됩니다.

기본적은 for문의 조건 뒤에 step 값 을 추가하면 됩니다. 

fun main() {
    // 만약 특정 값 단위로 증가시키고 싶다면
    // step 사용
    for (i in 0..6 step 2){
        println(i)
    }
}

 

실행결과를 확인해보면 2씩 증가하면서 반복문이 수행되는걸 확인할 수 있습니다. 

Java에 비해 문법이 정말 가독성이 좋아진 것 같아요. 

for - step 예시

 

값이 감소하는 for문 진행(downTo)

지금까지 예제는 인덱스가 순차적으로 증가했는데 반대로 감소하는 반복문이 필요할 때도 있을거에요. 

이때는 downTo라는 키워드를 사용하면 됩니다. 

fun main() {
    // 값은 감소하면서 loop를 사용하려면
    // down to 사용
    for (i in 3 downTo 1){
        println(i)
    }    
}

 

3부터 1까지 down하면서 반복문이 진행되는 예제입니다. 

실행결과를 보면 3부터 1까지 출력되는걸 볼 수 있어요.

 

만약 감소하는 단위를 바꾸고 싶다면? step을 뒤에 추가하면 됩니다. 

이렇게 여러 문법을 응용할 수 있어요. 

 

fun main() {
    // 값이 2씩 감소
    for (i in 3 downTo 1 step 2){
        println(i)
    }    
}

 

 

Array 배열을 활용한 for문

개발을 하다보면 배열에 있는 값을 순차적으로 순환할 필요가 꽤 많습니다. 

Array를 for문에 어떻게 사용하는지 한번 알아볼게요. 

fun main() {
   
    val numbers = arrayOf(1,2,3) // 배열 생성
    
    // Array를 사용한 loop
    for (i in numbers){
        println(i)
    }
    
}

 

우선 배열을 만들고 for 문의 in 뒤에 배열을 입력만 하면 됩니다.

그럼 배열에 있는 값을 순차적으로 탐색하게 될거에요. 간단하죠?

 

만약 값 뿐만 아니라 배열의 인덱스까지 같이 출력하고 싶다면 아래와 같이 사용할 수 있습니다. 

fun main() {
    // Array를 사용한 loop
    val numbers = arrayOf(1,2,3)
    for ((index,item) in numbers.withIndex()){
        println("index: $index, value: $item")
    }
}


/* 출력
index: 0, value: 1
index: 1, value: 2
index: 2, value: 3
*/

 

Array 배열을 거꾸로 탐색하는 for문(reverse)

배열뒤에 reversed함수를 추가하면 반대로 탐색하는 for문을 구현할 수 있습니다.

fun main() {
    // Array를 사용한 loop
    val numbers = arrayOf(1,2,3)
    for (i in numbers.reversed()){
        println(i)
    }
}


/* 출력
3
2
1
*/

 

 

 

While문

기본사용법

fun main() {   
    // While 
    // 조건을 확인하고 참이면 실행한 후 다시 조건을 확인
    var x = 5
    while(x > 0){
        println(x)
        x--
    }
}

/* 출력
5
4
3
2
1
*/

 

while문은 조건이 틀리지 않으면 무한히 실행될 수 있습니다. 이를 무한루프라고도 하는데요. 

이렇게되면 프로그램이 끝나지 않고 모든 자원을 점령하는 이슈가 발생할 수 있으니 while 탈출 조건에 대해 꼭 확인하시는게 좋습니다. 

 

do while 사용법

do while은 우선 처음엔 무조건 실행을 하고, 이후 부터 조건을 체크하는 로직입니다.

만약 아래 코드에서 while처럼 조건을 먼저 확인했다면 반복문 내부가 하나도 실행되지 않았을거에요

fun main() {   
    // do While
    var x :Int = 5
    var isFirst:Boolean = true
    
    do {
        if(isFirst){
            println("First")
            isFirst = false
        }
        println(x)
        x--
    } while(x > 0 && !isFirst)
}

/* 출력
First
5
4
3
2
1
*/

 

do while도 마찬가지로 탈출조건이 없다면 무한루프가 발생가능성이 있으니 항상 조심해야 합니다. 

 


 

오늘도 읽어주셔서 감사합니다 :)

반응형