1.  ν•¨μˆ˜  function

🐰  ν•¨μˆ˜λŠ” fun으둜 μ •μ˜ν•˜κ³  λ°˜ν™˜κ°’μ΄ μžˆλŠ” ν•¨μˆ˜λŠ” λ‚΄λΆ€μ—μ„œ return으둜 값을 λ°˜ν™˜
🐰  ν•¨μˆ˜λ₯Ό μ •μ˜ν•  λ•Œ μž…λ ₯값을 κΈ°μˆ ν•œ 것을 'νŒŒλΌλ―Έν„°'

    fun ν•¨μˆ˜μ΄λ¦„ (νŒŒλΌλ―Έν„° μ΄λ¦„ : νƒ€μž…) : λ°˜ν™˜νƒ€μž… {
        return κ°’
    }


  πŸ₯•  ν•¨μˆ˜μ˜ κ΄„ν˜Έ μ•ˆμ— μž…λ ₯λ˜λŠ” 'νŒŒλΌλ―Έν„° 이름 : νƒ€μž…'에 따라, ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ κ΄„ν˜Έ μ•ˆμ— 값을 λ„£μ–΄μ„œ μ „λ‹¬ν•˜λŠ”λ°
        이 λ•Œ μž…λ ₯λ˜λŠ” κ°’μ˜ νƒ€μž…μ€ ν•¨μˆ˜μ— μ •μ˜λœ νŒŒλΌλ―Έν„° νƒ€μž…κ³Ό λ™μΌν•˜κ²Œ μž…λ ₯ν•΄μ•Ό 함

 

1) ν•¨μˆ˜μ˜ μ •μ˜

 

 λ°˜ν™˜κ°’κ³Ό μž…λ ₯값이 μžˆλŠ” ν•¨μˆ˜μ˜ μ •μ˜


    ✏️  Int νƒ€μž…μ˜ xλΌλŠ” μž…λ ₯ νŒŒλΌλ―Έν„°λ₯Ό κ°–λŠ” ν•¨μˆ˜ square()λ₯Ό μ •μ˜

fun square(x: Int): Int {
    return x * x
}
// square() ν•¨μˆ˜κ°€ 호좜되면 μž…λ ₯값을 μ œκ³±ν•΄μ„œ ν˜ΈμΆœν•œ 츑으둜 λ°˜ν™˜ν•˜κ³  싀행이 μ’…λ₯˜.

λ°˜ν™˜κ°’μ΄ μ—†λŠ” ν•¨μˆ˜μ˜ μ •μ˜ 

 

    ✏️  λ°˜ν™˜κ°’ 없이 μž…λ ₯값을 λ°›μ•„μ„œ 좜λ ₯ν•˜λŠ” ν•¨μˆ˜ printSum() ν•¨μˆ˜λ₯Ό μ •μ˜. ν•¨μˆ˜κ°€ 호좜되면 결과값을 좜λ ₯ν•˜κ³  싀행이 μ’…λ£Œ

fun printSum(x: Int, y: Int) {
    println("x + y = ${x + y}")
}

μž…λ ₯κ°’ 없이 λ°˜ν™˜κ°’λ§Œ μžˆλŠ” ν•¨μˆ˜μ˜ μ •μ˜
fun getPi(): Double {
    return 3.14
}


 2) ν•¨μˆ˜μ˜ μ‚¬μš©(호좜)


🐰  ν•¨μˆ˜μ˜ μ‚¬μš©μ€ 이름 뒀에 κ΄„ν˜Έλ₯Ό λΆ™μ—¬μ„œ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λŠ” ν˜•νƒœ

ν•¨μˆ˜λͺ…(κ°’)    

 

    πŸ₯•  κ΄„ν˜Έλ₯Ό 뢙이지 μ•ŠμœΌλ©΄ ν•¨μˆ˜μ˜ μ½”λ“œκ°€ μ‹€ν–‰λ˜μ§€ μ•Šκ³  마치 κ°’μ²˜λŸΌ 인식

 

