들어가기 전에
프로그램의 흐름을 제어하기 위해 가장 기본적으로 조건에 따라 분기할 수 있도록 하는 것입니다. 여기서는 if문을 활용해 다양한 분기 방법을 학습니다.
핵심 키워드
- if ~ else
- else if
- in 연산자 .. 범위 연산자
학습하기
들어가기 전에
프로그램의 흐름을 제어하기 위해 가장 기본적으로 조건에 따라 분기할 수 있도록 하는 것입니다. 여기서는 if문을 활용해 다양한 분기 방법을 학습니다.
핵심 키워드
학습하기
if문과 if~else문
if는 주어진 조건이 참 혹은 거짓일 경우에 따라 실행하게 됩니다.
if (조건식) {
수행할 문장 // 조건식이 참인 경우에만 수행
} else {
수행할 문장 // 조건식이 거짓인 경우에 수행
}
수행할 문장이 한줄로 간단한 경우 중괄호를 없애고 다음과 같이 한줄에 구성할 수도 있습니다.
val max = if (a > b) a else b
else if문으로 조건문 중첩하기
여러 가지 조건을 적용하기 위해 이번에는 else if문을 이용하여 조건문을 중첩할 수 있습니다. else if는 필요한 만큼 조합할 수 있습니다만 너무 많으면 코드 읽기가 어려워집니다.
val number = 0
val result = if (number > 0)
"양수 값"
else if (number < 0)
"음수 값"
else
"0"
in 연산자와 범위 연산자로 조건식 간략하게 만들기
코틀린에서는 포함 여부 확인을 위한 in 연산자와 두 개의 점(..)으로 구성된 범위(range) 연산자를 제공합니다.
변수명 in 시작값..마지막값
시작값과 마지막값은 범위에 포함됩니다.
참고자료
http://www.yes24.com
생각해보세요.
코틀린은 변수 선언과 동시에 if문과 같은 판단문을 직접 할당하는 형태로 작성이 가능합니다. 경우에 따라서는 코드를 최적화 하기 위해서 판단문을 한줄에 구성하는 것도 가능하죠. 이와같이 다양한 모습으로 사용이 가능하기 때문에 코틀린은 아주 유연한 작성 문법을 구사할 수 있습니다. 기존에 여러분들이 알고 있는 판단문을 코틀린처럼 사용할 수 있을까 생각해 보세요.
comment
강의나온대로 하면 80이상 89.9이하로 하면 89.99 입력시 어느조건에도 속하지 않아서 f라고 나옵니다.
}else if (score >= 80 && score <90) { 이런식으로 작성해야 80이상 90미만으로 소숫점자리 모두포함이 됩니다.
in 범위연산자 적용시
} else if (score in 80.0..90.0) { 으로 90포함시켜도 윗조건에 if (score >= 90.0) { 가 있어서 그런지 윗조건에 부합하는지 부터 보기때문에 90입력시 b가 아니라 a로 출력이 됩니다
다중 분기 예시에서
double 값으로 89.99 로 입력하면 처리해줄 곳이 없겠네요?
>= 90으로 미리 처리 해주었으니
in 80..90 이 맞지 않을까 합니다.
파이썬도 비슷한 방식으로 가능합니다.
# python
larger = a if (a > b) else b
// Kotlin
larger = if(a > b) a else b
그냥 println("a $a")까지하면, println("max $max")가 max kotlin.Unit으로 나오네요...
왜 println("a $a") 하고 a를 따로 써야하나요?