코틀린(Kotlin) 제어문(for, if, when, while)

Notepad96

·

2020. 9. 17. 23:22

300x250

 

 

 

 

1. 조건문

1-1. If

if문 같은 경우 Java와 동일하다.

 

if문의 경우 if [~ else if ~ else] 의 구조를 갖는다.

 

단, 기존의 if문과 다르게 조건에 따른 결과를 변수에 저장할 수 있으며, 따라서 삼항연산자는 없다.

 

 

 

 

 

1-2. when

기존 다른 언어에서 사용하던 switch문과 유사하다.

 

단, 기존의 switch문과는 다르게 조건으로 일련의 범위를 주거나 조건을 여러 개 줄 수 있다.

 

따로 break를 해줄 필요는 없으며 if문처럼 조건의 따른 결과를 변수에 저장할 수 있다.

 

 

 



1-3. 예제

(직접 수정해보며 실행해볼 수 있다. 로드가 안된다면 새로고침 or play.kotlinlang.org/)

 

 

 

- 코틀린은 강제 형변환이 없기 때문에 Int형 a와 Long형 b가 동일한지 비교 시 형변환을 해주어야만 한다.

 

 

- if문의 결과를 변수에 저장할 시 맨 마지막 부분의 저장할 값을 입력하면 된다.

 

위 예제에서는 a > b 일 경우 max에는 10이 아닐경우 max에는 b가 저장된다.

 

 

- when에서는 8, 9, 10 처럼 ,를 사용함으로써 기존 switch문과 다르게 조건을 여러개 줄 수 있다.

 

 

- in 8..10 은 8이상 10이하의 범위를 뜻한다.

 

 

- !is Int 는 Int형이 아닐경우 참이므로 현재 a는 Int형이므로 실행되지 않는다.

 

 

 

 

 


2. 레이블(Label)

반복문과 조건문에서 흐름을 제어하기 위해서 사용하는 break와 continue와 같이 사용할 수 있다.

 

exit@ for(i in 1..4) {
       for(k in 1..4) {
           print("${i}${k} ")
           if(i == 2 && k == 2) break@exit
       }
       println()
   }

 

예를들어 위같은 2중 for문일 경우 안쪽 if문의 조건의 따라 break하면 본래는 안쪽 for문만 종료가되며 바깥 for문은 계속 반복한다.

 

하지만 위처럼 exit라는 label을 준 후 이를 break 시켜버린다면 label이 지정된 부분으로가서 흐름제어를 하게 된다.

 

 

 

 

 


3. 반복문

3-1. for


코틀린 for문의 형태를 Java와 비교해본다면 Java에서 향상된 for문이라고 불렀던 for each문과 유사하다.

 

 

값이 증가할 때는 in~..을 감소할 때는 in~downTo 를 사용한다.

 

 

step을 사용하여서 증가, 감소하는 숫자값을 지정해 줄 수 있다.

 

 

이 같은 구조를 통하여 코드량을 줄일 수 있다.

 

 

 

(직접 수정해보며 실행해볼 수 있다. 로드가 안된다면 새로고침 or play.kotlinlang.org/)

 

 

- 기본적으로 in~..으로 일정 범위를 for문으로 반복할 수 있다.

 

 

- 감소하는 for문일 경우 in~downTo를 사용해 주었다.

 

 

- 배열일 경우 직접 접근하여 값을 바로 가져올 수 있으며, 인덱스로 접근하고 싶다면 해당 예제처럼 0~size-1범위의 for문을 index의 범위를 반복하는 for문으로 만들면 된다.

 

 

- 위 예제에는 2개의 2중-for문이 있다.

 

결과를 보면 차이가 있는 것을 볼 수 있다.

 

 

첫번 째 2중-for문은 i==2 and k==2조건이 만족하여 break문이 실행되어 for문이 종료되었지만 종료된건 안쪽의 i=2일 경우의 for문이므로 i=3일 경우 i=4일 경우는 실행되었다.

 

 

하지만 2번 째 2중-for문은 label을 사용하여서 밖에 for문을 종료해 줌으로써 안쪽에서 바깥쪽의 for문을 종료한 것을 확인할 수 있다.

 

 

 

 

 

 

3-2. while, do~while

while

반복문으로서는 거의 for문이 사용된다.

 

하지만 반복 할 횟수가 정확하게 정해져 있지 않을 경우에 while문을 사용한다.

 

따라서 while을 사용해줌으로써 특정 조건이 만족하기 전까지 계속 반복 할 수 있지만 무한 루프에 빠지지 않도록 조심해야 한다.

 

 

 

do~while

while문과 전체적인 특성은 다 같다.

 

단, 조건 검사 이전에 실행문을 먼저 실행함으로써 조건의 참/거짓의 상관없이 맨 처음은 무조건 실행되는 구조이다.

 

조건의 상관없이 한번은 무조건 실행해야 할 경우 사용해 주면 된다.

 

 

 

 

 

(직접 수정해보며 실행해볼 수 있다. 로드가 안된다면 새로고침 or play.kotlinlang.org/)

 

 

 

 

 


4. 참 조

 

 

Control Flow: if, when, for, while - Kotlin Programming Language

 

kotlinlang.org

 

 

 

 

300x250