Kotlin Funksiya

Funksiya - bu maxsus vazifani bajaradigan kod birligi. Dasturlashda funksiya kodni kichikroq modullarga ajratish uchun ishlatiladi, bu esa dasturni boshqarishni osonlashtiradi. Misol uchun: Agar biz ikkita raqamning yig'indisini hisoblashimiz kerak bo'lsa, unda qiziqarli summa() ni aniqlang.

fun sum(a: Int, b: Int): Int {
    return a + b
}

Biz sum(x,y) ni istalgan vaqtda chaqirishimiz mumkin va u ikki raqamning yig'indisini qaytaradi. Shunday qilib, funktsiya kodni takrorlashdan qochadi va kodni qayta foydalanishga imkon beradi. Kotlinda ikki xil funktsiya mavjud: 

  • Standart kutubxona funktsiyasi
  • Foydalanuvchi tomonidan belgilangan funksiya

Kotlin standart kutubxona funktsiyasi

Kotlinda standart kutubxonada allaqachon aniqlangan va foydalanish uchun mavjud bo'lgan turli xil o'rnatilgan funktsiyalar mavjud. Biz ularni talabga muvofiq argumentlar orqali chaqirishimiz mumkin. Quyidagi dasturda biz o'rnatilgan arrayOf(), sum() va println() funksiyalaridan foydalanamiz. arrayOf() funksiyasi massiv yaratish uchun butun sonlar, double va boshqalar kabi baʼzi argumentlarni talab qiladi va biz sum() yordamida barcha elementlarning yigʻindisini topishimiz mumkin, bu esa hech qanday argument talab qilmaydi. 

fun main(args: Array<String>) {
    var sum = arrayOf(1,2,3,4,5,6,7,8,9,10).sum()
 
    println("Massivning barcha elementlari yig'indisi: $sum ga teng.")
}
Massivning barcha elementlari yig‘indisi: 55 ga teng.

Quyidagi dasturda qolgan qismini topish uchun  rem() dan foydalanamiz.

fun main(args: Array<String>) {
    var num1 = 26
    var num2 = 3
    var result = num1.rem(num2)
    println("$num1 ni $num2 ga bo'lgandagi qoldiq: $result")
}
26 ni 3 ga bo'lingandagi qoldiq: 2

Turli standart kutubxona funktsiyalari ro'yhati va ulardan foydalanish:

  • sqrt() - Raqamning kvadrat ildizini hisoblash uchun ishlatiladi.
  • print() – standart chiqishda xabarni chop etish uchun ishlatiladi.
  • rem() - bir raqamning boshqasiga bo'linganda qolgan qismini topish uchun.
  • toInt() - Raqamni butun qiymatga aylantirish uchun.
  • readline() - standart kiritish uchun ishlatiladi.
  • compareTo() - Ikki raqamni solishtirish va mantiqiy qiymatni qaytarish uchun.

Kotlin foydalanuvchi tomonidan belgilangan funksiya

Foydalanuvchi tomonidan aniqlangan funksiya foydalanuvchi tomonidan belgilangan funksiya deb ataladi. Ma'lumki, katta dasturni kichik modullarga bo'lish uchun biz funktsiyani aniqlashimiz kerak. Har bir aniqlangan funktsiya o'z xususiyatlariga ega, masalan, funktsiya nomi, funktsiyaning qaytish turi, funktsiyaga uzatilgan parametrlar soni va boshqalar.

Foydalanuvchi tomonidan belgilangan funktsiyani yaratish

Kotlinda funktsiya yuqorida e'lon qilinishi mumkin va biz Java yoki Scala kabi boshqa tillarda bajarishga odatlangan funktsiyani ushlab turish uchun sinf yaratishga hojat yo'q. Odatda biz funktsiyani quyidagicha aniqlaymiz:

fun fun_name(a: data_type, b: data_type, ......): return_type  {
    // boshqa kodlar
    return
}
  • fun - Funktsiyani aniqlash uchun kalit so'z.
  • fun_name - Keyinchalik funktsiyani chaqirish uchun foydalanilgan funktsiyaning nomi.
  • a: data_type - Bu yerda a - uzatilgan argument va ma'lumotlar_turi butun son yoki satr kabi argumentning ma'lumotlar turini belgilaydi.
  • return_type - Funktsiya tomonidan qaytariladigan ma'lumotlar qiymatining turini belgilang.
  • {….} – jingalak qavslar funksiya blokini ifodalaydi.

