본문 바로가기
Programming/Kotlin

[Kotlin 뿌시기](5) 흐름제어

by 드가보자 2023. 12. 27.

 

이번에는 흐름제어문이다. 

 

흐름 제어(Flow Control) => 코드 실행의 순서나 흐름을 조절하는 메커니즘을 말한다.

대표적으로는 3가지 정도로 생각할 수 있는데

 

  1. 조건문(Conditional) 

    조건문은 특정 조건이 참 & 거짓일 때 다른 코드 블록을 실행하도록 한다. 대표적으로는 if~else문이 있다.

  2. 반복문(Loops) 

    반복문은 특정 조건이 True를 만족하는 동안 리스트, 배열 등 각 요소에 대해서 반복적으로 코드를 실행

  3. 함수 호출(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