프로그래밍 언어/코틀린

코틀린 9. 반복문

닉네임못짓는사람 2020. 12. 22. 21:02
반응형

이번 글에서는 코틀린에서 사용하는 반복문에 대해서 알아보도록 하겠습니다.

반복문


반복문은 조건문과 마찬가지로 프로그래밍에서 빼놓으면 안 되는 기본 문법 중 하나입니다.

반복문이란 말 그대로 어떠한 작업을 반복해서 수행하는 것을 이야기합니다.

 

예를 들어 여러분이 1~5까지 더하는 코드를 작성한다고 생각해봅시다.

fun main() {
    var a = 0
    a = 1 + 2 + 3 + 4 + 5
}

이 정도야 이런 간단한 코드만으로 쉽게 해결할 수 있을것입니다.

하지만, 1~5까지가 아닌 1~10000을 더해야 한다면 어떡할까요?

또는 단순한 덧셈이 아닌 복잡한 작업을 반복해야 한다면 어떡할까요?

 

이런 때 모든 코드를 일일이 써야 한다면 매우 지루하고 비효율적인 작업이 되어 능률이 현저히 떨어지겠죠.

때문에 사용하는 것이 반복문입니다. 반복문을 사용하면 이러한 작업들을 매우 쉽게 처리할 수 있습니다.

그럼, 코틀린에서 사용하는 반복문에는 어떤 것들이 있는지 알아볼까요?

 

코틀린에서는 기본적으로 for문과 while문이라는 두 가지의 반복문을 제공하고 있습니다.

보통 if문의 경우 일정한 범위를 정해 해당 범위만큼 작업을 반복하는 용도로 사용하며,

while문을 경우 특정한 조건식이 참일 경우 계속해서 작업을 반복하는 용도로 사용합니다.

for문


그러면, 먼저 for문에 대해서 알아봅시다.

for문은 위에서 말했던 대로 범위를 정하고 그 범위만큼 작업을 반복할 때 주로 사용하는 반복문입니다.

일단 코드를 통해서 for문의 형태를 확인해봅시다.

fun main() {
    for(i in 1..10){
	 println("${i}번째 반복입니다.")
    }
}

for문을 사용할 때에는 먼저 반복문 내에서 사용할 제어변수를 선언해야 합니다.

이 제어변수의 값이 정해진 범위 내에서 계속해서 증가 또는 감소하면서 반복문의 횟수를 조절합니다.

 

제어변수를 선언할 때에는 보통 변수 선언처럼 var을 사용하지 않아도 되며,

제어변수의 이름은 보통 i로 사용하고, 중첩해서 사용할 경우 순차적으로 j, k순으로 사용합니다.

 

제어변수를 선언했으면 in이라는 키워드와 함께 i의 범위를 지정해줍니다.

i in 1..10이라는 코드는 i라는 변수를 일단 1로 초기화한 뒤, 반복문을 한 번 수행할 때마다

i의 값을 1씩 증가시켜 i가 10이 될 때까지 작업을 수행하도록 만들어줍니다.

 

in의 증가 값은 기본적으로 1이며, 증가값을 변경하고 싶은 경우 step을 추가해주시면 됩니다.

fun main() {
    for(i in 1..10 step 2){
	 println("${i}번째 반복입니다.")
    }
}

이렇게 코드에 step 2를 추가하면, i는 1이 아닌 2씩 증가하게 됩니다.

 

i를 증가시키는 방법 말고 i를 높은 숫자로부터 감소시키고 싶다면 downTo를 사용하시면 됩니다.

fun main() {
    for(i in 10 downTo 1){
	 println(i)
    }
}

위와 같이 코드를 작성하면 i가 10으로 초기화된 뒤, 1까지 1씩 감소하면서 반복문을 수행합니다.

또한 downTo를 사용할 때도 step은 동일하게 사용할 수 있습니다.

while문


for문에 대해서 알아봤으니 다음은 while문에 대해서 알아보도록 합시다.

while문은 특정한 조건식이 참일 때, 정해진 코드를 계속해서 수행하는 반복문입니다.

코드로 한 번 확인해봅시다.

fun main() {
    var a = 10
    while(a > 5){
        println(a)
        a--
    }
}

위의 코드는 a가 5보다 클 경우 a의 값을 출력한 뒤, a에서 1을 빼는 반복문입니다.

여기서 a--는 증감연산자를 사용한 것인데, 아래에서 설명할 테니 일단 넘어갑시다.

 

이렇게 while문은 특정한 조건이 참일 경우 반복문을 계속해서 수행한다는 특징이 있습니다.

