Fungsi Fungsi (Sub Program) : Beberapa statements digabungkan dalam suatu modul (fungsi atau sub program) untuk menyelesaikan suatu tugas tertentu, Merupakan sekumpulan instruksi Yang membentuk satu unit serta memiliki nama, Modul diperlukan bila sekumpulan statements tersebut sering digunakan pada tempat lain di dalam program, Digunakan untuk membantu organisasi program dan mengurangi besar (size) program.
Keuntungan menggunakan modul (fungsi): Rancangan Top - down dengan teknik Sub goal, program besar dapat dibagi menjadi modul-modul yang lebih kecil. Dapat dikerjakan oleh lebih dari satu orang dengan koordinasi yang relatif mudah. Mencari kesalahan relatif lebih mudah karena alur logika lebih jelas, dan kesa-lahan dapat dilokalisir dalam satu modul. Modifikasi dapat dilakukan, tanpa meng-gangu program secara keseluruhan. Mempermudah dokumentasi. Bahasa C melengkapi fasilitas modular dengan menggunakan fungsi pada setiap SubProgram.
Contoh pembagian program menjadi beberapa subprogram: Program Utama SubProgram Sifat-sifat modul yang baik adalah : Fan-In yang tinggi, yaitu makin sering suatu modul dipanggil oleh pengguna, makin tinggi nilai fan-in. Fan-Out yang rendah, makin sedikit tugas yang dilakukan oleh suatu modul makin rendah nilai fan-out. Dengan demikian, makin spesifik tugas yang dikerjakan oleh modul tersebut. Self-Contained, atau memenuhi kebutu-hannya sendiri.
Format Deklarasi Fungsi Secara Umum: type function_name(<argument_list>) { <statement_list> } Dimana: type tipe data dari return value. function_name nama fungsi sesuai C++ argument_list variable input statement_list kumpulan instruksi Argument (Function Parameter) Argument merupakan data yang dikirim dari program ke fungsi dan sebaliknya. Arguments dipergunakan untuk mengirim data yang akan diproses.
Ada 2 jenis cara untuk mengirimkan argumen yaitu: Passing by Value - Pada metode ini yang dikirimkan adalah nilai (value) dari variable yang dikirim sebagai argumen. - Perubahan terhadap argumen yang terjadi di dalam fungsi, tidak akan mempengaruhi nilai dari variable tersebut dari fungsi pemanggil ( hanya 1 arah, masuk ke fungsi ). Contoh Program: #include <stdio.h> /* deklarasi fungsi (function declaration) */ void print (int num); void main(){ int num = 7007; print(num); /* nilai variable ‘num’ tetap 7007 */ }
2. Passing by Reference /* definisi fungsi (function definition) */ void print (int num) { cout << “ Nilai bilangan : “ << num++ << endl; } 2. Passing by Reference Pada cara ini yang dikirimkan adalah reference (pointer) dari variable yang dikirim sebagai argumen. Perubahan argumen di dalam fungsi, akan mempengaruhi nilai variable pada pemanggil. Karena yang dikirimkan adalah pointer. Jenis data yang dikirim sebagai argumen harus berupa variable, tidak dapat berupa bilangan konstan. Pada C++ diperkenalkan reference parameter untuk menghindari penggunaan pointer untuk melakukan passing by Reference.
/* Program C Hitung Luas Segi Tiga Tanpa Modul */ #include <stdio.h> void main() { /* Deklarasi Variabel */ float Alas, Tinggi, Luas; /* Memasukkan Data */ printf (“Masukkan Alas = “); scanf( “%f”, &Alas); printf (“Masukkan Tinggi = “); /* Menghitung Luas */ Luas = 0.5 * Alas * Tinggi; /* Menampilkan Hasil */ printf (“Luas Segi Tiga = %f \n”, Luas); }
Fungsi Memasukkan Data Fungsi Menghitung Luas Segi Tiga Program tersebut di atas akan dimodifikasi dengan menggunakan beberapa modul (fungsi), antara lain: Fungsi Memasukkan Data Fungsi Menghitung Luas Segi Tiga Fungsi Menampilkan Hasil Luas Fungsi Utama (yang mengontrol tiga fungsi di atas). /* Program C Hitung Luas Segi Tiga Menggunakan Modul */ #include <stdio.h> void Masuk_Data ( float &Alas, float &Tinggi ) { printf (“Masukkan Alas = “); scanf( “%f”, &Alas); printf (“Masukkan Tinggi = “); }
float Hitung_Luas ( float Alas, float Tinggi ) { float Luas; Luas = 0.5 * Alas * Tinggi; return Luas; } void Tampil_Data ( float Luas ) printf ( “Luas Segi Tiga = %f \n”, Luas ); void main() { float Alas, Tinggi, Luas; /* Pemanggilan Fungsi */ Masuk_Data ( Alas, Tinggi ); Luas = Hitung_Luas ( Alas, Tinggi ); Tampil_Data ( Luas );
Default Argumen C++ mempunyai fasilitas default argument, yaitu suatu nilai tertentu yang akan dipakai sebagai argumen bila fungsi tidak dipanggil dengan argumen lengkap. Contoh Program: #include <stdio.h> void printMsg (char* msg =””, FILE* stream = stdout ); void main() { /* print “Write Error” to standard output (stdout) using default argument at parameter 2 */ printMsg( “ Write Error ! ” ) ; /* print message to printer call printMsg with complete argument */ printMsg(“Process completed.”, stdprn);
/* using default argumen1 1 and 2 print “ Message : “ to standard output */ printMsg(); } void printMsg( char * msg, FILE * stream ) { fprintf(stream, “ Message: %s \n ”, msg ) ; Return Value Satu fungsi setelah melaksanakan pekerjaan, maka akan mengirimkan hasil, hasil dari fungsi dikembalikan dengan statement return.
Contoh program: /* Program C menghasilkan return value */ #include <stdio.h> float lbsTokg( float ); /* function declaration */ void main() { float lbs, kgs; printf (“ Enter your weight in pounds : “); scanf( “%f”, &lbs ); kgs = lbsTokg( lbs ); /* calling function */ printf (“ Your weight in Kilograms is %f ”, kgs); } /* lbsTokg () function definition */ float lbsTokg ( float pounds ) float kilograms = 0.453592 * pounds; return kilograms;