본문 바로가기

공부 자료/코틀린[Kotlin]

[Atomic 12] 루프와 범위 (feat. for문)

 

이번에는 for문을 이용한 반복
&&
범위를 나타내는 다양한 표현들

 

 

지난 블로깅 때 while을 이용한 반복문을 살펴보았었는데,

오늘은 for을 이용한 반복문, 그리고 for문에서 사용하는 범위에 대한 다양한 표현들에 대해서 알아볼 예정이다.

 

* for문의 경우 기본적인 내용이기 때문에 범위에 대한 표현들의 예시로 다룰 예정이기에 초점은 범위와 루프에 맞춰져 있다는 점 참고 필요

 

 


 

[ 범위를 나타내는 다양한 표현들 ]

1) ..

fun main(){
	for(i in 1..5){
    	print(i) // 출력 결과 : 12345
    }
    
    for(i in 'a'..'d'){
    	print(i) // 출력 결과 : abcd
    }
}

 

: 양 끝 값을 포함한 범위

ex) a..b =  a <= i< = b

 

 

2) until

fun main(){
 	for(i in 1 until 5){
    	print(i) // 출력 결과 : 1234
    }
    
    for(i in 'a'until'd'){
    	print(i) // 출력 결과 : abcd
    }
}

 

: until 다음에 오는 값을 제외한 범위

: 코틀린 1.8 이후 나온 ..< 연산자와 동일한 역할

ex) a until b = a <= i < b

 

 

3) downTo

fun main(){
 	for(i in 5 downTo 1){
    	print(i) // 출력 결과 : 54321
    }
    
    for(i in 'd'downTo'a'){
    	print(i) // 출력 결과 : dcba
    }
}

 

: 범위 역방향 이터레이션

: 감소하는 범위

ex) a downTo b =  b <= i <= a

 

4) step

fun main(){
 	for(i in 1..5 step 2){
    	print(i) // 출력 결과 : 135
    }

 	for(i in 1until5 step 2){
    	print(i) // 출력 결과 : 135
    }
    
    for(i in 'a'..'d' step 2){
    	print(i) // 출력 결과 : ac
    }
}

 

: 간격을 변경

: 기본적인 가격 1을 변경

 


 

숫자와 문자만 이터레이션이 되는걸까?

 

이터레이션은 정수, 문자처럼 하나하나 값이 구분되는 양에 대해서만 가능하다. 라고 명시되어 있다. 그럼 문자열은?

 

fun main(){
	for(i in 'Jnskhm '){
    	print(i+1) // 출력 결과 : Kotlin!
    }
}

 

문자열 또한 각괄호([])를 이용하면 각각의 문자에 접근할 수 있기 때문에 이터레이션으로 접급이 가능하다. 또한 그냥 문자열로 작성할 경우 각괄호가 없더라도 이터레이션을 직접 수행할 수 있다.

 

 


[ repeat() ]

 

fun main(){
	repeat(2){
    	println("hello! ") // 출력 결과 : hello! hello! 
    }
}

 

- repeat()

: 표준 라이브러리 함수로 함수

: 단순히 정해진 횟수만큼 반복하고 싶은 경우 for문이 아닌 repeat()함수를 사용

: 함수가 어떻게 만들어졌는지는 뒤 블로깅에서 다룰 예정

 

 


 

[ 오늘의 학습 소감 ]

 

지난 while에 이어 오늘 for문을 접할 것이라는 것을 알고 있었지만, 내용 자체는 for문 보다는 범위와 루프에 대한 내용에 초점이 맞추어져 있었기에 새로운 것들을 배울 수 있는 학습이었다. .., until부터 step까지 다양한 범위를 나타내는 방법을 알았고, 이가 for문에서 어떻게 사용이 되는지 알 수 있었다. in이라는 키워드는 아직 어떤 키워드인지 자세히 나오지 않아 대략적인 코드와 출력 결과를 통해 이해했지만 뒤쪽에서 다룰 것이라는 것을 알기에 오늘은 어떤 것인지 이해만 하고 넘어갔다. 새로운 것들이 나오는 학습이 시작되다보니 조금 더 흥미를 가지게 되는 것 같다!