Kotlin에서 조건문 (if, else, when)

안녕하세요! 오늘은 코틀린의 매력에 퐁당 빠져볼 시간이에요. 바로 코틀린의 조건문, if, else, when에 대해 알아보려고 해요! 마치 요리 레시피처럼, 조건문은 프로그램의 흐름을 맛깔나게 만들어주는 중요한 재료랍니다. 궁금하시죠? 어떤 상황에서 어떤 조건문을 사용해야 하는지, 저와 함께 차근차근 알아가 보도록 해요. ‘조건문의 기본 구조’부터 시작해서 ‘if-else 문 활용하기’, ‘when 표현식으로 다양한 조건 처리’까지, 그리고 마지막에는 ‘실제 활용 예시‘를 통해 여러분의 이해를 도와드릴 거예요. 자, 그럼 코틀린 조건문의 세계로 함께 떠나볼까요?

 

 

조건문의 기본 구조

코틀린에서 조건문은 프로그램의 흐름을 제어하는 아주 중요한 역할을 해요. 마치 기차가 여러 갈래 길에서 어떤 길로 갈지 정하는 것과 같죠! 코틀린에서는 if, else, 그리고 when이라는 세 가지 강력한 도구를 제공하는데, 이 친구들을 잘 활용하면 코드를 훨씬 읽기 쉽고 효율적으로 만들 수 있답니다. 자, 그럼 이 친구들의 기본 구조를 하나씩 살펴볼까요? 😊

if 문

먼저 if 문은 조건에 따라 특정 코드 블록을 실행할지 말지를 결정하는 가장 기본적인 조건문이에요. 마치 “만약 ~라면 ~해”라고 말하는 것과 같죠. if 문 뒤에 괄호 () 안에 조건식을 넣고, 조건식이 참(true)이면 중괄호 {} 안의 코드가 실행돼요. 만약 조건식이 거짓(false)이면 if 블록은 건너뛰고 다음 코드로 넘어가죠. 참 쉽죠? 🤔

if-else 문

if 문만으로는 조건이 거짓일 때 다른 코드를 실행할 수 없어서 아쉬울 때가 있죠? 그럴 때는 else를 사용하면 돼요! if 문 뒤에 else를 붙이고 중괄호 {} 안에 코드를 넣으면, if 조건이 거짓일 때 else 블록 안의 코드가 실행된답니다. 마치 “만약 ~라면 ~하고, 아니라면 ~해”라고 말하는 것과 같아요. if-else 구조를 사용하면 두 가지 경우에 대해 각각 다른 코드를 실행할 수 있어서 정말 편리해요! 👍

else if 문

자, 이제 조금 더 복잡한 상황을 생각해 볼까요? 만약 여러 개의 조건을 확인해야 한다면 어떻게 해야 할까요? 물론 if-else를 여러 번 중첩해서 사용할 수도 있지만, 코드가 길어지고 복잡해져서 읽기 어려워질 수 있어요. 😫 이럴 때 else if가 등장합니다! ifelse 사이에 else if를 넣고 조건식을 추가하면 여러 개의 조건을 순차적으로 확인할 수 있어요. 마치 여러 갈래 길에서 각 길에 대한 조건을 하나씩 확인하는 것과 같죠. 하지만 조건이 많아지면 else if도 코드를 복잡하게 만들 수 있다는 단점이 있어요.

when 표현식

그래서 코틀린은 더욱 강력하고 간결한 when 표현식을 제공해요! 🎉 when은 마치 여러 갈래 길에서 각 길에 대한 조건을 한눈에 보고 선택하는 것과 같아요. when 뒤에 괄호 () 안에 값을 넣고, 각 조건에 해당하는 코드를 -> 기호를 사용하여 작성하면 돼요. whenif-else if보다 훨씬 간결하고 읽기 쉬워서 복잡한 조건을 처리할 때 특히 유용해요. 게다가 when은 값을 반환할 수도 있어서 더욱 다양하게 활용할 수 있답니다. when 표현식은 코틀린의 강력한 기능 중 하나이니 꼭 잘 알아두세요! 😉

코틀린의 조건문은 프로그램의 흐름을 제어하는 데 필수적인 요소예요. if, else, when을 적절히 활용하면 코드를 훨씬 간결하고 효율적으로 만들 수 있답니다. 이 친구들의 기본 구조를 잘 이해하고 활용하면 코틀린 프로그래밍 실력이 쑥쑥 향상될 거예요! 다음에는 이 조건문들을 실제로 어떻게 활용하는지 더 자세히 알아보도록 할게요! 😄

