Fungsi (function) adalah blok yang berisi beberapa baris kode yang mudah dibaca dan dapat digunakan kembali. Sebuah fungsi adalah kumpulan pernyataan atau perintah yang melakukan tugas tertentu. Fungsi mengorganisir program menjadi blok-blok kode logika. Setelah didefinisikan, fungsi dapat dipanggil untuk oleh fungsi lain atau oleh kode lain secara berulang-ulang. Hal ini membuat kode dapat digunakan kembali. Selain itu, fungsi membuat mudah untuk membaca dan memelihara kode program.
Deklarasi fungsi berisi nama fungsi, tipe nilai kembalian fungsi, dan parameter-parameter yang dibutuhkan oleh fungsi tersebut.
Mendefinisikan Fungsi (Function)
Definisi fungsi menentukan apa dan bagaimana tugas tertentu akan dilakukan dilakukan oleh fungsi tersebut. Sebelum menggunakan fungsi, fungsi harus didefinisikan terlebih dahulu. Berikut adalah cara penylisan untuk mendefinisikan fungsi standar.
namaFungsi () {
// beberapa pernyataan atau perintah kode
}
Atau
void namaFungsi() {
// beberapa pernyataan atau perintah kode
}
Kata kunci “void” menunjukkan bahwa fungsi tersebut tidak mengembalikan nilai apapun kepada pemanggilnya.
Contoh
test() {
print("fungsi dipanggil");
}
Memanggil Fungsi
Sebuah fungsi harus dipanggil agar baris dan kumpulan perintah, pernyataan dan kode dalam fungsi tersebut dapat dijalankan. Proses ini disebut sebagai function invocation.
Cara Penulisan
namaFungsi()
Contoh berikut mengilustrasikan bagaimana sebuah fungsi dapat dipanggil :
void main() {
test();
}
test() {
print("fungsi dipanggil");
}
Kode di atas akan mengeluarkan output berikut :
fungsi dipanggil
Nilai Kembalian Fungsi
Fungsi juga dapat mengembalikan nilai bersamaan dengan kontrol kepada baris kode yang memanggil fungsi tersebut.
Cara Penulisan
tipeKembalian namaFungsi(){
// beberapa pernyataan atau perintah kode
return value;
}
- tipeKembalian dapat berupa tipe data apa saja yang valid
- Pernyataan return itu opsional. Jika tidak ditentukan, fungsi akan mengembalikan null.
- Tipe data dari nilai yang dikembalikan harus sesuai dengan tipe data kembalian dari fungsi.
- Sebuah fungsi hanya dapat mengembalikan satu nilai saja. Dengan kata lain, hanya boleh ada satu pernyataan return per fungsi.
Contoh
Mari kita ambil contoh untuk memahami bagaimana nilai kembalian bekerja.
- Contoh ini mendeklarasikan fungsi test(). Tipe kembalian dari fungsi ini adalah String.
- Fungsi ini mengembalikan nilai String ke pemanggil. Hal ini dicapai dengan pernyataan return.
- Fungsi test() mengembalikan sebuah String. Ini akan ditampilkan sebagai output.
void main() {
print(test());
}
String test() {
return "Halo Dunia";
}
Kode di atas akan mengembalikan output :
Halo Dunia
Parameter Fungsi
Parameter adalah mekanisme untuk mengirimkan nilai ke dalam fungsi. Parameter merupakan bagian dari deklarasi suatu fungsi. Nilai parameter dikirimkan ke dalam fungsi pada saat pemanggilannya. Kecuali dijelaskan secara eksplisit, jumlah nilai yang dikirimkan ke dalam fungsi harus sesuai dengan jumlah parameter yang didefinisikan.
Sekarang mari kita bahas cara-cara di mana parameter dapat digunakan oleh fungsi.
Required Parameters
Diharuskan untuk memasukkan value ke required parameter selama pemanggilan fungsi.
Cara Penulisan
NamaFungsi (tipeData param_1, tipeData param_2[…]) {
// beberapa pernyataan atau perintah kode
}
Contoh
Potongan kode berikut mendeklarasikan fungsi test_param dengan dua parameter yaitu n1 dan s1.
- Tidak wajib untuk menspesifikasikan tipe data parameter. Jika tipe data tidak didefinisikan, tipe data parameter akan ditentukan secara dinamis saat runtime.
- Tipe data nilai yang diberikan harus sesuai dengan tipe data parameter pada saat deklarasi. Apabila tipe data tidak cocok, kompiler akan menghasilkan error.
void main() {
test_param(123,"ini adalah sebuah string");
}
test_param(int n1,String s1) {
print(n1);
print(s1);
}
Output dari kode di atas adalah sebagai berikut :
123
ini adalah sebuah string
Optional Parameters
Parameter opsional dapat digunakan ketika parameter tidak perlu dipaksa untuk memiliki nilai saat eksekusi fungsi. Sebuah parameter dapat ditandai sebagai opsional dengan menambahkan tanda tanya pada namanya. Parameter opsional harus diatur sebagai argumen terakhir dalam sebuah fungsi.
Dart memiliki tiga jenis parameter opsional :
No | Parameter & Deskripsi |
---|---|
1 | Optional Positional Parameter Untuk menentukan optional positional parameter, gunakan tanda kurung siku []. |
2 | Optional Named Parameter Nama parameter harus ditentukan saat nilainya diberikan. Kurung kurawal {} bisa digunakan untuk menetapkan Optional Named Parameter. |
3 | Optional Parameter dengan Nilai Default Parameter fungsi juga dapat diberi nilai secara default. Namun, parameter ini juga dapat diberikan nilai. |
Optional Positional Parameter
Untuk menentukan parameter posisional yang opsional, gunakan tanda kurung kotak [].
Cara Penulisan
void namaFungsi(param1, [optional_param_1, optional_param_2]) { }
Jika parameter opsional tidak diberikan nilai, maka nilainya akan otomatis menjadi NULL.
Contoh
void main() {
test_param(123);
}
test_param(n1,[s1]) {
print(n1);
print(s1);
}
Output dari kode di atas adalah sebagai berikut:
123
null
Optional Named Parameter
Nama parameter harus ditentukan saat nilai parameter tersebut diberikan. Kurung kurawal {} dapat digunakan untuk menentukan optional named parameter.
Cara Penulisan
void namaFungsi(a, {optional_param1, optional_param2}) { }
Cara Pemanggilan
function_name(optional_param:value,…);
Contoh
void main() {
test_param(123);
test_param(123,s1:'hello');
test_param(123,s2:'hello',s1:'world');
}
test_param(n1,{s1,s2}) {
print(n1);
print(s1);
}
Output dari kode di atas adalah sebagai berikut :
123
null
123
hello
123
world
Optional Parameters dengan Nilai Default
Parameter fungsi juga dapat diberi nilai default. Namun, parameter tersebut juga dapat diberikan nilai secara eksplisit.
Cara Penulisan
namaFungsi (param1,{param2= default_value}) {
//......
}
Contoh
void main() {
test_param(123);
}
void test_param(n1,{s1:12}) {
print(n1);
print(s1);
}
Kode di atas akan menghasilkan output berikut :
123
12
Fungsi Recursive
Rekursi adalah teknik untuk mengulang suatu operasi dengan memanggil fungsi itu sendiri secara berulang-ulang sampai mencapai hasil akhir. Rekursi paling baik digunakan ketika Anda perlu memanggil fungsi yang sama secara berulang dengan parameter yang berbeda dari dalam suatu loop.
Contoh
void main() {
print(factorial(6));
}
factorial(number) {
if (number <= 0) {
return 1;
} else {
return (number * factorial(number - 1));
// function invokes itself
}
}
Output dari kode di atas adalah sebagai berikut :
720
Lambda Function
Fungsi lambda adalah mekanisme yang ringkas untuk merepresentasikan fungsi. Fungsi ini juga disebut sebagai arrow function.
Cara Penulisan
[return_type] namaFungsi(parameters)=>expression;
Contoh
void main() {
printMsg();
print(test());
}
printMsg()=>
print("hello");
int test()=>123;
Kode di atas ketika dijalankan akan menghasilkan output berikut :
hello
123
Tutorial sebelumnya : Dart Enumeration
Tutorial setelahnya : Dart Interface
Semua Tutorial Dart : Tutorial Dart