Kotlin funktsiyasi mul() parametrlari bir xil bo'lgan ikkita raqamni ko'paytirish uchun 

fun mul(num1: Int, num2: Int): Int {
    var number = num1.times(num2)
    return number
}
Izoh: Biz yuqorida funktsiyali kalit so'z bilan boshlangan funktsiyani aniqladik, uning qaytish turi butun son.
>> mul() funksiyaning nomi >> num1 va num2 - funksiya tomonidan qabul qilinadigan parametrlarning nomlari va ikkalasi ham Integer turidir.

Foydalanuvchi tomonidan belgilangan funktsiyani chaqirish

Muayyan vazifani belgilash uchun funksiya yaratamiz. Har safar funktsiya chaqirilganda dastur kodning joriy qismini tark etadi va funktsiyani bajarishni boshlaydi. Funktsiyaning oqimini boshqarish:

  1. Dastur funksiya chaqiruvini o'z ichiga olgan qatorga keladi.
  2. Funktsiya chaqirilganda, boshqaruv shu funktsiyaga o'tadi.
  3. Funktsiyaning barcha ko'rsatmalarini birma-bir bajaradi.
  4. Tekshirish faqat funktsiya yopilish qavslariga yoki har qanday qaytarish bayonotiga yetganda qaytariladi.
  5. Funktsiya tomonidan qaytarilgan har qanday ma'lumotlar kodning asl qatoridagi funktsiya o'rniga ishlatiladi.

Kotlin dasturi ikkita argumentni uzatish orqali mul() funktsiyasini chaqirish uchun

fun mul(a: Int, b: Int): Int {
    var number = a.times(b)
    return number
}
fun main(args: Array<String>) {
    var result = mul(3,5)
    println("Ikki raqamni ko'paytirish: $result")
}
Ikki raqamni ko'paytirish: 15

Tushuntirish - Yuqoridagi dasturda biz ikkita argumentni uzatish orqali mul(3, 5) funksiyasini chaqiramiz. Funktsiya chaqirilganda, boshqaruv mul() ga o'tadi va blokdagi bayonotlarni bajarishni boshlaydi. In-built times() dan foydalanib, u ikki sonning ko'paytmasini hisoblab chiqadi va o'zgaruvchan sonda saqlaydi. Keyin u butun son qiymatini qaytarish bilan funksiyadan chiqadi va mul() ni chaqiradigan main() ga uzatishni boshqaradi. Keyin biz funktsiya tomonidan qaytarilgan qiymatni o'zgaruvchan o'zgaruvchan natijaga saqlaymiz va println() uni standart chiqishda chop etadi. 

Kotlin dasturi barcha argumentlarni topshirish orqali student() funksiyasini chaqirish uchun

fun student( name: String , grade: Char , roll_no: Int) {
    println("Talabaning ismi : $name")
    println("Talabaning bahosi: $grade")
    println("Talabalar soni: $roll_no")
 
}
fun main(args: Array<String>) {
    val name = "Anvar"
    val rollno = 25
    val grade = 'A'
    student(name,grade,rollno)
    student("Anvar",'B',30)
}
Talabaning ismi: Anvar Talabaning bahosi: A Talabalar soni: 25 Talabaning ismi : Anvar Talabaning bahosi: B Talabalar soni: 30

Tushuntirish - Yuqoridagi dasturda biz talab qilingan tartibda argumentlarni topshirish orqali student() funksiyasini chaqiramiz. Agar biz argumentlarni aralashtirib yuborishga harakat qilsak, u turga mos kelmaslik xatosini beradi. Birinchi qo'ng'iroqda biz argumentni o'zgaruvchilar yordamida o'tkazamiz, ikkinchi qo'ng'iroqda esa argumentlar qiymatlarini o'zgaruvchilarda saqlamasdan o'tkazamiz. Shunday qilib, ikkala usul ham funktsiyani chaqirish uchun to'g'ri.