λ°˜ν™˜κ°’κ³Ό μž…λ ₯값이 μžˆλŠ” ν•¨μˆ˜μ˜ 호좜


   βœοΈ  νŒŒλΌλ―Έν„°μ— 전달할 값을 μž…λ ₯ν•˜κ³  λ°˜ν™˜κ°’μ€ λŒ€μž… μ—°μ‚°μž(=)둜 λ³€μˆ˜μ— 담은 ν›„ μ‚¬μš©

fun main() {
    var squareResult = square(30)
    println("30의 μ œκ³±μ€ ${squareResult}μž…λ‹ˆλ‹€.") // 30의 μ œκ³±μ€ 900μž…λ‹ˆλ‹€.
    println("40의 μ œκ³±μ€ ${square(40)}μž…λ‹ˆλ‹€.") // 40의 μ œκ³±μ€ 1600μž…λ‹ˆλ‹€.
}

λ°˜ν™˜κ°’μ΄ μ—†λŠ” ν•¨μˆ˜μ˜ 호좜


    ✏️  λ°˜ν™˜κ°’μ΄ μ—†μœΌλ©΄ λŒ€μž… μ—°μ‚°μž(=)λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  λ°”λ‘œ ν˜ΈμΆœν•΄μ„œ μ‹€ν–‰

fun main() {
    printSum(3, 5) // x + y = 8
}

μž…λ ₯값이 μ—†λŠ” ν•¨μˆ˜μ˜ 호좜


    ✏️  μž…λ ₯값이 μ—†λ‹€λ©΄ κ΄„ν˜Έλ§ŒμœΌλ‘œ μ‹€ν–‰ν•˜κ³  결과값을 받을 수 있음

fun main() {

    val PI = getPi()
    println("지름이 10인 μ›μ˜ λ‘˜λ ˆλŠ” ${PI}μž…λ‹ˆλ‹€.") // 지름이 10인 μ›μ˜ λ‘˜λ ˆλŠ” 3.14μž…λ‹ˆλ‹€.

}

 2.  ν•¨μˆ˜ νŒŒλΌλ―Έν„°μ˜ μ •μ˜

🐰  ν•¨μˆ˜μ— μž…λ ₯λ˜λŠ” νŒŒλΌλ―Έν„°λŠ” 마치 λ³€μˆ˜λ₯Ό μ •μ˜ν•˜λ“―μ΄ '이름 : νƒ€μž…'의 ν˜•νƒœλ‘œ μ •μ˜
       βž‘️  μ—¬λŸ¬ 개의 νŒŒλΌλ―Έν„°κ°€ μ •μ˜λ  κ²½μš°λŠ” 콀마둜 ꡬ뢄
🐰  μ½”ν‹€λ¦°μ—μ„œ ν•¨μˆ˜ νŒŒλΌλ―Έν„°λ₯Ό 톡해 μž…λ ₯λ˜λŠ” λͺ¨λ“  값은 λ³€ν•˜μ§€ μ•ŠλŠ” immutable
🐰  μ½”ν‹€λ¦°μ—μ„œμ˜ ν•¨μˆ˜ νŒŒλΌλ―Έν„°λŠ” λͺ¨λ‘ 읽기 μ „μš© ν‚€μ›Œλ“œ val이 μƒλž΅λœ ν˜•νƒœ

 fun ν•¨μˆ˜μ΄λ¦„((val μƒλž΅) name1: String, name2: Int, name3: Double) {μ‹€ν–‰μ½”λ“œ} 

 

 

1) νŒŒλΌλ―Έν„°μ˜ κΈ°λ³Έκ°’ μ •μ˜μ™€ 호좜


    πŸ₯•  νŒŒλΌλ―Έν„°λŠ” μ •μ˜ν•  λ•Œ λ“±ν˜Έ(=)λ₯Ό μ‚¬μš©ν•΄μ„œ 기본값을 μ„€μ •ν•  수 있음

