FUNCTION / FUNGSI
Seorang boss bernama main memiliki beberapa pekerjaan dirumahnya, diantaranya : Menyalakan / mematikan lampu tergantung pagi hari atau malam hari Membuat kopi atau teh tergantung pagi atau malam hari Mencuci cangkir kopi atau teh Membeli makanan
Karena pekerjaan membuat boss repot, boss mempekerjakan 4 orang staff untuk mengerjakan keempat pekerjaan tersebut. Staff A, jika dipanggil namanya pada pagi hari akan mematikan semua lampu, dan menyalakan lampu jika dipanggil pada malam hari Staff B, jika dipanggil namanya pada pagi hari akan membuat kopi dan memberikan secangkir kopi kepada si boss, jika sore hari akan membuatkan teh Staff C, jika dipanggil namanya dan diberikan cangkir kopi, maka akan mencuci cangkir tersebut Staff D, jika dipanggil namanya, diberi uang dan diberi nama makanan, maka akan segera pergi membeli makanan dan memberikan makanan kepada boss
Staff A, tidak memerlukan input dan tidak memberikan output kepada boss Staff B, tidak memerlukan input tapi memberikan output berjenis cangkir (isinya bisa teh, bisa juga kopi) Staff C, tidak memberikan output, tapi harus diberikan input berupa cangkir Staff D, harus diberi 2 jenis input, yaitu uang dan nama makanan, outputnya adalah makanan diberikan langsung kepada boss
Jika dituliskan dalam bentuk function dalam program akan menjadi sebagai berikut void Staff A(void) jika dipanggil namanya pada pagi hari akan mematikan semua lampu, dan menyalakan lampu jika dipanggil pada malam hari cangkir Staff B(void) jika dipanggil namanya pada pagi hari akan membuat kopi dan memberikan secangkir kopi kepada si boss, jika sore hari akan membuatkan teh void Staff C (cangkir minuman) jika dipanggil namanya dan diberikan cangkir kopi, maka akan mencuci cangkir tersebut makanan Staff D(uang jumlah, makanan namamasakan) jika dipanggil namanya, diberi uang dan diberi nama makanan, maka akan segera pergi membeli makanan dan memberikan makanan kepada boss
Modular Programming Sebuah program yang besar dibagi menjadi sejumlah modul kecil (function). Setiap function mengerjakan tugas tertentu. Keuntungan: Rancangan Top down dengan pendekatan divide dan conquer. Dapat dikerjakan dalam tim Lebih mudah mengalokasikan kesalahan. modul bisa digunakan lagi untuk program yang lain, dan modifikasi dapat dilakukan tanpa mengganggu program secara keseluruhan Mempermudah dokumentasi dan alur logika program
Function Standard library function, adalah fungsi-fungsi standard yang sudah disediakan oleh C. Untuk menggunakannya harus dicantumkan header file dari fungsi tersebut. (dengan perintah #include) Programmer / User Defined Function, adalah fungsi yang dibuat oleh programmer untuk digunakan dalam program yang dibuat.
Standard Library Function Contoh : #include <stdio.h> Beberapa fungsi yang terdapat dalam stdio.h : printf() scanf() getchar() gets() puts()
Programmer-Defined Function Dalam merancang sebuah function harus diperhatikan sbb: INPUT (data apa yang akan menjadi masukkan fungsi) PROSES (bagaimana algoritma yang akan digunakan dalam fungsi tersebut) OUTPUT (informasi apa yang akan dikembalikan oleh fungsi kepada si pemanggil) INPUT PROSES OUTPUT
Programmer-Defined Function Penulisan fungsi dibagi atas : Function Prototype (pendeklarasikan fungsi) yaitu kepala atau judul fungsi (sebagai pengenal fungsi). Function Definition yaitu penulisan fungsi secara lengkap. Contoh : int luas(int, int); // prototype int luas(int p, int l) { // definition return p*l; }
Contoh Fungsi sederhana Keterangan program void garis() Fungsi garis() bertipe void (tidak memiliki return / tidak mengembalikan apapun ke pemanggilnya) garis(); Cara memanggil fungsi garis
Contoh Fungsi (Call by Value) Keterangan program int luas(int p, int l); Menunjukkan bahwa fungsi luas mengembalikan nilai (return) bertipe data int Variable p dan l merupakan parameter by value (nilainya didapat dari fungsi pemanggilnya) L = luas(panjang,lebar); int luas(int p, int l); return p*l; Cara memanggil fungsi “luas” return mengembalikan nilai ke pemanggilnya Dalam fungsi luas, isi (value) dari panjang diterima sebagai p, dan isi lebar sebagai l
Beberapa topik lanjutan Apakah bisa membuat function tanpa menuliskan prototype ? Bagaimana caranya ? Apakah function hanya boleh dituliskan dibawah main()? Apakah bisa dilakukan pemanggilan function oleh function yang lain? Bagaimana pengaturan letaknya ? Apakah yang dimaksud dengan variabel lokal dan variabel global ? Manakah yang lebih baik ? Mengapa ?
References : Thompson SN, 2009, Algoritma dan Struktur Data dengan C. Deitel, PJ, HM.Deitel, 2007, C How to Program, 5th Edition.