Fungsi Dasar
Membuat fungsi sendiri: parameter, return value, dan kenapa fungsi penting.
Fungsi: resep yang bisa dipakai ulang
Bayangkan kamu punya resep mie goreng favorit. Daripada mengingat-ingat tiap kali mau masak, kamu menulisnya sekali di kartu resep, lalu tinggal bilang "buatkan mie goreng". Fungsi adalah kartu resep dalam kode: blok perintah yang diberi nama, bisa dipanggil berkali-kali.
Analogi lain: fungsi seperti mesin fotokopi. Kamu masukkan dokumen (input), mesin bekerja, keluar hasil (output). Kamu tidak perlu tahu cara kerja mesinnya setiap kali memakai.
Kenapa fungsi ada?
Tiga alasan besar:
- Hindari pengulangan. Tanpa fungsi, logika yang sama ditulis berulang-ulang. Ada bug? Perbaiki di 10 tempat. Dengan fungsi, cukup perbaiki sekali.
- Keterbacaan.
hitungTotal()jauh lebih jelas daripada 15 baris perhitungan acak. - Pengujian. Fungsi kecil mudah dites satu per satu.
Anatomi fungsi
// Definisi: menulis resepnya
int tambah(int a, int b) {
int hasil = a + b;
return hasil;
}
void main() {
// Pemanggilan: memakai resepnya
int x = tambah(3, 4);
print(x); // 7
int y = tambah(10, 20);
print(y); // 30, fungsi sama dipakai ulang
}Bedah int tambah(int a, int b):
intdi depan: tipe nilai kembali (return value). Fungsi ini mengembalikan bilangan bulat.tambah: nama fungsi, pakai camelCase.(int a, int b): parameter, bahan yang harus disiapkan pemanggil.return hasil;: menyerahkan hasil ke pemanggil. Setelahreturn, fungsi berhenti.
Contoh kedua, fungsi tanpa nilai kembali:
// void = tidak mengembalikan apa-apa, hanya "melakukan"
void sapa(String nama) {
print('Halo, $nama!');
print('Selamat datang di Dart.');
}
void main() {
sapa('Budi');
sapa('Ani');
}Tidak semua fungsi butuh return. Fungsi void seperti asisten yang disuruh melakukan sesuatu, bukan ditanya jawabannya.
Parameter vs argumen
Istilah ini sering membingungkan pemula:
- Parameter: variabel di definisi fungsi (
int a, int b). - Argumen: nilai nyata saat memanggil (
tambah(3, 4), argumennya 3 dan 4).
int kali(int a, int b) { // a, b = parameter
return a * b;
}
void main() {
print(kali(5, 6)); // 5, 6 = argumen
}Kesalahan umum pemula
1. Lupa return sehingga fungsi mengembalikan null
// SALAH
int tambah(int a, int b) {
int hasil = a + b;
// lupa return!
}
void main() {
print(tambah(3, 4)); // ERROR: tidak mengembalikan int
}// BENAR
int tambah(int a, int b) {
int hasil = a + b;
return hasil;
}2. Jumlah argumen tidak cocok
// SALAH
int tambah(int a, int b) => a + b;
void main() {
// print(tambah(5)); // ERROR: butuh 2 argumen
}// BENAR
void main() {
print(tambah(5, 10)); // 15
}3. Memakai hasil fungsi void
// SALAH
void sapa(String nama) {
print('Halo, $nama');
}
void main() {
// var x = sapa('Budi'); // ERROR: void tidak bisa disimpan
sapa('Budi'); // BENAR: panggil saja
}Kesimpulan
Fungsi = nama + parameter (input) + badan + return (output, kecuali void). Tulis sekali, pakai berkali-kali. Mulai biasakan memecah program menjadi fungsi-fungsi kecil yang fokus, ini fondasi gaya koding profesional.
Catatan teknis: Di Dart, fungsi adalah objek kelas satu (first-class): bisa disimpan di variabel dan dioper ke fungsi lain. Kemampuan ini dibahas di modul higher-order function.
Tantangan
Fungsi luas bangun datar
Buat fungsi luasPersegi(sisi), luasPersegiPanjang(p, l), dan luasLingkaran(r) (pakai 3.14). Panggil ketiganya di main dan cetak hasilnya.
// TODO: tulis 3 fungsi di sini
void main() {
// TODO: panggil dan cetak
}