엔지니어 규의 IT 프로그래밍 다이어리

[Kotlin]5. 반복문과 증감연산자 본문

프로그래밍 언어/코틀린

[Kotlin]5. 반복문과 증감연산자

엔지니어 규 2022. 5. 4. 00:40
728x90

조건문에는 조건형 반복문 과 범위형 반복문이 있다.

 

 

조건형 반복문 : 조건이 참인 경우 반복을 유지

범위형 반복문 : 반복 범위를 정해 반복을 수행

 

조건형 반복문 : While

1
2
3
4
5
6
fun main(){
    var a = 0
    while(a < 5 ){
        println(a++)
    }
}
cs

while (조건문) {

    실행문

}

위와 같은 형태로 만들며 조건문 이 참일때까지 실행문 이 계속 실행되고, 거짓이되면 반복문을 종료한다.

여기서 출력 값은 0,1,2,3,4 이다.

 

a++ 은 후위 증가 연산자이며, 화면에 출력된 후에야 증가 값이 반영된다.

 

1
2
3
4
5
6
fun main(){
    var a = 0
    while(a < 5 ){
        println(++a)
    }
}
cs

 

여기서 ++a 는 전위 증가 연산자이며, 해당구문내에서 증가 값을 즉시 반영한다.

 

따라서 출력값은 1,2,3,4,5 이다.

 

 

do...while문 : while에 의해 조건을 체크하여 반복한다는 점은 같지만,

               최초 한번은 조건없이 do 에서 구문을 실행후, while로 조건을 체크한다.

1
2
3
4
5
6
7
fun main(){
    var a = 0
    do
    {
        println(a++)
    } while(a>5)
}
cs

do 

{

    실행문

}while(조건문)

 

여기서 조건인 a>5 는 거짓이지만 최초한번 은 실행되어 출력 값은 0 이 나온다.

 

따라서 조건과 상관없이 반드시 한번은 실행되야 한다면 do while 구문을 사용하면 된다.

 

범위형 반복문 : For

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fun main(){
    for (i in 1..10){
        print(i)  //12345678910
    }
    for (j in 1..10 step 3){
        print(j) //14710
    }
 
    for (k in 9 downTo 0){
        print(k) //9876543210
    }
    for (l in 'a'..'e'){
        print(l) //abcde
    }
}
cs

for (범위){

     실행문

}

 

* 기본적으로 for 문은 값을 1 씩 증가시키며 반복하게 된다. 

* print는 println 과 달리 줄을 떼지않고 '붙여서' 출력할때 사용한다.

 

여기서 "i in 1..10" 은 1 부터 10까지 1씩 증가시키며 i 에 대입한다는 뜻이다.

i 에 1이 들어가면 아래쪽 print(i) 에 대입이되어 1 이출력되고, 다시 for(i in 1..10) 쪽으로 돌아가서 i 에 2를 대입하고

아래 코드인 print(i) 에서 2가 출력된다. 이런식으로 범위가 끝날때 까지 반복하게된다.

 

 

또한 1씩 증가하는 것이 아닌 특정 숫자만큼 증가를시키려면 "j in 1..10 step 3" 처럼 기존 형식 뒤에 step 을 붙여서 사용하면 된다. 

"i in 1..10" 에서는 step 을 안붙이더라도 기본적으로 step 1 이 구문에서 생략 되어 있어서 1씩 증가를 하는 셈이다.

 

 

또한 1씩 감소를 시키려면 "k in 9 downTo 0" 처럼 사용하면 된다.  감소 역시 뒤에 step 을 붙일 수 있다.

 

 

for 문은 (l in 'a'..'e')  처럼 char 자료형 에도 사용할 수 있다. 

 

 

 

 

 

증감연산자

 

증가 연산자 : ++a  , a++ 과 같이 사용하며, 변수의 값을 1 증가시키는 역할을 함

감소 연산자 : --a, a--  와 같이 사용하며, 변수의 값을 1 감소시킴

 

 

728x90
Comments