조건문 예시

자, 그럼 예시를 통해 조금 더 자세히 살펴볼까요? 만약 사용자의 나이가 18세 이상이면 “성인입니다”라는 메시지를 출력하고, 18세 미만이면 “미성년자입니다”라는 메시지를 출력하는 코드를 작성해 보겠습니다.

val age = 20

if (age >= 18) {
    println("성인입니다")
} else {
    println("미성년자입니다")
}

이 코드에서는 age 변수에 사용자의 나이를 저장하고, if 문을 사용하여 나이가 18세 이상인지 확인하고 있어요. 만약 age가 18 이상이면 if 블록 안의 println("성인입니다")가 실행되고, 18 미만이면 else 블록 안의 println("미성년자입니다")가 실행되죠. 참 간단하죠? 😊

when 표현식 예시

이제 when 표현식을 사용하여 같은 기능을 하는 코드를 작성해 보겠습니다.

val age = 20

when {
    age >= 18 -> println("성인입니다")
    else -> println("미성년자입니다")
}

when 표현식을 사용하면 코드가 더 간결해지는 것을 볼 수 있어요. when 뒤에 중괄호 {} 안에 조건과 실행할 코드를 -> 기호로 연결하여 작성하면 된답니다. else는 다른 모든 조건에 해당하지 않을 때 실행될 코드를 지정하는 데 사용돼요. when 표현식은 여러 조건을 처리할 때 특히 유용하니 꼭 기억해 두세요! 😉

Kotlin에서는 조건문을 다양한 방식으로 활용할 수 있으니, 여러 가지 예시를 통해 연습해 보면서 자신에게 가장 잘 맞는 방법을 찾아보는 것도 좋을 것 같아요! 😊

 

if-else 문 활용하기

Kotlin에서 조건문을 이야기할 때 if-else 문을 빼놓을 수는 없겠죠? 마치 짬뽕과 짜장면처럼, 김치찌개와 된장찌개처럼 말이에요! 😄 if-else 문은 프로그램의 흐름을 제어하는 아주 기본적이면서도 강력한 도구랍니다. 마치 요리 레시피에서 ‘재료가 A면 B를 넣고, 아니라면 C를 넣으세요’와 같은 역할을 한다고 생각하면 쉬워요!

자, 그럼 본격적으로 if-else 문의 활용법을 파헤쳐 볼까요? Kotlin의 if-else 문은 Java와 유사한 구조를 가지고 있지만, 훨씬 더 간결하고 표현력이 풍부하답니다. 마치 경쾌한 왈츠를 추는 것처럼 말이죠!

기본적인 if-else 문

먼저, 기본적인 if-else 문의 구조를 살펴보겠습니다. 조건식이 참(true)이면 if 블록 안의 코드가 실행되고, 거짓(false)이면 else 블록 안의 코드가 실행되는 아주 직관적인 구조예요. 예를 들어, 사용자의 나이가 18세 이상인지 확인하는 코드를 작성한다면 다음과 같이 할 수 있어요.

val age = 20

if (age >= 18) {
    println("성인입니다!")
} else {
    println("미성년자입니다!")
}

참 쉽죠? 마치 레고 블록을 조립하는 것처럼 간단하게 조건에 따라 다른 코드를 실행할 수 있답니다.

if-else 표현식

여기서 잠깐! Kotlin에서는 if-else 문을 표현식으로 사용할 수 있다는 놀라운 사실! 알고 계셨나요? 즉, if-else 문 자체가 값을 반환할 수 있다는 뜻이에요. 이 기능을 활용하면 코드를 훨씬 더 간결하고 우아하게 작성할 수 있답니다. 예를 들어, 두 수 중 큰 수를 찾는 코드를 작성해 볼까요?

val num1 = 10
val num2 = 20

val max = if (num1 > num2) num1 else num2

println("두 수 중 큰 수는 $max 입니다.")

보이시나요? if-else 문이 마치 변수에 값을 할당하는 것처럼 사용되었죠? 정말 신기하지 않나요?! 🤩 이처럼 Kotlin의 if-else 문은 단순한 조건 분기뿐만 아니라 값을 반환하는 표현식으로도 활용할 수 있어 코드의 가독성과 효율성을 높여준답니다.

