Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Rahmat D. R. Dako, ST, M.Eng.  Modul  void main (void)  Modul  fungsi = function  Keuntungan penggunaan Fungsi atau modul :  Program menjadi lebih.

Presentasi serupa


Presentasi berjudul: "Rahmat D. R. Dako, ST, M.Eng.  Modul  void main (void)  Modul  fungsi = function  Keuntungan penggunaan Fungsi atau modul :  Program menjadi lebih."— Transcript presentasi:

1 Rahmat D. R. Dako, ST, M.Eng

2  Modul  void main (void)  Modul  fungsi = function  Keuntungan penggunaan Fungsi atau modul :  Program menjadi lebih mudah dimengerti  Pengaruh antar bagian menjadi lebih kecil (lebih independen)  Dapat dipakai kembali  Lebih efisien dan ukuran program menjadi lebih kecil  Lebih konsisten

3 : printf, scanf, gets, strlen  Contoh fungsi : printf, scanf, gets, strlen program 1  Contoh program 1 M! N!  Dari contoh terdapat pengulangan penulisan program : perhitungan nilai faktorial M! dan N!. jumlahnya sangat banyak  Bagaimana jika proses seperti ini jumlahnya sangat banyak ? sekali saja ?  Bagaimana jika dibuat sekali saja ? program 2  Bandingkan dengan program 2

4 fungsimesin  karakteristik  Anggaplah fungsi  mesin  karakteristik  Karakteristik mesin  Karakteristik mesin : Input : NO Output NO ; lampu  clrscr ( ) 1. Input : NO and Output : NO ; lampu  clrscr ( ) Input : NO Output YES ; Fax  rand ( ) 2. Input : NO and Output : YES ; Fax  rand ( ) Input : YES Output NO ; mesin tari  gotoxy (20, 10) 3. Input : YES and Output : NO ; mesin tari  gotoxy (20, 10) Input : YES Output YES ; mesin kopi  strlen (tempat_lahir) 4. Input : YES and Output : YES ; mesin kopi  strlen (tempat_lahir) 5. Input : YES Output “NO” ; telp kartu  strrev (peringatan) 5. Input : YES and Output : “NO” ; telp kartu  strrev (peringatan) 6. Input : YES Output “YES” ; mesin penjual tiket dengan kartu  scanf (“%d”, &angka) 6. Input : YES and Output : “YES” ; mesin penjual tiket dengan kartu  scanf (“%d”, &angka)

5  Pemanggilan dua  Pemanggilan fungsi dibedakan menjadi dua macam : WITHOUT  Pemanggilan fungsi yang WITHOUT output WITH  Pemanggilan fungsi yang WITH output

6  Bentuknya sederhana  Harus dipanggil dalam satu baris perintah  Tidak adanya variabel yang ditempatkan didepan fungsi.  Contoh :  Clrscr (); nilai  Exit(nilai);  Abort() input parameter  Dapat juga memiliki input parameter

7  Banyak alternatif pemanggilan  Banyak alternatif pemanggilan fungsi, karena output dari fungsi :  Boleh diabaikan (pemanggilannya  fungsi without output)  Boleh dipakai langsung dalam perintah-perintah lain.  Boleh ditampung lebih dahulu dalam sebuah variabel.

8  Contoh  Output fungsi diabaikan ▪ fflush (stdin)  Boleh dipakai langsung dalam perintah-perintah lain. ▪ If (fflush(stdin) == -1)… ▪ dst..  Boleh ditampung lebih dahulu dalam sebuah variabel. ▪ x =fflush (stdin);

9 Header – fungsi {Tubuh-fungsi} Komponen pembentuk header-fungsi Tipe_outputNama_fungsiparameter Tipe_output Nama_fungsi (parameter)

10  Menunjukkan apakah fungsi memiliki keluaran atau tidak  Bila tidak ada output  void  Bila ada output  tipe data dari output  Bagaimana bila lupa menuliskan tipe output ?  Tipe outputnya  int (integer)

11  Beberapa petunjuk pembuatan nama fungsi :  Beri nama fungsi semirip mungkin dengan tugas yang akan diselesaikan oleh fungsi tersebut  Nama fungsi sebaiknya cukup pendek, tapi jangan disingkat atau berupa singkatan yang tidak jelas.  Penamaan harus konsisten

12  Merupakan tempat masukan atau input ke sebuah fungsi  Sebuah fungsi dapat berisi beberapa parameter.  Parameter tidak harus sama  Setiap parameter tersusun atas dua komponen : tipe_variabel dan nama_variabel  Contoh penulisan fungsi  Unsigned long faktorial (int angka)

13  Isi dari suatu variabel (passing by value)  Nama dari suatu variabel (passing by reference).  Alamat dari suatu variabel (passing by pointer)

14  Isi atau nilai dari variabel yang ada pada parameter aktual akan dicopykan ke parameter formal  Contoh :  Unsigned long faktorial (int x)  parameter formal  Unsigned long faktorial_m faktorial (m)  parameter aktual

15 NamaIsiAlamatKeterangan m5100Lokasi memori untuk fungsi (main) Faktorial_m?102 x?500Lokasi memori untuk fungsi faktorial NamaIsiAlamatKeterangan m5100Lokasi memori untuk fungsi (main) Faktorial_m?102 x5500Lokasi memori untuk fungsi faktorial

16  Mengirimkan nama dari variabel yang ada pada parameter aktual ke parameter formal  variabel memiliki lokasi di memori sama, tapi memiliki dua nama. Satu nama di parameter aktual dan satu nama di parameter formal.  Penggunaan metode ini untuk semua tipe data kecuali string dan array  Contoh :  Void tukar (int &angka_1, int &angka_2)  parameter formal  tukar (bil_1, bil_2)  parameter aktual