fun ν•¨μˆ˜μ΄λ¦„ (name1: String, name2: Int = 157, name3: Double = 34.5) {μ‹€ν–‰μ½”λ“œ}
fun newFun(name: String, age: Int = 29, weight: Double = 65.5) {
        // name = "tom"; // Val cannot be reassigned
        println("name의 값은 ${name}μž…λ‹ˆλ‹€.")
        println("age의 값은 ${age}μž…λ‹ˆλ‹€.")
        println("weight의 값은 ${weight}μž…λ‹ˆλ‹€.")
}

// μ •μ˜λœ newFun() ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ 기본값이 μ—†λŠ” 첫 번째 νŒŒλΌλ―Έν„°μ—λ§Œ 값을 μž…λ ₯ν•˜λ©΄
// 두 λ²ˆμ§Έμ™€ μ„Έ 번째 νŒŒλΌλ―Έν„°μ—λŠ” μ„€μ •ν•œ 기본값이 μžλ™μœΌλ‘œ μž…λ ₯.
    
    newFun("Hello")
    /*
    name의 값은 Helloμž…λ‹ˆλ‹€.
    age의 값은 29μž…λ‹ˆλ‹€.
    weight의 값은 65.5μž…λ‹ˆλ‹€.
     */


2)  νŒŒλΌλ―Έν„° μ΄λ¦„μœΌλ‘œ 값을 μž…λ ₯ν•˜κΈ°


    πŸ₯•  ν•¨μˆ˜μ— μ •μ˜λœ νŒŒλΌλ―Έν„°κ°€ λ§Žμ„ 경우 μž…λ ₯ν•˜λŠ” κ°’μ˜ μ˜λ―Έκ°€ λͺ…ν™•ν•˜μ§€ μ•Šμ„ λ•Œκ°€ 있음
    πŸ₯•  이럴 경우 μˆœμ„œμ™€ 상관 없이 μ •μ˜λœ νŒŒλΌλ―Έν„° 이름을 μ§€μ •ν•΄μ„œ 직접 값을 μž…λ ₯ν•  수 있음

fun main() {

    newFun("Michael", weight=67.5)
    /*
     name의 값은 Michaelμž…λ‹ˆλ‹€.
     age의 값은 29μž…λ‹ˆλ‹€.
     weight의 값은 67.5μž…λ‹ˆλ‹€.
     */

}

 


μ‘μš© 예제

 

   πŸ“ login() λ©”μ„œλ“œμ™€ logout() λ©”μ„œλ“œλ₯Ό μ„ μ–Έ
        login() λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  λ•ŒλŠ” λ§€κ°œκ°’μœΌλ‘œ id와 passwdλ₯Ό μ œκ³΅ν•˜κ³ , logout() λ©”μ„œλ“œλŠ” id만 λ§€κ°œκ°’μœΌλ‘œ 제곡

       1) login() λ©”μ„œλ“œλŠ” λ§€κ°œκ°’ idκ°€ "admin", λ§€κ°œκ°’ passwordκ°€ "1234"일 κ²½μš°μ—λ§Œ true 둜 λ¦¬ν„΄ν•˜κ³ 

           κ·Έμ™Έμ˜ 값일 κ²½μš°μ—λŠ” falseλ₯Ό 리턴
       2) logout() λ©”μ„œλ“œλŠ” "admin 아이디가 λ‘œκ·Έμ•„μ›ƒ λ˜μ—ˆμŠ΅λ‹ˆλ‹€"κ°€ 좜λ ₯