else if 활용하기

더 나아가, 여러 개의 조건을 처리해야 할 때는 else if를 사용할 수 있어요. 마치 계단을 오르듯이 단계별로 조건을 검사하고, 해당하는 조건의 코드 블록을 실행하는 방식이에요. 예를 들어, 학점을 등급으로 변환하는 코드를 생각해 볼까요?

val score = 85

val grade = if (score >= 90) {
    "A"
} else if (score >= 80) {
    "B"
} else if (score >= 70) {
    "C"
} else if (score >= 60) {
    "D"
} else {
    "F"
}

println("당신의 학점은 $grade 입니다.")

이렇게 else if를 사용하면 여러 개의 조건을 효율적으로 처리할 수 있답니다. 마치 여러 갈래 길에서 올바른 길을 찾아가는 것처럼 말이죠!

하지만, 조건이 너무 많아지면 코드가 복잡해지고 가독성이 떨어질 수 있어요. 😫 이럴 때는 다음에 소개할 when 표현식을 사용하는 것이 더 효과적일 수 있답니다. when 표현식은 마치 마법 지팡이처럼 다양한 조건을 간결하고 우아하게 처리할 수 있도록 도와준답니다. ✨ 기대되시죠? 다음 섹션에서 자세히 알아보도록 해요! 😉

 

when 표현식으로 다양한 조건 처리

Kotlin의 꽃이라고도 할 수 있는 when 표현식! 드디어 만나보게 되었네요~ if-else 문으로 복잡하게 조건을 처리하던 시절은 이제 안녕!👋 훨씬 간결하고, 읽기 쉽고, 게다가 강력한 when 표현식의 세계로 여러분을 초대합니다!🎉

when 표현식은 마치 여러 갈래 길에서 어떤 길로 갈지 정하는 이정표 같아요. 주어진 값과 조건을 비교해서 일치하는 부분을 실행하는 거죠. if-else 문이 계단을 하나씩 밟아 올라가는 느낌이라면, when 표현식은 엘리베이터를 타고 슝~ 하고 원하는 층에 도착하는 느낌이랄까요? 훨씬 효율적이고 우아하죠? 😊

when 표현식의 기본 구조

자, 그럼 when 표현식의 기본적인 구조부터 살펴볼까요? 기본 형태는 다음과 같아요. 마치 시소처럼 균형을 맞춰놓은 모양이죠?


when (변수) {
    조건1 -> 실행할 코드1
    조건2 -> 실행할 코드2
    // ... 여러 개의 조건 추가 가능
    else -> 실행할 코드 // 조건에 맞는 것이 없을 때 실행
}

변수의 값이 조건1과 일치하면 실행할 코드1이 실행되고, 조건2와 일치하면 실행할 코드2가 실행되는 방식이에요. 마치 열쇠가 자물쇠에 딱 맞아야 문이 열리는 것처럼 말이죠! 🔑 만약 어떤 조건에도 맞지 않는다면? else 부분이 실행되는 거예요. else는 모든 조건을 다 확인하고 마지막에 실행되는 안전망 같은 역할을 한다고 생각하면 돼요.

다양한 조건 처리

when 표현식의 진정한 매력은 다양한 조건을 처리할 수 있다는 점이에요. 숫자, 문자열, 범위, 타입, 심지어는 컬렉션까지! 정말 놀랍지 않나요?! 🤩 예를 들어, 사용자의 입력값에 따라 다른 메시지를 출력하는 코드를 작성한다고 생각해 보세요. if-else 문을 사용하면 코드가 길어지고 복잡해지겠지만, when 표현식을 사용하면 훨씬 간결하게 표현할 수 있어요.


val input = readLine()!!.toInt() // 사용자 입력 받기

when (input) {
    1 -> println("1을 입력하셨네요!")
    2 -> println("2를 입력하셨군요!")
    in 3..5 -> println("3, 4, 5 중 하나를 입력하셨어요!") // 범위 지정!
    else -> println("잘못된 입력입니다.")
}

보이시나요? in 키워드를 사용해서 범위를 지정할 수도 있어요! 3부터 5까지의 숫자를 한 번에 처리할 수 있다니, 정말 편리하죠? 👍 이처럼 when 표현식은 다양한 조건을 처리하는 데 최적화되어 있어요. 마치 요리사가 다양한 재료로 맛있는 요리를 만드는 것처럼 말이죠! 👨‍🍳

