Fungsi dan Prosedur
Modular d l Programming i Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak mudah d h dih dihandle. dl Kesulitan:
sulit s lit mencari menca i dan mengingat variabel-variabel a iabel a iabel yang ang sudah dideklarasikan sulit melakukan dokumentasi sulit mencari kesalahan program sulit melihat efisiensi algoritma code d program k kadang d ditulis d l b berulang-ulang l l padahal d h l mengerjakan suatu hal yang sama
Modular d l Programming (2))
Merupakan M k paradigma di pemrograman yang pertama t k li kali diperkenalkan oleh Information & Systems Institute, Inc. pada the National Symposium on Modular Programming pada 1968. 1968 Salah satu tokoh modular programming adalah Larry Constantine Pemrograman Modular adalah suatu teknik pemrograman di mana program yang biasanya cukup besar dibagi-bagi menjadi beberapa bagian program yang lebih kecil Keuntungan:
Program lebih pendek Mudah dibaca dan dimengerti g Mudah didokumentasi Mengurangi kesalahan dan mudah mencari kesalahan
Kesalahan yang terjadi bersifat “lokal” lokal
Modular d l programming pada d C
Bahasa B h C sangatt mendukung d k modular d l programming Sejak awal bahasa C sudah membagi program programprogramnya menjadi modul-modul (bagianbagian) Modul pada bahasa C dikenal dengan nama fungsi (function) Bahasa C terdiri dari fungsi-fungsi, fungsi fungsi baik yang langsung dideklarasikan dalam program ataupun p di dalam header file. dipisah Fungsi yang selalu ada pada program C adalah fungsi main
Function
Fungsi/function F i/f ti adalah d l h suatu t kumpulan instruksi/perintah/program yang dikelompokkan menjadi satu, satu letaknya terpisah dari program yang menggunakan fungsi tersebut tersebut, memiliki nama tertentu yang unik, dan digunakan untuk mengerjakan g j suatu tujuan j tertentu. Dalam bahasa p pemrograman g lain fungsi g dapat disebut sebagai subrutin (basic, VB) atau procedure (pascal, Delphi)
Keuntungan Fungsi
Dapatt melakukan D l k k pendekatan d k t t top-down d d dan di id divide-andd conquer:
Top-down: penelusuran program mudah Divide-and-conquer: program besar dapat dipisah menjadi program-program kecil.
Kode program menjadi lebih pendek, mudah dibaca, dan mudah d h dipahami di h i Program dapat dikerjakan oleh beberapa orang sehingga program cepat selesai dengan koordinasi yang mudah. Mudah dalam mencari kesalahan-kesalahan karena alur logika jelas dan sederhana Kesalahan dapat dilokalisasi dalam suatu modul tertentu saja. Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa mengganggu program keseluruhan
Keuntungan Fungsi (2))
Fungsii – fungsi F f i menjadikan j dik program mempunyaii struktur t kt yang jelas.
Dengan memisahkan langkah – langkah detail ke satu atau lebih fungsi – fungsi, fungsi maka fungsi utama (main) akan menjadi lebih pendek, jelas dan mudah dimengerti.
Fungsi –fungsi digunakan untuk menghindari penulisan program yang sama yang ditulis secara berulang – ulang. ulang Langkah – langkah tersebut dapat dituliskan sekali saja secara terpisah dalam bentuk fungsi. Selanjutnya bagian program yang membutuhkan langkah – langkah ini tidak perlu selalu menuliskannya, tidak cukup memanggil fungsi tersebut. Mempermudah dokumentasi. dokumentasi Reusability: Suatu fungsi dapat digunakan kembali oleh program atau fungsi lain
Sf Sifat-sifat f fungsi f
Nilai fan-in tinggi, artinya semakin sering suatu modul dipanggil oleh pengguna semakin tinggi nilai fan-in Nilai Fan-out rendah, artinya y semakin spesifik fungsi suatu modul akan semakin rendah nilai fan-out Memiliki Self-contained tinggi: artinya kemampuan untuk memenuhi kebutuhannnya sendiri
Kategori fungsi f dalam d l C
Standard Library Function
Yaitu fungsi-fungsi yang telah disediakan oleh C dalam file-file header atau librarynya. Mi l Misalnya: clrscr(), l () printf(), i tf() getch() t h() Untuk function ini kita harus mendeklarasikan terlebih dahulu library yang akan digunakan, yaitu dengan menggunakan preprosesor direktif. direktif
Misalnya: #include
Programmer-Defined Function
Adalah d l h ffunction yang dibuat db oleh l h programmer sendiri. d Function ini memiliki nama tertentu yang unik dalam program, letaknya terpisah dari program utama, dan bisa dijadikan satu ke dalam suatu library buatan programmer itu sendiri yang kemudian juga di-includekan jika ingin menggunakannya.
Perancangan Fungsi Dalam membuat fungsi, perlu diperhatikan: Data y yang g diperlukan p sebagai g inputan p Informasi apa yang harus diberikan oleh fungsi yang dibuat ke pemanggilnya Algoritma apa yang harus digunakan untuk mengolah data menjadi informasi
C Contoh h ffungsi
C Contoh h ffungsi
C Contoh h ffungsi
S k Fungsi Struktur
Deklarasi function (function prototype/ declaration) Terdiri dari:
Judul fungsi g Tipe data yang akan dikembalikan/void Tidak ada kode implementasi p function tersebut
Bentuk e tu umum: u u tipe_data|void nama_fungsi([arguman 1, argument 2,….]);
S k Fungsi Struktur
Tubuh Function/Definisi Function (Function Definition) Terdiri dari:
function p prototype yp yang y g disertai dengan g kode implementasi dari function tersebut, yang berisikan statemen/instruksi yang akan melakukan tugas sesuai dengan tujuan dibuatnya fungsi tersebut.
Deklarasi kl fungsi f (2))
Deklarasi fungsi diakhiri dengan titik koma Tipe_data dapat berupa segala tipe data yang dik dikenal l C ataupun t tipe ti data d t buatan, b t namun tipe ti data dapat juga tidak ada dan digantikan dengan void yang berarti fungsi tersebut tidak mengembalikan nilai apapun Nama fungsi adalah nama yang unik Argumen dapat ada atau tidak (opsional) yang digunakan g untuk menerima argumen/parameter. g p Antar argumen-argumen dipisahkan dengan menggunakan tanda koma.
Deklarasi kl Fungsi (3)) Suatu fungsi perlu (tapi tidak harus) dideklarasikan sebelum digunakan. Untuk alasan dokumentasi program yang baik, sebaiknya y semua fungsi g yang y g digunakan dideklarasikan terlebih dahulu Deklarasi fungsi ditulis sebelum fungsi tersebut digunakan
Bentukk Umum Definisi f Fungsi
Definisi f Fungsi (2)) Tubuh fungsi dapat berisi segala perintah yang dikenal oleh C, pada dasarnya tubuh f fungsi i sama dengan d membuat b t program seperti biasa. Return R t bersifat b if t opsional, i l adalah d l h keyword k d pengembalian nilai dari fungsi ke luar fungsi, fungsi
return wajib jika fungsi tersebut mengembalikan nilai berupa tipe data tertentu, sedangkan return tidak wajib jika fungsi tersebut bersifat void.
Contoh Deklarasi dan Definisi Fungsi
C Contoh h Definisi f Fungsi
Contoh Deklarasi dan Definisi Fungsi (2)
Kapan menggunakan Deklarasi dan Definisi Fungsi?
Karena prinsip kerja program C sekuensial, maka
Jika bagian dari program yang menggunakan fungsi diletakkan sebelum definisi dari fungsi, maka k deklarasi d kl id darii fungsi f i diperlukan. di l k Akan tetapi jika bagian dari program yang menggunakan fungsi terletak setelah definisi dari fungsi, maka deklarasi dari fungsi boleh bo e tidak t da dituliskan. d tu s a
Jenis fungsi f dalam d l C Fungsi yang tidak mengembalikan nilai (void) Fungsi yang mengembalikan nilai (nonvoid))
Fungsi Void d
Fungsii yang void F id sering i disebut di b t juga j prosedur d Disebut void karena fungsi tersebut tidak mengembalikan suatu nilai keluaran yang didapat dari hasil proses fungsi tersebut. Ciri: tidak adanya y keyword y return. Ciri: tidak adanya tipe data di dalam deklarasi fungsi. Ci i menggunakan Ciri: k k keyword d void. id Tidak dapat langsung ditampilkan hasilnya Tidak memiliki nilai kembalian ffungsi ngsi Contoh?
Fungsi non-void d
Fungsi non-void non void disebut juga function Disebut non-void karena mengembalikan nilai kembalian y yang g berasal dari keluaran hasil proses function tersebut Ciri: ada keyword return Ciri: ada tipe data yang mengawali deklarasi fungsi Ciri: tidak ada keyword void Memiliki nilai kembalian Dapat dianalogikan sebagai suatu variabel yang memiliki tipe data tertentu sehingga dapat langsung ditampilkan hasilnya. Contoh?
C Contoh h ffungsi void d ddan non-void d
Void:
Non-void:
Keyword d voidd
Keyword void juga digunakan jika suatu function tidak mengandung suatu parameter apapun.
C Contoh h ffungsi Faktorial k l
The main Function Th
function main() dibutuhkan agar program C dapat dieksekusi! Tanpa p function main,, program p g C dapat p dicompile p tapi tidak dapat dieksekusi (harus dengan flag parameter –c, jika di UNIX) Pada saat program C dijalankan dijalankan, maka compiler C pertama kali akan mencari function main() dan melaksanakan instruksi-instruksi yang ada di sana. sana Function main, sering dideklarasikan dalam 2 bentuk:
iint main() i () void main()
int main())
Berarti di dalam function main tersebut harus terdapat keyword return di bagian akhir fungsi dan mengembalikan nilai bertipe data int, Mengapa hasil return harus bertipe int juga? karena tipe data yang mendahului fungsi main() diatas dideklarasikan int Tujuan nilai kembalian berupa integer adalah untuk mengetahui status eksekusi program.
jika “terminated terminated successfully successfully” (EXIT (EXIT_SUCCESS) SUCCESS) maka maka, akan dikembalikan status 0, sedangkan jika “terminated unsuccessfully” (EXIT FAILURE) akan dikembalikan nilai status tidak 0, (EXIT_FAILURE) biasanya bernilai 1
Biasanya dipakai di lingkungan UNIX
void d main()) Berarti berupa function yang void sehingga tidak mengembalikan nilai status program sehingga nilai status program tidak bisa diketahui Biasanya dipakai pada program C di lingkungan g g Windows
Bentukk pemanggilan l fungsi f di d C
Pada dasarnya fungsi dapat memanggil fungsi lain, bahkan fungsi dapat memanggil dirinya sendiri (rekursif)
Scope Variable
Sebuah variabel di dalam sebuah fungsi memiliki jangkauan tertentu. Skop variabel terdiri dari:
Variabel lokal Variabel global Variabel statis
Variabel lokal Variabel yang hanya dikenal di daerah yang lokal saja, misalnya di dalam sebuah fungsi/prosedur tertentu saja dan tidak dikenal di daerah lainnya. Harus dideklarasikan di dalam blok yang bersangkutan Variabel lokal dibentuk ketika fungsi dipanggil dan akan dihapus dari memori bila eksekusi terhadap fungsi selesai. Tidak ada inisialisasi otomatis
Variabel lokal (2)
Variabel lokal (3)
Variabel Lokal (4)
Variabel Global
Variabel yang dikenal diseluruh daerah di dalam program, di dalam dan luar fungsi. Dideklarasikan di luar suatu blok statemen atau di luar fungsi-fungsi yang menggunakannya. Variabel global dapat dideklarasikan kembali di dalam fungsi. (redeclare) Kerugian penggunaan variabel global:
Memboroskan memori computer karena computer masih menyimpan nilainya walaupun sudah tidak diperlukan lagi. Mudah terjadi kesalahan program karena satu perubahan dapat menyebabkan perubahan menyeluruh pada program. Pembuatan fungsi lebih sulit, karena harus diketahui variable global apa saja yang digunakan. Pendeteksian kesalahan program lebih sulit dilakukan.
Contoh
Pengenalan variabel
Jika dalam sebuah fungsi terdapat variabel a dan di dalam program utama juga terdapat variabel a juga (nama sama), maka variabel yang dipakai tergantung dari siapa yang mengaksesnya. Jika yang mengakses adalah fungsi, maka variabel yang dipakai adalah variabel lokal, jika yang mengakses adalah program utama, maka yang dipakai adalah variabel dalam program utama.
Contoh
Variabel statis
Variabel statis (2)
Jika variabel statis bersifat lokal, maka hanya dikenal dalam fungsi tersebut saja. Jika variabel statis bersifat global, maka dikenal di seluruh program Inisialasisai hanya dilakukan sekali, yaitu pada saat fungsi dipanggil pertama kali. Adalah variabel yang memiliki nilai tetap, artinya nilai dari variabel tersebut akan tetap diingat oleh program, sehingga dapat digunakan untuk menyimpan state nilai pada saat pemanggilan fungsi berikutnya. Nilai variabel statis akan bernilai sama dengan nilai terakhirnya.
Contoh fungsi
Contoh fungsi
Argumen Fungsi
Sebuah fungsi bisa memiliki argumen-argumen yang bersifat opsional. Argumen-argumen tersebut berfungsi sebagai parameter inputan yang berupa variabel-variabel bagi fungsi tersebut (bersifat lokal). Argumen harus bertipe data tertentu. Terdapat 2 jenis parameter:
Parameter formal: parameter yang ditulis pada deklarasi fungsi. Parameter aktual: parameter yang diinputkan dalam program pemanggil fungsi tersebut. Dapat berupa variabel atau langsung berupa nilai tertentu sesuai dengan tipe data yang dideklarasikan untuk masingmasing parameter fungsi
Parameter formal dan aktual
Pengiriman parameter
Komunikasi antar fungsi dilakukan dengan saling bertukar data Hasil dari suatu fungsi dapat diperoleh dari hasil baliknya (return), atau dengan variabel Global,
hasil proses dari suatu fungsi dapat diperoleh, karena variabel yang dipakai dalam fungsi bersifat global.
Selain dengan cara tersebut di atas, hasil dapat juga diperoleh dari parameter aktual yang dikirimkan ke parameter formal, karena parameter formal seolah-olah akan mengirimkan kembali nilai hasil proses dalam fungsi.
Pengiriman Parameter
Pengiriman secara nilai (by value)
Secara default pengiriman parameter di dalam C adalah by value Pengubahan nilai di dalam fungsi tidak bisa mengubah nilai di luar fungsi
Pengiriman secara acuan (by reference)
Tunggu di struktur data!
By Value
Yang dikirimkan ke fungsi adalah nilainya, bukan alamat memori letak dari datanya Fungsi yang menerima kiriman nilai ini akan menyimpannya di alamat terpisah dari nilai aslinya yang digunakan oleh program yang memanggil fungsi tersebut Karena itulah pengubahan nilai di dalam fungsi tidak akan berpengaruh pada nilai asli di program yang memanggil fungsi walaupun keduanya menggunakan nama variabel yang sama Pengiriman by value adalah pengiriman searah, dari program pemanggil fungsi ke fungsi yang dipanggilnya Pengiriman by value dapat dilakukan untuk suatu statement, tidak hanya untuk suatu variabel, value, array atau konstanta saja.
By Value (2)
By Value (3)
By Value (4)
Contoh by value
Penjelasan
Parameter aktual yang dikirimkan adalah datanya, yaitu Secara_Nilai(a,a/3,c) Alamat nilai a pada main dan a pada fungsi Secara_Nilai berbeda, yaitu 2447:2456 dan 2447:2466
Perubahan nilai a dalam fungsi Secara_Nilai menjadi 7 tidak mengubah nilai a pada main yaitu tetap 25
Pengirimannya satu arah
Pengiriman parameter dapat berupa ungkapan (statement) yaitu a/3