때문에 주의해야 할 점은 조건이 계속해서 참이면 언제까지고 반복문에서 빠져나오지 못한다는 점입니다.

 

while문의 경우 for문과 다르게 조금 변형된 형태의 문법을 따로 가지고 있습니다.

이는 do-while이라는 것인데, 어떤 것인지 한 번 알아봅시다.

do-while문


do-while문은 과연 어떤 문법일까요?

do : 하다 라는 뜻이 있는데, do-while문이니 일단 실행한 뒤, while문을 수행하는 문법입니다.

이게 무슨 듯이냐면, 보통 while문의 경우 조건식이 애초에 거짓이라면 코드를 단 한 번도 실행하지 않고 넘어가게 됩니다.

반면, do-while문의 경우 조건식이 거짓이더라도 처음 한 번은 무조건 반복문을 수행한다는 특징이 있습니다.

fun main() {
    var a = 10
    do{
        println("do-while문 실행")
    }while(a > 20)
}

위의 코드가 do-while문을 사용하는 예입니다.

do-while문에서는 do이하 중괄호 안에 실행할 코드들을 입력한 뒤,

중괄호 이후에 while키워드와 검사할 조건들을 설정하면, 다음 반복부터는 이 조건에 따라 반복문을 수행합니다.

 

while문의 조건은 a가 20보다 클 때 반복문을 수행한다는 조건입니다.

따라서 본래의 while문의 경우 a가 10이기 때문에 반복을 한 번도 수행하지 않고 해당 부분을 넘어가게 됩니다.

 

하지만 do-while의 경우 조건이 참인지 거짓인지 따지기 전에 일단 한 번 코드를 실행한 뒤,

다음 반복부터 조건을 검사한다는 독특한 형태를 가지고 있습니다.

때문에 특정 상황에서 do-while문은 유용하게 사용될 수 있으니 익혀두시면 도움이 될 겁니다.

증감 연산자


반복문에 대해서 알아봤으니 위에서 나왔던 증감연산자라는 것에 대해 알아봅시다.

증감 연산자란 말 그대로 값을 증가시키거나 감소시키는 연산자입니다.

특징은 값을 1만 증감시키며 속도가 빠르다는 특징이 있습니다.

 

증감연산자는 다음과 같이 분류됩니다.

1. 증가연산자(++) : 값을 1 증가시킵니다.

2. 감소연산자(--) : 값을 1 감소시킵니다.

그리고 여기서 다시 증감연산자의 독특한 특징이 또 하나 있습니다.

 

그것은 연산자를 변수 또는 데이터의 앞에 두냐, 뒤에 두느냐에 따라 동작이 다르게 수행된다는 점입니다.

연산자가 앞에 있으면 '전위연산자', 뒤에 있으면 '후위연산자' 라고 말합니다.

 

전위연산자의 경우 증감연산자가 실행되는 라인에서 '이미 증가된'값으로 연산을 수행합니다.

후위연산자의 경우 증감연산자가 실행되는 라인에서 '연산을 수행한 뒤'값을 증가시킵니다.

fun main() {
    var a = 10
    var b = 20
    print(a++)
    println(" " + b--)
    print(++a)
    println(" " + --b)
}

위의 코드를 천천히 살펴봅시다.

먼저, 변수 a와 b를 각각 10과 20으로 초기화했습니다.

그리고 후위연산자로 각각 1을 증감연산한 값을 print를사용해 출력해보았습니다.

그랬더니 a와 b의 값은 여전히 10과 20인 것을 확인할 수 있습니다.

 

위에서 말했던 대로 후위연산자는 변수를 사용한 뒤 값을 증가시키기 때문에

출력 시에는 값이 그대로지만 출력한 뒤에는 변수 a와 b에 값의 변동이 일어났을 것입니다.

 

다음으로 전위연산자를 사용해 데이터를 증감한 결과를 print를 사용해 출력해보았습니다.

그러자 a와 b가 각각 2씩 증감한 것을 볼 수 있습니다.

이는 이전에 후위연산자로 1씩 증감된 값이 저장된 상태에서, 전위연산자를 사용해 값을 증감시킨 후에 print에 사용했기 때문입니다.

 

이렇게 반복문과 증감연산자에 대해서 알아보았습니다.

이번 글은 이 정도로 마치도록 하겠습니다.

감사합니다.

 

반응형

'프로그래밍 언어 > 코틀린' 카테고리의 다른 글

코틀린 11. 입출력  (0) 2020.12.23
코틀린 10. 흐름제어  (0) 2020.12.23
코틀린 8. 조건문  (0) 2020.12.22
코틀린 7. Nullable변수  (0) 2020.12.21
코틀린 6. 함수  (0) 2020.12.21