Masukkan Password
32 The Complete Kotlin Course #31- Functions - Kotlin Tutorials for Beginners
Di video ini kamu mulai masuk ke salah satu konsep paling penting dalam programming, yaitu function (fungsi).
Kalau sebelumnya kamu sudah belajar:
variable → comparison → if → loop → when
sekarang kita belajar cara mengelompokkan kode yang melakukan suatu tugas menjadi satu bagian yang bisa dipanggil berulang kali.
1. Apa itu Function?
Secara sederhana:
Function adalah sekumpulan kode yang dibuat untuk melakukan satu tugas tertentu dan bisa dijalankan kembali ketika kita membutuhkannya.
Bayangkan kamu punya aplikasi yang harus menampilkan:
Welcome to our course
sebanyak 10 kali.
Tanpa function, kamu mungkin melakukan:
println("Welcome to our course")
println("Welcome to our course")
println("Welcome to our course")
println("Welcome to our course")
println("Welcome to our course")
Ini menjadi masalah kalau kodenya lebih panjang.
Bayangkan bukan cuma satu println(), tetapi 20 atau 50 baris kode.
Kita tidak ingin melakukan:
copy
paste
copy
paste
copy
paste
Function menyelesaikan masalah tersebut.
Kita cukup membuat kode sekali:
fun printWelcome() {
println("Welcome to our course")
}
Kemudian ketika membutuhkan kode tersebut:
printWelcome()
Jadi konsep dasarnya:
BUAT FUNCTION
↓
Simpan sekumpulan kode
↓
PANGGIL FUNCTION
↓
Kode di dalamnya dijalankan
2. Kenapa Function Penting?
Function biasanya digunakan untuk beberapa alasan besar.
A. Menghindari duplikasi kode
Daripada:
println("Welcome to our course")
println("Welcome to our course")
println("Welcome to our course")
kita bisa:
fun printWelcome() {
println("Welcome to our course")
}
printWelcome()
printWelcome()
printWelcome()
Kode yang sebenarnya melakukan pekerjaan hanya ditulis satu kali.
B. Membuat kode lebih rapi
Misalnya kita punya aplikasi pembayaran.
Tanpa function:
// kode untuk menghitung total
// kode untuk validasi user
// kode untuk menyimpan pembayaran
// kode untuk mengirim notifikasi
Kalau semuanya ditulis dalam satu tempat, program bisa menjadi sangat panjang.
Dengan function kita bisa memisahkannya:
calculateTotal()
validateUser()
savePayment()
sendNotification()
Sekarang kita lebih mudah memahami program.
C. Bisa digunakan berulang kali
Misalnya:
fun printWelcome() {
println("Welcome to our course")
}
Function tersebut bisa dipanggil berkali-kali:
printWelcome()
printWelcome()
printWelcome()
Artinya satu function dapat digunakan berkali-kali.
3. Cara Membuat Function di Kotlin
Bentuk paling dasar:
fun namaFunction() {
// kode
}
Mari kita pecah satu per satu.
Contoh:
fun printWelcome() {
println("Welcome to our course")
}
Ada beberapa bagian penting.
| Bagian | Arti |
|---|---|
fun | keyword untuk membuat function |
printWelcome | nama function |
() | tempat parameter/argument |
{ | awal body function |
println(...) | kode yang dilakukan function |
} | akhir body function |
Mari kita bahas.
4. fun
Bagian pertama:
fun
fun adalah singkatan dari function.
Kotlin menggunakan keyword fun untuk memberi tahu compiler:
“Saya sedang mendefinisikan sebuah function.”
Contoh:
fun printWelcome() {
}
Artinya:
Saya sedang membuat function bernama
printWelcome.
5. Nama Function
Setelah fun, kita memberikan nama.
fun printWelcome() {
}
Nama function:
printWelcome
Nama ini nantinya digunakan ketika kita ingin memanggil function.
Contoh:
printWelcome()
Jadi ada hubungan:
DEKLARASI
fun printWelcome() { ... }
↓
PEMANGGILAN
printWelcome()
Nama function harus menggambarkan pekerjaan yang dilakukan.
Contoh:
fun printWelcome()
fun calculateTotal()
fun calculateAverage()
fun loginUser()
fun sendEmail()
Kita bisa melihat dari namanya kira-kira function tersebut melakukan apa.
6. Kenapa Ada ()?
Contohnya:
fun printWelcome()
Ada:
()
untuk parameter function.
Untuk saat ini function kita tidak membutuhkan input, jadi bagian ini kosong.
Contoh:
fun printWelcome() {
println("Welcome")
}
Tidak ada parameter.
Nanti kamu akan belajar function yang menerima data:
fun greet(name: String) {
println("Hello $name")
}
Kemudian kita bisa memanggil:
greet("Andi")
Nah, "Andi" adalah argument yang dikirim ke function.
Untuk lesson ini, cukup pahami:
()
berarti bagian tempat parameter didefinisikan.
7. Curly Braces { }
Setelah () ada:
{
...
}
Bagian ini disebut function body.
Contoh:
fun printWelcome() {
println("Welcome to our course")
}
Function body adalah:
{
println("Welcome to our course")
}
Semua kode di dalam body tersebut akan dijalankan ketika function dipanggil.
Jadi:
fun printWelcome() {
println("Welcome to our course")
}
belum otomatis mencetak sesuatu.
Ini sangat penting.
Ketika kita hanya mendefinisikan function:
fun printWelcome() {
println("Welcome to our course")
}
kita sebenarnya baru mengatakan:
“Saya punya sebuah function bernama
printWelcome, dan kalau nanti dijalankan, lakukanprintln(...)ini.”
Belum dipanggil.
8. Declaration vs Calling
Ini bagian yang sangat penting.
Ada dua konsep:
Function declaration
Membuat function:
fun printWelcome() {
println("Welcome to our course")
}
Artinya:
“Function ini ada.”
Function call
Menjalankan function:
printWelcome()
Artinya:
“Jalankan function tersebut sekarang.”
Jadi:
fun printWelcome() {
println("Welcome to our course")
}
fun main() {
printWelcome()
}
Urutannya secara konsep:
Program mulai
↓
main()
↓
printWelcome()
↓
masuk ke function printWelcome
↓
println("Welcome to our course")
↓
selesai
↓
kembali ke main()
9. Hubungan dengan main()
Sebelumnya kamu sudah belajar:
fun main() {
println("Hello")
}
Sekarang kamu melihat bahwa main juga sebenarnya sebuah function.
fun main()
Bedanya, main() memiliki peran khusus sebagai entry point program tertentu.
Misalnya:
fun main() {
println("Program started")
}
Ketika program dijalankan, main() menjadi titik awal eksekusi.
Sekarang kita bisa memiliki dua function:
fun printWelcome() {
println("Welcome to our course")
}
fun main() {
printWelcome()
}
Ada:
printWelcome()
dan:
main()
Keduanya sama-sama function.
Tetapi perannya berbeda.
main()
→ titik awal program
printWelcome()
→ function buatan kita
10. Function Tidak Harus Berada di Dalam main()
Ini salah satu hal yang ingin ditunjukkan oleh video.
Misalnya:
fun printWelcome() {
println("Welcome to our course")
}
fun main() {
printWelcome()
}
Perhatikan bahwa:
fun printWelcome()
berada di luar:
fun main()
Ini normal.
Function biasanya didefinisikan secara terpisah, kemudian dipanggil dari function lain.
Secara visual:
fun printWelcome() {
...
}
fun main() {
printWelcome()
}
Bukan:
fun main() {
fun printWelcome() {
...
}
}
Untuk lesson ini, bentuk pertama adalah yang perlu kamu pahami.
11. Apa yang Terjadi Ketika Function Dipanggil?
Mari kita lihat:
fun printWelcome() {
println("Welcome to our course")
}
fun main() {
println("Start")
printWelcome()
println("Finish")
}
Output:
Start
Welcome to our course
Finish
Kenapa?
Karena ketika program sampai:
printWelcome()
program masuk ke function:
fun printWelcome() {
println("Welcome to our course")
}
Lalu menjalankan:
println("Welcome to our course")
Setelah function selesai, program kembali ke tempat function tadi dipanggil.
Jadi:
main()
|
| println("Start")
|
| printWelcome()
| |
| ↓
| println("Welcome...")
| |
| ↓
| selesai
|
| println("Finish")
Ini merupakan mental model yang sangat penting.
12. Function Seperti Tombol
Cara mudah membayangkannya:
Function seperti tombol yang menyimpan sebuah pekerjaan.
Misalnya kita memiliki tombol:
[ Print Welcome ]
Ketika tombol ditekan:
Print Welcome
↓
println("Welcome...")
Dalam Kotlin:
fun printWelcome() {
println("Welcome...")
}
Memanggilnya:
printWelcome()
Seperti menekan tombol tersebut.
13. Analogi di Dunia Nyata
Misalkan di rumah kamu mempunyai mesin kopi.
Kamu membuat sebuah “prosedur”:
Buat kopi
Di dalam prosedur itu ada beberapa langkah:
ambil gelas
masukkan kopi
masukkan gula
tambahkan air
aduk
Daripada setiap kali ingin kopi kamu menjelaskan semua langkah dari awal, kamu cukup mengatakan:
Buat kopi
Function bekerja dengan konsep yang mirip.
Misalnya:
fun makeCoffee() {
println("Take a cup")
println("Add coffee")
println("Add sugar")
println("Add water")
println("Stir")
}
Kemudian:
makeCoffee()
14. Kenapa Ini Lebih Bagus daripada Copy-Paste?
Misalkan kita tidak menggunakan function.
println("Welcome")
println("Welcome")
println("Welcome")
println("Welcome")
Sekarang ternyata teksnya harus diubah:
Welcome → Welcome to Kotlin Course
Kita harus mengubah semuanya.
Dengan function:
fun printWelcome() {
println("Welcome to Kotlin Course")
}
Kemudian:
printWelcome()
printWelcome()
printWelcome()
printWelcome()
Cukup mengubah satu tempat.
Jadi ada dua keuntungan besar:
Function
↓
reuse code
↓
tidak copy-paste
↓
lebih mudah dirawat
15. Function dan println()
Video menggunakan contoh:
println("Welcome to our course")
Kemudian kode itu dipindahkan ke:
fun printWelcome() {
println("Welcome to our course")
}
Sekarang println() berada di dalam function.
Ketika:
printWelcome()
dipanggil, maka:
println("Welcome to our course")
dieksekusi.
Jadi function tidak menggantikan println.
Function hanya membungkus/mengelompokkan kode.
16. Sebenarnya Function Bisa Menyimpan Banyak Baris
Function bukan hanya untuk satu baris.
Contoh:
fun printWelcome() {
println("===================")
println("Welcome to Kotlin")
println("Have fun learning")
println("===================")
}
Kemudian:
fun main() {
printWelcome()
}
Output:
===================
Welcome to Kotlin
Have fun learning
===================
Jadi function bisa digunakan untuk mengelompokkan serangkaian langkah yang memiliki satu tujuan.
17. Function dan Konsep “Reuse”
Istilah yang sering muncul adalah:
code reuse
Artinya:
kode yang sudah kita buat dapat digunakan kembali.
Contoh:
fun printWelcome() {
println("Welcome")
}
Kemudian:
fun main() {
printWelcome()
printWelcome()
printWelcome()
}
Output:
Welcome
Welcome
Welcome
Kita hanya menulis implementasi printWelcome() sekali.
18. Function Membantu Membagi Program Menjadi Bagian Kecil
Bayangkan aplikasi yang besar.
Misalnya aplikasi toko online.
Kita mungkin punya:
fun loginUser()
fun calculateCartTotal()
fun checkout()
fun processPayment()
fun sendInvoice()
fun logoutUser()
Masing-masing function memiliki tanggung jawab tertentu.
Program besar akhirnya bisa dipahami sebagai kumpulan pekerjaan kecil.
Mental modelnya:
Program besar
↓
dibagi menjadi tugas-tugas
↓
Function 1
Function 2
Function 3
Function 4
...
Ini salah satu alasan function menjadi fondasi programming.
19. Hubungan Function dengan Materi Sebelumnya
Sekarang coba hubungkan dengan materi yang sudah kamu pelajari.
Sebelumnya:
Variable
val age = 20
menyimpan data.
if
if (age >= 18) {
println("Adult")
}
membuat keputusan.
Loop
for (i in 1..5) {
println(i)
}
mengulang kode.
when
when (number) {
1 -> println("One")
2 -> println("Two")
else -> println("Other")
}
memilih berdasarkan kondisi/kasus.
Sekarang:
Function
fun printWelcome() {
println("Welcome")
}
mengelompokkan kode agar bisa digunakan kembali.
Jadi function seperti sebuah “wadah pekerjaan”.
20. Function Declaration yang Lengkap
Untuk tahap sekarang, pahami pola:
fun functionName() {
// body
}
Contoh:
fun sayHello() {
println("Hello")
}
Bacanya:
Buat sebuah function bernama
sayHello, dan ketika function tersebut dipanggil, cetakHello.
21. Contoh Program Lengkap
fun printWelcome() {
println("Welcome to our course")
}
fun main() {
printWelcome()
}
Mari baca satu per satu.
Baris 1
fun printWelcome() {
Membuat function bernama printWelcome.
Baris 2
println("Welcome to our course")
Ini pekerjaan yang dilakukan function.
Baris 3
}
Menandakan akhir function.
Baris 5
fun main() {
Membuat main function.
Baris 6
printWelcome()
Memanggil function printWelcome.
22. Declaration Bukan Execution
Ini kesalahan yang sangat sering terjadi saat pemula belajar function.
Misalnya:
fun printWelcome() {
println("Welcome")
}
Kalau kita menjalankan program tetapi tidak pernah menulis:
printWelcome()
maka:
Welcome
tidak akan tercetak hanya karena function tersebut didefinisikan.
Jadi:
DEFINISI ≠ MENJALANKAN
Definisi:
fun printWelcome() {
println("Welcome")
}
Pemanggilan:
printWelcome()
23. Function Bisa Dipanggil Berkali-kali
Contoh:
fun printWelcome() {
println("Welcome")
}
fun main() {
printWelcome()
printWelcome()
printWelcome()
}
Hasil:
Welcome
Welcome
Welcome
Ini adalah salah satu kekuatan function.
24. Apakah Function Sama dengan Method?
Di subtitle/video, instruktur beberapa kali menggunakan kata method.
Dalam percakapan Kotlin sehari-hari, function kadang juga disebut method, tetapi secara teknis istilahnya tidak selalu identik.
Untuk tahap kamu sekarang, yang penting:
fun printWelcome()
adalah function.
Nanti ketika belajar class/object, kamu akan bertemu istilah method dalam konteks function yang menjadi bagian dari class/object.
Jadi sekarang biasakan menyebut:
function
25. Apa Maksud “Boilerplate Code”?
Video juga menyebut:
boilerplate
Boilerplate code adalah kode yang harus ditulis berulang-ulang atau struktur kode yang sifatnya repetitif dan standar.
Misalnya kalau kita terus melakukan:
println("Welcome")
println("Welcome")
println("Welcome")
println("Welcome")
function dapat membantu mengurangi pengulangan.
Tapi perlu diluruskan:
Function bukan hanya untuk menghilangkan boilerplate.
Function jauh lebih penting dari itu.
Function digunakan untuk:
- membagi program menjadi bagian kecil;
- menghindari duplikasi;
- menggunakan kembali kode;
- membuat kode lebih mudah dibaca;
- membuat kode lebih mudah dites;
- membuat struktur program lebih mudah dipelihara.
26. Kesalahan Umum Pemula
Salah 1 — Lupa memanggil function
fun printWelcome() {
println("Welcome")
}
fun main() {
}
Tidak ada output.
Karena printWelcome() tidak dipanggil.
Salah 2 — Salah nama
Deklarasi:
fun printWelcome() {
println("Welcome")
}
tetapi memanggil:
printWelcom()
Ada perbedaan nama.
Kotlin akan menganggap itu function yang berbeda/tidak ditemukan.
Salah 3 — Lupa ()
Deklarasi:
fun printWelcome() {
}
Pemanggilan:
printWelcome()
Untuk function normal yang dipanggil, tanda kurung tetap diperlukan meskipun tidak punya parameter.
27. Gambaran Besarnya
Sekarang kamu bisa melihat function seperti ini:
FUNCTION
│
┌──────────┴──────────┐
│ │
declaration calling
│ │
fun printWelcome() { printWelcome()
println(...)
}
Declaration:
“Function ini saya buat.”
Calling:
“Function ini saya jalankan.”
28. Analogi Paling Sederhana
Bayangkan kamu punya mesin bernama:
PRINT WELCOME
Kamu membuat mesinnya:
fun printWelcome() {
println("Welcome")
}
Tetapi mesin belum digunakan.
Untuk menjalankannya:
printWelcome()
Setiap kali kamu menulis:
printWelcome()
kamu seperti menekan tombol mesin tersebut.
29. Yang Perlu Diluruskan dari Subtitle
Ada beberapa bagian subtitle yang perlu kamu pahami dengan lebih tepat.
“fun is the function”
Lebih tepat:
funadalah keyword untuk mendeklarasikan function.
fun sendiri bukan sebuah function.
“the code inside curly braces will be executed whenever I call this function”
Ini benar.
Kode di dalam:
{
...
}
menjadi function body dan akan dijalankan ketika function dipanggil.
“main is the function for running the program”
Untuk pemula ini cukup sebagai gambaran.
Lebih tepat:
main()adalah entry point program pada lingkungan Kotlin tertentu seperti Kotlin/JVM ketika dijalankan sebagai aplikasi.
“Function hanya untuk menghindari copy-paste”
Ini terlalu sempit.
Function juga digunakan untuk:
organisasi kode
reusability
readability
testing
maintainability
abstraction
Jadi function merupakan konsep fundamental, bukan sekadar alat untuk menghindari copy-paste.
30. Cheat Sheet
Pola function paling dasar:
fun namaFunction() {
// kode
}
Contoh:
fun sayHello() {
println("Hello")
}
Panggil:
sayHello()
Program lengkap:
fun sayHello() {
println("Hello")
}
fun main() {
sayHello()
}
31. Mental Model yang Harus Kamu Ingat
Untuk sekarang cukup ingat 4 hal:
fun
↓
membuat function
namaFunction()
↓
nama + tempat parameter
{ ... }
↓
isi pekerjaan function
namaFunction()
↓
memanggil / menjalankan function
Atau lebih sederhana:
DEFINISIKAN
↓
fun printWelcome() {
println("Welcome")
}
↓
PANGGIL
↓
printWelcome()
↓
kode di dalam function dijalankan
Dan satu kalimat yang sangat penting:
Function adalah sekumpulan kode untuk melakukan tugas tertentu yang dapat kita panggil kembali ketika diperlukan.
Pelajaran berikutnya biasanya akan membuat function menjadi jauh lebih menarik karena kita mulai memasukkan parameter dan argument, sehingga function tidak hanya melakukan pekerjaan yang sama persis, tetapi bisa menerima data berbeda setiap kali dipanggil.