Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Function: Lanjutan Pertemuan ke 9..

Presentasi serupa


Presentasi berjudul: "Function: Lanjutan Pertemuan ke 9.."— Transcript presentasi:

1 Function: Lanjutan Pertemuan ke 9.

2 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

3 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.

4 Standard Library Function(1)
Definisi: fungsi-fungsi standard yang sudah disediakan oleh compiler bahasa c. Pemakaian: diletakkan di awal program dengan menggunakan pre-processor redirective #include #include <header_file> Atau #include “header_file”

5 Standard Library Function(2)
Contoh #include <stdio.h> int main() { int number; printf("Type in a number \n"); scanf("%d", &number); printf("The number you typed was %d\n", number); } Function printf(), scanf() diatas sudah didefinisikan didalam standard library function stdio.h yang sudah kita definisikan di atas program dengan menggunakan directive #include. Kita tinggal pakai saja. Didalam header file stdio.h terdapat fungsi-fungsi yang lain yang kita bisa pakai antara lain: getc(), putc(), gets(), puts(), getchar(), putchar(). Banyak standard library function yang sudah disediakan. Silakan melihat di C user guide

6 Membuat function(1) Notasi Function
1. Deklarasi function prototype: kepala / judul fungsi untuk memberitahukan kepada compiler “jumlah parameter, tipe data parameter” dan “tipe data keluaran dari fungsi (return type)”. return_type function_name([type1][,type2,…]); return_tipe : mendefinisikan keluaran dari function dan jenis tipe datanya. type1…typen : mendefinisikan jumlah parameter yang masuk ke dalam function dan jenis tipe datanya.

7 Membuat function(2) 2. Function definition: pendefinisian fungsi secara lengkap return_type function_name(parameter_list) { deklarasi_variable lokal; instruksi_1; instruksi_2; …. instruksi_n; return(value); } function_name: nama function harus mengikuti aturan penulisan nama identifier parameter_list : adalah data yg dikirim ke function untuk diproses - boleh kosong(tidak ada parameter). return : untuk mengembalikan hasil proses kepada pemanggil.

