Modul dalam bahasa c diimplementasikan ke suatu fungsi yang dimana fungsi tersebut dibentuk melalui pengelompokkan beberapa statement untuk melakukan sesuatu
Modul diperlukan bila beberapa kumpulan statement oleh kode berbeda dalam suatu program biasanya disebut juga sub-program
Biasanya kalau dibentuk menjadi modul maka lebih mudah dibaca oleh orang lain
1. Desainnya yang lebih mudah dibaca karena suatu program yang dibagi menjadi modul-modul kecil
2. Dapat dilakukan lebih dari 1 programmer
3. Lebih mudah dalam melakukan debug karena dibagi-bagi jadi kesalahan atau bug mudah dideteksi
4. Modifikasi lebih mudah dilakukan
5. Lebih mudah didokumentasikan
Library vs User-defined Function
Fungsi dalam bahasa C dibagi 2 :
1. Library function (udah ada dalam bahasa c)
2. User-defined function (ditentuin user)
Contoh Library Function
printf() di library stdio.h
strstr() di library string.h
tan() di library math.h
Function Contruction
Syntax :
return-value-type function-name (parameter-list)
{
statements;
}
return-value-type : nilai dari data yang dikembalikan
jika ga diisi maka otomatis tipe data default akan digunakan
jika jenisnya void maka fungsi nilai tidak akan dikembalikan
parameter-list : list value yang dikirim dari function initiator
Function di C biasanya letaknya diatas initiator/caller atau main program. Kalau tidak , gunakan Function-Prototype
Tujuan Function-Prototype :
=> untuk mastiin bahwa suatu fungsi diketahui oleh initiator yang akan memvalidasi parameter
Syntax :
return-value-type function-name(parameter-list);
Bisa ditulis :
int maximum (int a,int b)
Identifier Scooping
1. Local
2. Global
Identifier Scooping Local = di dalam int main atau function
misalkan
int main ()
{
int input;
return 0;
}
int input diatas termasuk Identifier Scooping Local karena hanya dikenali di dalam int main
Sedangkan yang global biasanya di luar int main
misalkan
int x;
int tambah (int a, int b)
{
return a+b;
}
int main ()
{
int input;
return 0;
}
int x diatas berarti termasuk Identifier Scooping Global karena tak hanya dikenali di int main tetapi misal dibuat function baru yaitu int tambah int x ini dapat dipakai meskipun kita tidak declare didalam function tersebut
Passing Parameter
Jika tidak bisa / belum cukup menggunakan modul maka bisa dilakukan dengan passing parameter
Passing parameter :
1. By-Value : nilainya dikirim ke modul lain
2. By-Location : alamatnya dikirim ke modul lain
Recursive : Function yang memanggil dirinya sendiri biasanya dipakai dalam menyelesaikan recursive-problem misalkan bilangan fibonacci atau faktorial
Komponen Recursive:
1. Base-case : yang return valuenya pasti tetap dan tidak akan berubah
2. Reduction-step : urutan nilai input yang bila diurutkan secara konvergen maka ia akan menemukan nilainya setelah menyentuh base-case
Misalkan faktorial
Base casenya :
f(0) = 1
f(1) = 2
Reduction-step:
f(n) = n * f(n-1) !
Meskipun recursive membuat kodingan yang kita buat lebih simple dan ringkas namun ada beberapa kerugian memakai recursive yaitu :
1. Konsumsi Memory lebih banyak daripada Iterative (membuat program bertahap dari atas ke bawah)
2. Membutuhkan waktu yang lebih karena dipanggil hingga menyentuh base case baru return nilai yang diinginkan
Cara efektif menggunakan Recursive :
1. Jika problem sulit diselesaikan dengan iterative
2. Bila problem lebih efisien menggunakan recursive dibanding iterative
3. Apabila efiesiensi tidak diperhatikan
4. Apabila efisiensi dan waktu execution tidak menjadi masalah utama
Note : lebih baik menggunakan pendekatan iterative meski agak terkesan ribet karena kecepatan execution dan kecepatan memorinya lebih baik daripada yang kodingan terlihat ringkas menggunakan recursive
Tidak ada komentar:
Posting Komentar