Kotlin/Kotlin Language

[Kotlin] Loop : while / for / repeat

chattymin 2023. 1. 18. 16:52
728x90
반응형

코틀린에서의 반복은 크게 while, for, repeat가 있다.

상황에 맞는 함수를 선택할 수 있도록 각각 함수에 대한 특징을 정리해 보자.

 

while

while은 java와 완전히 동일한 형식으로 사용한다.

while(조건){
	실행할 내용
}

조건이 true일 경우 while문은 계속해서 반복을 하게 되고, 조건이 false가 될 경우 반복을 종료한다.

 

while의 경우 조건을 검사한 후 실행할 내용을 실행한다. 그렇기 때문에 처음 조건이 false일 경우, while문은 작동하지 않는다. 

우선 한번 실행하고, 조건을 검사하고자 한다면 do-while을 사용하면 된다. do-while 또한 java와 완전히 동일하다. 

do{
	실행할 내용
}while(조건)

 

 

for

kotlin에서의 for문은 in 연산자를 통해 실행된다. 

배열이 존재할 경우 해당 배열을 순차적으로 탐색할 수 있게 해준다. 

var arr = arrayOf(1,2,3)
for(counter: arr)
	println(counter)

counter는 프로그래머가 설정하는 것으로 카운터 라고 한다. 나는 여기에 counter라고 적어뒀지만, i를 해도 되고, a를 해도 된다.

arr이라는 array의 모든 요소를 처음부터 하나씩 순차적으로 탐색하는 코드다. 위의 코드를 실행시키면 아래와 같다.

1
2
3

 

for문은 배열 뿐만 아니라 내가 지정하는 횟수만큼 작동하는 것 또한 가능하다.

for(i in 1..10)
	println(i)

위와 같이 선언할 경우 1부터 10까지 반복한다.

결과는 아래와 같다.

1
2
3
4
5
6
7
8
9
10

 

그렇다면 for문은 순서대로 작동한다는 것은 알았다. 역순도 가능할까?

당연하다.

for(i in 10 downTo 1)
	println(i)

downTo라는 키워드를 사용하게 될 경우 왼쪽의 값부터 오른쪽의 값까지 값이 작아지면서 실행된다.

10
9
8
7
6
5
4
3
2
1

 

여기에는 숨겨진 인자가 하나 존재한다. 

올라가거나, 내려갈때 전부 1씩 감소하고 증가한다. 이것은 사실 step의 기본값이 1로 되어있기 때문이다.

사용자가 step의 값을 조정하게 될 경우, 증감되는 값의 크기가 변경된다.

for(i in 1..10 step 2)
	println(i)

이렇게 step을 2로 설정하게 될 경우, 2씩 증가하게 된다.

1
3
5
7
9

요렇게

 

 

repeat

repeat의 경우 내가 지정한 횟수만큼 반복할때 사용한다.

repeat(반복횟수){
    실행내용
}

반복 횟수만큼 실행내용을 반복한다. 

이때 it이라는 키워드를 사용하면 몇번째 반복인지 카운팅 할 수 있다.

repeat(10){
    println(it)
}

/*
결과 값
0
1
2
3
4
5
6
7
8
9
*/

 

그런데 repeat에는 치명적인 부분이 있다. 우리가 while이나, for문을 사용할 때 특정 조건을 만족하면 반복문을 종료시켜주는 break를 사용한다. 하지만 repeat에서는 break를 사용할 수 없다.

 

 

이러한 특성들로 인해서 각각의 반복하는 방법들은 상황에 맞춰 사용해줘야 한다.

 

while는 정해진 횟수가 없는 반복에 사용한다.

내가 원하는 값을 구하고자 하는데 몇 번 반복해야하는지 모를때는 원하는 결과가 나올때 까지 반복해야 한다. 

원하는 결과를 조건으로 적어두고 while문을 사용하면 된다.

 

for는 주로 배열을 순차적으로 탐색할때, 특정 횟수만큼 반복할때 주로 사용한다.

배열을 인자로 사용하게 될 경우 내부 값을 바로바로 확인하고 사용할 수 있기 때문에 배열 관련일때 for문을 주로 사용한다.

또한 특정 횟수만큼 반복하면서 해당 숫자를 활용할 때에도 주로 사용한다.

예를 들어서 for( i in 11 .. 20)을 진행하게 될 경우 반복하는 횟수는 10회 이지만, 11~20이라는 숫자를 매개변수로 사용할 수 있게 된다.

 

repeat은 단순 반복을 특정 횟수 진행할 때 사용된다. 

다른 기능은 딱히 없고 적혀있는 횟수만큼 반복하는 것이기 때문에 단순반복에 좋다.

 

 

위에 적어둔 사용상황은 내가 주로 저럴때 쓴다고 정리해둔 것이지 정답은 아니다. 

본인이 적절한 반복 방법을 찾아보고 사용한다면 좋은 코드를 만들 수 있을 것이다.

728x90
반응형