타입 검사

더 나아가 when 표현식은 is 키워드를 사용하여 타입 검사도 가능해요. 객체의 타입에 따라 다른 동작을 수행해야 할 때 유용하게 활용할 수 있죠. 마치 카멜레온처럼 상황에 맞춰 변신하는 것 같아요! 🦎


fun checkType(obj: Any) {
    when (obj) {
        is String -> println("문자열입니다: $obj")
        is Int -> println("정수입니다: $obj")
        is Double -> println("실수입니다: $obj")
        else -> println("알 수 없는 타입입니다.")
    }
}

이 코드에서는 checkType 함수에 전달된 obj의 타입을 검사하고, 그에 맞는 메시지를 출력해요. String, Int, Double 타입 외의 다른 타입이 전달되면 “알 수 없는 타입입니다.”라는 메시지가 출력되는 거죠. 정말 똑똑하지 않나요? 🤔

when 표현식의 장점

when 표현식은 조건을 만족하는 첫 번째 분기만 실행하고 종료되기 때문에, 여러 조건이 중복될 경우에도 걱정할 필요가 없어요. 마치 경주에서 1등으로 들어온 선수만 메달을 받는 것과 같은 원리죠! 🥇

자, 이제 when 표현식의 강력함을 충분히 느끼셨나요? if-else 문보다 훨씬 간결하고, 읽기 쉽고, 다양한 조건을 처리할 수 있는 when 표현식! Kotlin 개발에서 없어서는 안 될 필수 요소라고 할 수 있어요. 이제 여러분도 when 표현식을 자유자재로 활용해서 더욱 효율적이고 우아한 코드를 작성해 보세요! 🚀

 

실제 활용 예시

자, 이제까지 Kotlin의 조건문인 if-elsewhen에 대해서 살펴봤어요. 개념은 어느 정도 잡히셨나요? 하지만 역시 코드는 눈으로만 보는 것보다 직접 활용해 봐야 제맛이죠! 그래서 준비했어요. 실제 프로젝트에서 사용할 법한 예시들을 통해 Kotlin 조건문 활용법을 더욱 깊이 있게 알아보도록 할게요~!

1. 로그인 시스템 구현

로그인 기능은 거의 모든 애플리케이션에서 필수적인 요소죠? Kotlin의 조건문을 사용하면 간결하고 효율적인 로그인 시스템을 구현할 수 있답니다. 예를 들어, 사용자의 입력 ID가 “admin”이고 비밀번호가 “password123″인 경우에만 로그인이 성공하는 시스템을 생각해 볼게요. 이를 Kotlin 코드로 표현하면 다음과 같아요.

fun login(id: String, password: String): Boolean {
    return if (id == "admin" && password == "password123") {
        println("로그인 성공!")
        true // 로그인 성공!
    } else {
        println("로그인 실패 ㅠㅠ")
        false // 로그인 실패!
    }
}

fun main() {
    val isLoggedIn = login("admin", "password123") // 로그인 성공! true 반환
    println("로그인 상태: $isLoggedIn") 

    val isLoggedIn2 = login("guest", "1234") // 로그인 실패! false 반환
    println("로그인 상태: $isLoggedIn2")
}

&& 연산자를 사용하여 ID와 비밀번호가 모두 일치하는 경우에만 로그인이 성공하도록 구현했어요. 만약 조건이 복잡해진다면? 걱정 마세요! else if를 활용하여 여러 조건을 추가할 수도 있답니다.

2. 게임 캐릭터 상태 판별

게임 개발에서 캐릭터의 상태(예: 체력, 마나)에 따라 다른 동작을 수행해야 하는 경우가 많죠. 이때 Kotlin의 when 표현식은 정말 유용해요! 캐릭터의 체력(HP)에 따라 “정상”, “주의”, “위험” 상태를 출력하는 코드를 살펴볼까요?

fun checkHPStatus(hp: Int): String {
    return when {
        hp > 80 -> "정상 (HP: $hp)"  // 체력 80 초과면 "정상"
        hp > 30 -> "주의 (HP: $hp)"  // 체력 30 초과면 "주의"
        else -> "위험 (HP: $hp)"    // 그 외에는 "위험"
    }
}

fun main() {
    println(checkHPStatus(95)) // 출력: 정상 (HP: 95)
    println(checkHPStatus(50)) // 출력: 주의 (HP: 50)
    println(checkHPStatus(15)) // 출력: 위험 (HP: 15)
}

