ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Kotlin] 함수
    Kotlin 2022. 9. 14. 14:51
    package days01
    
    fun main(){
        // 함수를 만드는 문법
        // fun 함수이름(매개변수): 리턴값의 타입{
        //  코드 입력..
        // }
        test1()
    
        // 코틀린 함수는 main 함수 내부에서도, 외부에서도 생성이 가능
        // 변수가 지역변수와 전역변수가 있듯이 함수도 그렇다는 뜻
        var a1:Int=100 // 1.
        fun test10(){
            var a1:Int=200 // 2. 함수 내부에 지역변수 생성
            println("test10 호출")
            println("a1:$a1") // 2. 지역변수 사용 및 출력
        } // 함수의 생성
        test10() // 함수의 호출
        println("a1:$a1") // 1. 위에 있는 var a1:Int=100 명령이 없다면 이 명령은 오류
        println("---------------------------")
        
        fun test11(){
            println("test11 호출")
            fun test13(){
                println("test13 호출")
            } // 함수 내부에 지역함수 생성
            test13()
        }
        test11()
        // test13() -> error  
        // test13 함수는 test11 함수 안에 있는 지역함수이므로 외부에서 호출할 수 없음
    }
    
    // 기본함수 (전달인수 없고 변환값 없는 함수)
    fun test1(){
        println("test1 함수 호출")
        println("---------------------------")
    }

     

     

    fun main(){
       test2(a1: 20, a2: 12.23) // test2() 함수 호출
        // 매개변수가 있는 함수를 호출할 때
        // 전달인수를 넣는 동자기 하나하나 끝날 때마다 '매개변수 이름:'를 인텔리제이가 전달인수 앞에 붙여줌
        // 자동으로 입력되는 사항이니 수동으로 입력하면 안됨
    
        val k1:Int=20
        val k2:Double=123.45
        test2(k1,k2) //  변수가 전달인수로 전달될 때는 앞에 매개변수 이름이 붙지 않음
    
        test2(a2=123.12, a1=300)
        // 다른 프로그래밍 언어도 마찬가지이지만 전달인수의 순서는 매개변수의 기수된 순서에 맞춰 넣어줌
        // 다만 위와 같이 순서를 바꾸고자 한다면 '매개변수='를 써서 전달인수와 매개변수의 짝을 맞춰줌
    }
    
    // 전달인수&매개변수 있는 함수
    // 매개변수는 var 없이 변수이름과 자료형만 기술함
    fun test2(a1:Int, a2:Double){
        println("test2: 호출")
        println("a1:$a1")
        println("a2:$a2")
    }

     

    fun main(){
        test3(100  , 11.11)
        test3(200)
        // a2에 전달할 값이 생략되어 기본값 0.0이 a2 변수에 대입됨
        test3(a2=30.123)
        // a1에 전달할 값을 생략하려면 매개변수 이름을 써서 전달값만 전달함
        test3()
        // 모두 생략 가능
    }
    // 매개변수에 기본값(default값)이 지정된 함수: 해당 매개변수에 전달되는 값이 없으면 
    //                                          기본값이 변수에 대입됨
    fun test3(a1:Int=0, a2:Double=0.0){
        println("test3 호출")
        println("a1:$a1")
        println("a2:$a2")
    }

     

    fun main(){
        val r1:Int=test4(100, 200.12)
        println("r1:$r1")
        val r2:Int=test4(1000, 2000.123)
        println("r2:$r2")
    }
    // 리턴(반환)값이 있는 함수
    // fun 함수이름(매개변수): 리턴값의 자료형()
    fun test4(a1:Int, a2:Double): Int{
        println("test4 호출")
        val result:Int=a1+a2.toInt()
        return result
    } // 변수 또는 리터럴 .toInt() -> 변수 또는 자료의 형변환(정수로 변화)

     

    fun main(){
        test5()
        test6()
    }
    
    // Unit: void의 의미로 사용되며 대부분 생략된 채로 사용됨
    fun test5():Unit{
        println("test5 호출")
    }
    fun test6(){
        println("test6 호출")
    }

     

    fun main(){
       test7()
       test7(100)
    }
    
    // 함수의 오버로딩: 매개변수의 형태와 갯수를 달리한 같은 이름의 함수들을 정의하고 사용함
    fun test7():Unit{
        println("test7 호출 - 매개변수 없음")
    }
    fun test7(a1:Int=200){
        println("test8 호출 - 매개변수 한 개(Int)")
    }

     

    Ex

    package days01
    
    import java.text.DecimalFormat
    
    fun main(){
        //  코틀린의 화면 입력
        print("국어 점수 입력:  ")
        val kor:Int=readLine()!!.toInt()
        print("영어 점수 입력:  ")
        val eng:Int=readLine()!!.toInt()
        print("수학 점수 입력:  ")
        val mat:Int=readLine()!!.toInt()
        // 국어 영어 수학 점수를 입력 받아서 총점 평균을 성적표 양식에 맞춰 출력
    
        val tot:Int=sum(kor, eng, mat)
        val avg: Double=average(tot)
    
        prn(kor, eng, mat, tot, avg)
    }
    
    fun sum(kor:Int, eng:Int, mat:Int):Int{
        val tot:Int=kor+eng+mat
        return tot
    }
    
    fun average(tot:Int):Double{
        return tot/3.0
    }
    
    fun prn(kor:Int, eng:Int, mat:Int, tot:Int, avg:Double){
        val df1= DecimalFormat("#,##0.0")
        println("\t\t===성적표===")
        println("국어\t영어\t수학\t총점\t평균")
        println("------------------------------")
        print("$kor\t$eng\t$mat\t$tot\t${df1.format(avg)}\t")
    }

    'Kotlin' 카테고리의 다른 글

    [Kotlin] 조건문 if  (0) 2022.09.14
    [Kotlin] 연산  (0) 2022.09.14
    [Kotlin] 자료형, 변수  (0) 2022.09.14
    [Kotlin] 출력  (0) 2022.09.14
    [Kotlin] 설치  (0) 2022.09.10

    댓글

Designed by Tistory.