17 NamaIsiAlamatKeterangan bil_110100Lokasi memori untuk fungsi (main) Bil_290102 NamaIsiAlamatKeterangan bil_1/angka_110100Lokasi memori untuk fungsi (main) Bil_2/angka_190102

18  Pointer/penunjuk akan menunjuk pada lokasi memori tempat parameter aktual berada.  Parameter aktual harus mengirimkan alamat posisinya di memori ke parameter formal, sehingga posisinya dapat diketahui

19  Variabel (p. aktual)  rumah dengan alamat tertentu.  dapat di isi  Variabel (p. formal)  kartu nama berisi alamat rumah tersebut  tidak dapat di isi  Dengan kartu nama, dapat diketahui alamat rumah tersebut dan melakukan sesuatu di rumah tersebut (mis, mengisi barang ke dalam rumah)  Untuk mengisi rumah, harus pergi menuju alamat rumah, baru bisa mengisi

20  Variabel (p. formal)  diberi tanda * = pointer didepan variabel  Variabel (p. aktual)  diberi tanda & didepan variabel untuk menyatakan alamat  Contoh :  Void tukar (int *ptr_angka_1, int *ptr_angka_2)  tukar (&bil_1, &bil_2)

21 NamaIsiAlamatKeterangan bil_110100Lokasi memori untuk fungsi (main) Bil_290102 Ptr_angka_1?500Lokasi memori untuk fungsi tukar Ptr_angka_2?502 bantu?504 NamaIsiAlamatKeterangan bil_110100Lokasi memori untuk fungsi (main) Bil_290102 Ptr_angka_1100500Lokasi memori untuk fungsi tukar Ptr_angka_2102502 bantu?504

22 Void tukar (int *ptr_angka_1, int *ptr_angka_2) { Int bantu; bantu = *ptr_angka_1; *ptr_angka_1 = *ptr_angka_2; *ptr_angka_2 = bantu; }

23 NamaIsiAlamatKeterangan bil_110100Lokasi memori untuk fungsi (main) Bil_290102 Ptr_angka_1100500Lokasi memori untuk fungsi tukar Ptr_angka_2102502 bantu10504 NamaIsiAlamatKeterangan bil_190100Lokasi memori untuk fungsi (main) Bil_290102 Ptr_angka_1100500Lokasi memori untuk fungsi tukar Ptr_angka_2102502 bantu10504

24 NamaIsiAlamatKeterangan bil_190100Lokasi memori untuk fungsi (main) Bil_210102 Ptr_angka_1100500Lokasi memori untuk fungsi tukar Ptr_angka_2102502 bantu10504

25  Bila lupa meletakkan tanda * di depan variabel Void tukar (int *ptr_angka_1, int *ptr_angka_2) { Int bantu; bantu = *ptr_angka_1; ptr_angka_1 = *ptr_angka_2; *ptr_angka_2 = bantu; }  Kira-kira apa yang terjadi ?

26 NamaIsiAlamatKeterangan bil_110100Lokasi memori untuk fungsi (main) Bil_290102 Ptr_angka_1?500Lokasi memori untuk fungsi tukar Ptr_angka_2?502 bantu?504 NamaIsiAlamatKeterangan bil_110100Lokasi memori untuk fungsi (main) Bil_290102 Ptr_angka_1100500Lokasi memori untuk fungsi tukar Ptr_angka_2102502 bantu?504

27 NamaIsiAlamatKeterangan bil_110100Lokasi memori untuk fungsi (main) Bil_290102 Ptr_angka_1100500Lokasi memori untuk fungsi tukar Ptr_angka_2102502 bantu10504 NamaIsiAlamatKeterangan bil_110100Lokasi memori untuk fungsi (main) Bil_290102 Ptr_angka_190 500Lokasi memori untuk fungsi tukar Ptr_angka_2102502 bantu10504

28  Catatan, bila lupa menaruh & akan menyebabkan yang diambil adalah isi dari variabel pada parameter aktual (90 dan 10), bukan nilai variabel yang ditunjukkan oleh alamat pada variabel pointer. NamaIsiAlamatKeterangan bil_190100Lokasi memori untuk fungsi (main) Bil_210102 Ptr_angka_190500Lokasi memori untuk fungsi tukar Ptr_angka_210502 bantu10504

29  Catatan, bila lupa menaruh * akan menyebabkan yang diambil adalah isi dari variabel pointer (100), bukan nilai variabel yang ditunjukkan oleh alamat pada variabel pointer. NamaIsiAlamatKeterangan bil_190100Lokasi memori untuk fungsi (main) Bil_210102 Ptr_angka_1100500Lokasi memori untuk fungsi tukar Ptr_angka_2102502 bantu10504

30  Digunakan untuk mengubah nilai variabel di parameter aktual  Tetapi, sangat sensitif terhadap kesalahan, yang dapat mengakibatkan komputer hang.  Kelebihannya, adalah kemampuan melakukan pengiriman data string atau array yang tidak dimiliki oleh dua metode sebelumnya.

31 ukuran kecil passing by value  Jika ingin mengirimkan data yang memiliki ukuran kecil digunakan metode passing by value ukuran besar passing by reference  Jika ingin mengirimkan data yang memiliki ukuran besar digunakan metode passing by reference tidak berlaku string dan array  Metode passing by value dan passing by reference tidak berlaku untuk pengiriman data dengan tipe string dan array passing by pointer string dan array  Metode passing by pointer direkomendasikan untuk tipe data string dan array


Download ppt "Rahmat D. R. Dako, ST, M.Eng.  Modul  void main (void)  Modul  fungsi = function  Keuntungan penggunaan Fungsi atau modul :  Program menjadi lebih."

Presentasi serupa


Iklan oleh Google