when 표현식을 사용하면 코드가 훨씬 간결하고 읽기 쉬워지는 것을 확인할 수 있죠? 각 조건에 따라 다른 메시지를 출력하고, 현재 HP 값도 함께 보여주도록 만들었어요. 훨씬 직관적이지 않나요?

3. 할인율 계산 시스템

쇼핑몰이나 이커머스에서 자주 사용되는 할인율 계산에도 Kotlin의 조건문을 활용할 수 있어요. 구매 금액에 따라 다른 할인율을 적용하는 코드를 작성해 볼게요.

fun calculateDiscount(amount: Int): Double {
    return when (amount) {
        in 0..10000 -> 0.0    // 0~10,000원 구매 시 할인 없음
        in 10001..50000 -> 0.05  // 10,001~50,000원 구매 시 5% 할인
        in 50001..100000 -> 0.1  // 50,001~100,000원 구매 시 10% 할인
        else -> 0.15        // 100,001원 이상 구매 시 15% 할인
    }
}


fun main() {
    println("10,000원 구매 시 할인율: ${calculateDiscount(10000)}") // 출력: 0.0
    println("30,000원 구매 시 할인율: ${calculateDiscount(30000)}") // 출력: 0.05
    println("70,000원 구매 시 할인율: ${calculateDiscount(70000)}") // 출력: 0.1
    println("150,000원 구매 시 할인율: ${calculateDiscount(150000)}") // 출력: 0.15
}

in 연산자와 범위 표현식(..)을 함께 사용하여 구매 금액에 따른 할인율을 효율적으로 계산할 수 있어요. when 표현식은 다양한 조건을 처리하는 데 매우 유용하다는 것을 다시 한번 확인할 수 있죠?!

4. 날짜 및 시간 처리

날짜와 시간을 다루는 작업은 어떤 프로그래밍 언어에서든 복잡하게 느껴질 수 있어요. 하지만 Kotlin의 when 표현식을 사용하면 좀 더 쉽게 처리할 수 있답니다. 예를 들어, 현재 시간을 기준으로 아침, 점심, 저녁 인사를 출력하는 코드를 생각해 보세요.

import java.time.LocalDateTime
import java.time.LocalTime

fun greetByTime(): String {
    val now = LocalDateTime.now().toLocalTime()
    return when (now.hour) {
        in 6..11 -> "좋은 아침이에요!"
        in 12..17 -> "맛있는 점심 드셨나요?"
        in 18..22 -> "편안한 저녁 보내세요!"
        else -> "좋은 밤 되세요~!" // 또는 "잘 주무세요!"
    }
}

fun main() {
    println(greetByTime())
}

LocalDateTimeLocalTime 클래스를 활용하여 현재 시간을 가져오고, when 표현식으로 시간대에 맞는 인사말을 출력하도록 구현했어요. 이처럼 Kotlin의 조건문은 날짜 및 시간 처리와 관련된 다양한 로직을 구현하는 데에도 유용하게 활용될 수 있답니다! 더 복잡한 조건도 얼마든지 추가할 수 있다는 점, 잊지 마세요!

이 외에도 Kotlin의 조건문은 데이터 검증, UI 로직 처리, 알고리즘 구현 등 다양한 분야에서 활용될 수 있어요. 위에서 살펴본 예시들을 참고하여 여러분의 프로젝트에 적용해 보세요! Kotlin의 강력하고 유연한 조건문 활용법을 마스터하면 코드의 가독성과 효율성을 크게 향상시킬 수 있을 거예요! 화이팅!!

 

Kotlin의 조건문, 어떻게 활용하는지 이제 감이 좀 잡히셨나요? if-else부터 when까지, 조건에 따라 코드 흐름을 바꾸는 강력한 도구들을 살펴봤어요. 처음엔 조금 헷갈릴 수도 있지만, 연습하다 보면 여러분의 코딩 실력 향상에 엄청난 도움이 될 거예요. 마치 요리 레시피처럼 상황에 맞는 재료(조건)를 사용해서 원하는 맛(결과)을 내는 것과 같다고 할까요? 다양한 예시를 통해 조건문 활용법을 익히고, 여러분만의 멋진 Kotlin 코드를 만들어 보세요! 다음 포스팅에서는 더욱 흥미로운 주제로 찾아올게요. 기대해 주세요!

 

Leave a Comment