8 Membuat function(3) a) Function tanpa parameter int judul(){ int a;
return a; } atau int judul(void){

9 Membuat function(4) b) Function tanpa return value
void cetaksebarisbintang(int len) { for(int i=0; i< len; i++) printf(“*”); } c) Function lengkap float lebihbesar(float f1, float f2) { if(f1>f2) return f1; return f2;

10 Membuat function(5) Cara memanggil function: Prototype function
Cara Pemanggilan function float lebihbesar (float,float); float bill1,bill2, besar; besar = lebihbesar(bill1,bill2); char marktograde(int); int nilai; char grade; grade = marktograde(nilai); int gradetoweight(char) int bobot; bobot = gradetoweight(grade); char* nameofday(int); int harike; char *namahari; namahari = nameofday(harike);

11 Membuat function(7) Jangkauan Identifier dan jenis variable
Identifier (nama variable adalah identifier) Global: Identifier yang diletakkan diatas semua function dalam satu program. Jangkauannya meliputi seluruh program Bisa diredeclare lagi di dalam function. Local Identifier yang dideklarasikan didalam function (termasuk daftar parameter) Jangkuannya terbatas didalam function itu sendiri. Analytical question: apa keuntungan/kerugian memakai global identifier?.

12 Membuat function(8) Jenis Variable Variable Lokal: Variabel Eksternal
dideklarasikan didalam function, akan dibentuk saat function dipanggil akan hilang nilainya jika function berakhir. Hanya dikenal di function tersebut. Tidak ada inisialisasi secara otomatis. Variabel Eksternal Dideklarasikan diluar function dan dikenal dan dapat diakses oleh semua function. Akan diinisialisasi secara otomatis. Nol untuk angka atau “” untuk karakter. ! Jika variable global diletakkan ditengah-tengah antara dua function, maka variable tersebut akan dikenal oleh function yang ada di bawahnya TAPI tidak oleh function yang ada diatasnya.

13 Membuat function(9) Variabel statis Variabel register Variable pointer
Variabel ini bisa berupa variabel lokal maupun global Jika dia dipakai sebagai variable lokal maka nilai variabel statis ini tidak akan hilang sesudah function berakhir. Inisialisasi dilakukan pertama kali pada saat function dipanggil. Jika tidak diinisialisasi maka isinya 0 atau “”. Dideklarasikan dengan reserved word static (ie static int y). Variabel register Hanya bisa digunakan pada variable bersifat lokal saja. Hanya dipakai untuk tipe data char atau int. Kecepatan pengaksesan variabel jenis ini jauh lebih cepat dari variable yang ada di RAM. Dideklarasikan dengan reserved word register (ie register int i) Variable pointer Variabel yang berisi alamat dari variabel lain Akan dibahas lebih lanjut dalam pertemuan berikutnya.

14 Sifat Function yang baik(1)
High Cohesion: fungsi self-content, yaitu yang bisa memenuhi kebutuhan sendiri. Low Coupling: Fungsi yang memiliki ketergantungan yang rendah dengan fungsi yang lain High Fan-in: Frekuensi pemanggilan fungsi ini oleh pemakai. Semakin tinggi semakin baik. (contoh : pada program pembuat laporan berupa tabel, maka function garis(n) dimana n=jumlah karakter ‘-’, akan sering dipanggil) Low Fan-out: Fungsi yang memiliki fungsi yang spesifik (tugas yang sedikit) adalah lebih baik. Dikatakan memiliki fan-out yang rendah. (contoh: function garis(n), tugasnya hanya satu, yaitu cetak garis sebanyak n buah karakter ‘-’ )

15 Sifat Function yang baik(2)
Contoh yang kurang baik (Low Cohesion & High Coupling) #include <stdio.h> #include <string.h> #include <conio2.h> float isiangka () { float angka=0; printf("isi Angka: "); scanf("%f", &angka); return angka; } float hitungsegitiga(){ float alas,tinggi; alas=isiangka(); tinggi=isiangka(); return alas*0.5*tinggi; int main() { printf("Luas segitiga %f \n", hitungsegitiga() ); getch(); return 0; Contoh yang baik (HighCohesion & Low Coupling) #include <stdio.h> #include <string.h> #include <conio2.h> float isiangka () { float angka=0; printf("isi Angka: "); scanf("%f", &angka); return angka; } float hitungsegitiga(float a,float t){ return a*0.5*t; int main() { float alas,tinggi; alas=isiangka(); tinggi=isiangka(); printf("Luas segitiga %f \n", hitungsegitiga(alas,tinggi)); getch(); return 0;

16 Sifat Function yang baik(3)
Sample of High Fan Out: #include <stdio.h> #include <string.h> #include <conio2.h> void hitungbangun(int p, int l, int a, int t) { int segi4; float segi3; segi4 = p * l; segi3 = a * 0.5 * t; printf(“luas segiempat = %d m2\n”,segi4); printf(“luas segitiga = %.2f m2\n”,segi3); } int main() { hitungbangun(10,10,10,10); return 0; Sample of Low Fan Out: #include <stdio.h> #include <string.h> #include <conio2.h> int hitungsegi4(int p, int l) { return p * l; } float hitungsegi3(int a, int t) { return a * 0.5 * t; int main() { int segi4; float segi3; segi4 = hitungsegi4(10,10); segi3 = hitungsegi3(10,10); printf("luas segiempat = %d m2\n",segi4); printf("luas segitiga = %.2f m2\n",segi3); getch(); return 0;

17 Membuat function(6) Latihan.
Buat function dengan menggunakan prinsip-prinsip pembuatan function yang baik: Menghitung luas segitiga dan bujur sangkar. Menentukan grade dari hasil ujian berdasarkan nilai akhir. Jika nilai diatas 85 maka grade ‘A’ dst.

18 Fungsi Rekursif(1) Definisi: suatu proses yang memanggil dirinya sendiri. Dalam C diimplementasikan dengan function yang disebut recursive function. Definisi umum: return_type Func_Name(Parameter_List) { Funct_Name(…); // rekursi terjadi disini. }

19 Fungsi Rekursif(2) Kapan Rekursif dipakai: Jika masalah dapat diuraikan menjadi masalah sejenis yang lebih sederhana Contoh penyelesaian masalah dengan menggunakan rekursif Faktorial 6! = 6 * 5 * 4 * 3 * 2 * 1 5! = * 4 * 3 * 2 * 1 6! = 6 * 5! Contoh sederhana C untuk recursive void recurse() { recurse(); //Function calls itself } int main() { recurse(); //Sets off the recursion

20 Fungsi Rekursif(3) Faktorial dengan C: long faktor(int n) {
if (n==1||n==0) return 1; else return n * faktor(n-1); } faktor(6) rekursif ke n n-1 return n*faktorial(n-1) urutan return 1 6 5 6 * 5! 720 2 4 5 * 4! 120 3 4 * 3! 24 3 * 2! 2 * 1! -

21 Fungsi Rekursif(4) Contoh lain: fibonaci 1 1 2 3 5 8 13 21 34 55 89 ……
F1 = 1 ; F2 = 1; Fn = Fn-1 + Fn-2 untuk n > 2 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F1 + F2 F2 + F3 F3 + F4 F4 + F5 F5 + F6 F6 + F7 F7 + F8 F8 + F9 1 2 3 5 8 13 21 34 55 Penyelesaian secara iteratif int ifibo(int n){ int fn1=1, fn2=1, fn, i; if(n==1 || n==2 ) return 1; for(i=3; i<=n; i++) { fn = fn1 + fn2; fn1 = fn2; fn2 = fn; } return fn; Penyelesaian secara rekursif int fib(int n) { if (n==1 || n==2) return 1; else return fib(n-1)+fib(n-2); }

22 Fungsi Rekursif(5) Iterative VS Rekursif:
Pemilihan cara penyelesaian masalah diusahakan dengan menggunakan iteratif dahulu. Tetapi, jika penyelesaian dengan cara iteratif memerlukan algoritma yang lebih rumit, maka lakukan pendekatan rekursif. Rekursif dihindari karena memiliki kekurangan: Memerlukan memory yang lebih banyak untuk menyimpan variabel lokal dan activation record. Memerlukan waktu yang lebih banyak untuk handling activation record. Penyelesaian rekursif dipakai hanya jika: Penyelesaian sulit dilaksanakan secara iteratif. Efisiensi dengan cara rekursif sudah memadai, akan tetapi Efisiensi tidak lebih penting dari kejelasan logika.

23 References : Thompson SN, 2009, Algoritma dan Struktur Data dengan C.
Deitel, PJ, HM.Deitel, 2007, C How to Program, 5th Edition.


Download ppt "Function: Lanjutan Pertemuan ke 9.."

Presentasi serupa


Iklan oleh Google