fun main() {

    print("아이디λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”. >> ")
    val id = readln()
    print("λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”. >> ")
    val password = readln()

    val result = login(id = id, password = password)
    if (result) {
        println("둜그인 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
        logout(id)
    } else {
        println("id λ˜λŠ” passwordκ°€ μ˜¬λ°”λ₯΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.")
    }

}

fun login(id:String, password: String): Boolean {
    return id == "admin" && password == "1234"
}

fun logout(id: String) {
    println("$id 아이디가 λ‘œκ·Έμ•„μ›ƒ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
}

 


  πŸ“  배열을 전달 λ°›μ•„ 짝수만 좜λ ₯ν•˜λŠ” λ©”μ„œλ“œ μž‘μ—… 

fun main() {
   
    val numbers = IntArray(10)
    for (i in numbers.indices) {
        numbers[i] = i + 1
    }
    print("main() : ")
    for (i in numbers.indices) {
        print(numbers[i])
        if (i < numbers.size - 1) {
            print(", ")
        }
    } // main() : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

    println()
    printOdd(numbers) // printOdd() : 2, 4, 6, 8, 10
}

fun printOdd(numbers: IntArray) {
    print("printOdd() : ")
    for (i in numbers.indices) {
        if (numbers[i] % 2 == 0) {
            print(numbers[i])
            if ( i < numbers.size - 1) {
                print(", ")
            }
        }
    }

    val odds = numbers.filter {result -> result % 2 == 0}
    println(odds)
}

 


  πŸ“ ν‚€λ³΄λ“œλ‘œ λΆ€ν„° 학생 μˆ˜μ™€ 각 ν•™μƒλ“€μ˜ 점수λ₯Ό μž…λ ₯λ°›μ•„μ„œ, 졜고 점수 및 평균 점수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨

fun main() {

    var run = true // 반볡문의 쑰건으둜 μ‚¬μš© -> 값이 falseκ°€ λœλ‹€λ©΄ 반볡문이 μ’…λ£Œ

    var scoreList: IntArray = IntArray(0)
    while (run) {
        println("-----------------------------------------------------")
        println("1.ν•™μƒμˆ˜ | 2.μ μˆ˜μž…λ ₯ | 3.점수리슀트 | 4.뢄석 | 5.μ’…λ£Œ")
        println("-----------------------------------------------------")
        print("선택> ")
        val selectNo: Int = readln().trim().toInt()
        when (selectNo) {
           1 -> scoreList = inputStudentNum() // ν•™μƒμˆ˜λ₯Ό μž…λ ₯ λ°›μ•„μ„œ λ°°μ—΄ 생성
           2 -> inputScores(scoreList) // μƒμ„±λœ λ°°μ—΄μ˜ 갯수 만큼 점수 μž…λ ₯
           3 -> printScores(scoreList) // μž…λ ₯받은 λ°°μ—΄μ˜ 값을 좜λ ₯
           4 -> printAnalysis(scoreList) // 졜고 점수, 평균 점수 좜λ ₯
           5 -> run = setRun() // run κ°’ λ³€κ²½
        }
    }
    println("ν”„λ‘œκ·Έλž¨ μ’…λ£Œ")
}

fun inputStudentNum():IntArray {
    print("ν•™μƒμˆ˜> ")
    var studentNum = readln().toInt()
    return IntArray(studentNum)
}

fun inputScores(scores:IntArray) {
    for (i in scores.indices) {
        print("scores[$i] > ")
        scores[i] = readln().toInt()
    }
}

fun printScores(scores:IntArray) {
    for (i in scores.indices) {
        println("scores[$i] : " + scores[i])
    }
}

fun printAnalysis(scores: IntArray) {
    var max = scores[0]
    var sum = scores[0]
    var avg: Double

    for (i in 1 until scores.size) {
        if (scores[i] > max) {
            max = scores[i]
        }
        sum += scores[i]
    }

    avg = (sum / scores.size).toDouble()
    println("졜고 점수: " + max)
    println("평균 점수: " + avg)

}

fun setRun(): Boolean {
    return false
}

 

 

 

[ λ‚΄μš© μ°Έκ³  : IT 학원 κ°•μ˜ ]

+ Recent posts