이번에는 흐름제어문이다.
흐름 제어(Flow Control) => 코드 실행의 순서나 흐름을 조절하는 메커니즘을 말한다.
대표적으로는 3가지 정도로 생각할 수 있는데
- 조건문(Conditional)
조건문은 특정 조건이 참 & 거짓일 때 다른 코드 블록을 실행하도록 한다. 대표적으로는 if~else문이 있다. - 반복문(Loops)
반복문은 특정 조건이 True를 만족하는 동안 리스트, 배열 등 각 요소에 대해서 반복적으로 코드를 실행 - 함수 호출(Function call)
메소드(Function)을 수행하는 부분인데, 코드가 아래로 잘 내려가다가 함수를 만나면 함수를 정의한 부분으로 넘어가서 코드를 실행하게 된다.
사실 주절주절 조건문이 뭔지 ? 반복문이 뭔지 함수 호출이 뭔지 글로 보는 것 보다는 그냥 코드로 보는게 짱이다 ㅋㅋㅋㅋㅋㅋㅋ 여기서는 조건문 부분만 우선 보겠다.
조건문 if ~ else
기본적인 틀, 형식은 아래랑 같다.
* if (만약에)
- 만약에 ~이라면 A를 해라
if (A) / else if (B)
- 만약에 A 이라면 A1를 하고 만약에 B라면 B1을 해라
if (A) / else if (B) / else
- 만약에 A 이라면 A1를 하고 만약에 B라면 B1을 그리고 나머지 경우에는 C를 해라
- if 문법
if (조건){ 조건 -> 숫자 5라면
동작1
}else if(조건){ -> 숫자 10이라면
동작2
}else if(조건){ -> 숫자 20이라면
동작3
}else { -> 5,10,20 셋 다 아닌 경우
동작4
}
if , else if에 들어가는 조건 식은 True or False로 값이 나타날 수 있는 Boolean 형태여야 한다.
if 뒤에 조건이 참이라면 if 문 뒤에 있는 Code를 , if else 뒤의 조건이 참이라면 해당 Code를
전부 아니라면 else 뒤에 있는 code를 실행하게 되는 것이다. 별 거 없다 형식은, 코드로 보자
val number1: Int = 30
if (number1 == 10) { // 조건식은 무조건 true또는 false로 결과가 나와야한다
// 위 조건을 만족하는 경우 10이라는 문구 출력
println("10인디?")
} else if (number1 == 20) {
// 위 조건을 만족하는 경우 10이라는 문구 출력
println("20인디?")
} else {
println("10,20 둘다 아닌뒤?!!")
}
if (number1 == 10) println("10입니다")
else if (number1 == 30) println("30입니다")
else if (number1 == 50) println("50입니다")
else println("10,20 둘다 아닙니다")
val number2: Int = 10 + 20 // =을 기존으로 오른쪽에는 값이 오면된다 -> 식이 와도 된다
val number3: Int = if (number2 > 30) 40 else 50
// if (number2 > 30) 40 else 50 -> 50
println(number3)
number1 은 30으로 10도 아니고 20도 아니기 때문에 첫 번째 if ~ else 문에서는 if에도 else if에도 걸리지 않는다.=>False
그래서 else 뒤에 있는 Code가 실행 되는 것이고, [10,20 둘 다 아니라는 문구] 가 출력될 것이다.
두 번째 else if 문 처럼 코드 내용이 간결하다면 oneline으로 표현해도 상관없다.
여기서 else if 문의 줄이 여러 줄 가량 되는데, 코드를 실행하면 조건에 맞는 Code 한 줄 만 딱 실행되는 것이다.
=> 이런 부분에서 흐름 제어라고 본다.
조건문 When
나는 When이라는거는 처음본다 ㅋㅋㅋㅋ 근데 알아보니 그냥 c에서 사용하는 Switch ~ Case 구문이다.
when (조건을 검사할 값){
case1 -> function1 실행
case2 -> function2 실행
else -> function3 실행
}
위와 같은 형식으로 when 구문을 만들면 된다.
val number4: Int = 5
when (number4) {
5 -> {
println("5 입니다")
}
6 -> {
println("6입니다")
}
else -> {
println("모르겠습니다")
}
}
when (number4) {
5 -> println("5입니다")
6 -> println("6입니다")
else -> println("모르겠습니다")
}
when (number4) {
4 -> println("number is 4")
"안녕하세요" -> println("hello")
is Boolean -> println("boolean")
}
when (number4) {
in 1..10 -> println("number is in 1..10") // number4 in 1..10 -> Boolean
in 20..30 -> println("number is in 1..10")
in 40..60 -> println("number is in 1..10")
}
number4 = 5를 만들고, number4의 값을 when 조건문 안에 넣은 뒤
case를 만들어준다. 해당하는 값이 5라면 -> println("5입니다.") 실행
해당하는 값이 6라면 -> println("6입니다.") 실행 , 아니라면 "모르겠습니다" 실행
여기서 number4는 Int이지만 when 조건문 내부에는 다양한 자료형을 case로 제시할 수 있는데
문자열도 가능하고 Boolean인지 check 하는 것도 가능하다.
is 연산자는 Type을 체크해주는 것이고, in 연산자는 값이 특정 범위에 속하는지 체크해주는 것인데 추후에 다룰 내용에 포함되어있으니 나중에 포스팅 하겠다.
감사합니다 : )
'Programming > Kotlin' 카테고리의 다른 글
[Kotlin 뿌시기](4) 메소드 (1) | 2023.12.27 |
---|---|
[Kotlin 뿌시기](3) 연산자 (1) | 2023.12.26 |
[Kotlin 뿌시기](2) Null (0) | 2023.12.24 |
[Kotlin 뿌시기] (1) 변수와 자료형 (2) | 2023.12.23 |