Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Subprogram Minggu V – VI
Wahyu Pujiyono Teknik Informatika Universitas Ahmad Dahlan
2
Motivasi Pada dasarnya, manusia adalah makhluk yang lemah.
Contoh : Untuk membangun gedung, tentulah dibangun dari bata satu ke bata yang lain. Dari ruang ke ruang yang lain dst. Metode : Divide & Conquer (dibagi-bagi menjadi bagian yang lebih kecil, lalu selesaikan masalah yang dihadapi)
3
Gedung bisa diibaratkan sebagai fungsi main() sedangkan bagian yang lebih kecil merupakan fungsi yang menyelesaikan tugas tertentu. Contoh : int main(void) // fungsi utama { float z; z = sqrt(9); // fungsi kepustakaan }
4
Beberapa fungsi kepustakaan
math.h Berisi fungsi matematika dan konstanta ctype.h Fungsi char : tolower, isdigit, … stdlib.h Fungsi utilitas string.h Fungsi char array
5
Bila kepustakaan tidak menyediakan fungsi yang kita perlukan buat fungsi sendiri (user defined function) Kapan fungsi diperlukan ? Sesuatu yang dikerjakan beberapa kali dalam program Sesuatu yang akan dikerjakan pada program yang berbeda Sederetan operasi yang kompleks yang membuat arus program sukar diikuti
6
Cara kerja fungsi
7
Fungsi sebagai kotak hitam
Menyembunyikan detail Dapat menggunakan fungsi tanpa tahu apa yang ada di dalamnya
8
output = function( input1, input2)
argument (input1 dan input2) menyediakan informasi ke program Mengembalikan harga (informasi) kembali ke fungsi yang memanggilnya
9
Function Fungsi pada dasarnya mengembalikan nilai (return value)
Fungsi yang tidak mengembalikan nilai prosedur (yang dikembalikan void) Adakalanya ada lebih dari satu parameter yang berubah nilainya dalam fungsi
10
Fungsi yang mengembalikan 1 nilai
Pengertiannya sama dengan fungsi dalam matematika Contoh : Fungsi y = f(x)= x + 5. Untuk setiap harga x maka akan mengakibatkan nilai y bertambah dengan 5 x dikatakan sebagai variabel independen (input) y dikatakan sebagai variabel dependen (output)
12
Fungsi yang tak mengembalikan nilai
Misalkan akan dicetak bilangan dari 1 sampai n
13
Raptor : http://tutorialalgorithm.com judul : Function in raptor
14
Fungsi yang mengubah nilai parameter
Dinamakan pass by reference Fungsi menggunakan variabel asal (tidak menggunakan copy) Argumen harus berupa variabel, tidak boleh konstanta Dapat mengembalikan lebih dari satu nilai
15
Contoh : Buatlah fungsi untuk menukar nilai dari dua variabel.
Analisis : Misalkan kita punya variabel A = 3 dan B = 5 (input) Output : A = 5 dan B = 3
16
Langkah algoritma
17
Raptor : http://tutorialalgorithm
Raptor : judul : Sub-program parameters in raptor : swap
19
Passing Parameter (versi 1)
Dari contoh terakhir, terlihat ada pernyataan : tukar (&a,&b); Pernyataan ini dinamakan function call. Tanda & (alamat) dimaksudkan bahwa parameter a dan b nantinya dapat diubah dalam fungsi. Sebagai konsekuensinya dalam badan fungsi menjadi : void tukar (int *a, int *b) Tanda * menandakan variabelnya bertipe pointer
20
Versi 2 void swap( double & a, double & b) { double temp; temp = a; a = b; b = temp; } Pemanggilan fungsi di atas sama dengan cara call by value (tanpa tanda &)
21
Jenis parameter Ada 2 jenis parameter yang dideklarasikan dalam subprogram, yaitu : parameter nilai (value parameter) : variabel yang dikirimkan tidak mengalami perubahan sekeluar dari subprogram) parameter variabel (variable parameter) : variabel yang dikirimkan tidak mengalami perubahan sekeluar dari subprogram)
22
Jenis parameter Bentuk umum fungsi :
23
Template Adakalanya kita ingin melewatkan berbagai jenis parameter (bisa int,float, dll.) tetapi harusnya fungsi hanya satu saja gunakan template
25
Kasus 5.2. Buatlah fungsi yang menentukan nilai terbesar dari 2 bilangan bulat.
26
Overloading Function Kadang diinginkan beberapa fungsi yang namanya sama namun dengan banyak parameter yang berbeda overloading function Contoh : Fungsi untuk mencari maksimum dari 2 bilangan dan untuk mencari maksimum dari 3 bilangan.
28
exp(ln(xy)) = exp(y*ln(x))
Kasus 5.3. Dengan menggunakan fungsi ln dan exp, buatlah fungsi untuk menghasilkan nilai xy Analisis : Dengan menggunakan sifat logaritma : ln(xy) = y*ln(x) exp(ln(xy)) = exp(y*ln(x)) xy = exp(y*ln(x))
30
a x b = a + a + a + … + a (sebanyak b kali)
Kasus 5.4. Buatlah fungsi perkalian 2 bilangan bulat dengan menggunakan operator penjumlahan. Analisis : Misalkan a dikalikan b (input) Proses : a x b = a + a + a + … + a (sebanyak b kali)
33
Fungsi Rekursif adalah fungsi yang melakukan proses perulangan dengan cara memanggil dirinya sendiri. berbeda dengan versi iteratif yang menggunakan perulangan for, while maupun do while. Fungsi rekursif dapat dipandang sebagai sebuah “operator”.
34
Ciri fungsi rekursif Kasus penyetop. Dalam kasus ini terdapat nilai konstan (return value) Kasus pemanggilan rekursif. Dalam kasus ini terdapat pemanggilan fungsi itu sendiri, tetapi harus mengarah kepada kasus penyetop.
35
Ciri perulangan Kapan mulai Kapan berhenti Berapa kali diulang
Raptor : judul : How To : Recursion in the raptor
36
Kasus 5.5. Buatlah fungsi faktorial secara rekursif untuk mencari n!.
Analisis : Kasus penyetop (= nilai awal) n = 0 atau n = 1 yaitu bernilai konstan 1 Kasus rekursif : n * faktorial (n-1)
37
Fungsi rekursif
38
Prosedur rekursif
39
fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)
Kasus 5.6. Diberikan deret Fibonacci sebagai berikut : 1, 1, 2, 3, 5, 8, … Buatlah fungsi yang menghitung suku ke-n dari deret Fibonacci dengan menggunakan cara rekursif. Analisis : Suku ke-n dari deret Fibonacci diperoleh dengan rumus : fibonacci(n) = fibonacci(n-1) + fibonacci(n-2) dengan nilai awal untuk n=1 dan n=2 berharga 1.
41
Iteratif Versus Rekursif
Cetaklah suatu kalimat dengan cara iteratif maupun cara rekursif.
42
Kasus 5.8. Buatlah algoritma iteratif dan rekursif untuk menghitung gcd dari dua bilangan bulat positif. Analisis : Jika n 0 dan m integer non negatif, kita dapat menulis m = q.n + r untuk suatu integer non negatif q dan r dengan 0 r < n.
43
Contoh : Jika n = 3, m = 16 maka 16 = 5(3) + 1, yaitu q = 5 dan r = 1. Jika n = 10, m = 3 maka 3 = 0(10) + 3, yaitu q = 0 dan r = 3. Untuk mencari nilai gcd dari dua integer. kita bisa menggunakan cara menulis di atas. Misalkan kita mau cari gcd(190,34).
44
Harga r 0 terakhir dicapai adalah r = 2
Harga r 0 terakhir dicapai adalah r = 2. Inilah hasil dari gcd(190,34).
45
Versi rekursif gcd gcd didefinisikan sebagai berikut :
gcd(c,d) = c, jika d = 0 = gcd(c-d, d), jika d > 0 dan c > d. berlaku hukum komutatif, gcd(c,d) = gcd(d,c).
48
Macam-macam Metode Rekursi
Going Down Recursion (rekursi menurun), yaitu parameter menurun nilainya sampai dicapai kasus berhenti Going Up Recursion (rekursi menaik), yaitu parameter menaik nilainya sampai dicapai kasus berhenti Two Half (rekursi separuh-separuh), rekursi dibagi menjadi 2 bagian, di mana setiap bagian juga merupakan subprogram rekursi.
49
Contoh kasus Hitunglah nilai dari : 52 + 62 + 72 + 82 + 92 + 102
Pohon rekursinya adalah sebagai berikut :
50
Going Down Recursion
51
Going Up Recursion
52
Two-Half Recursion
53
Keuntungan menggunakan fungsi
Program yang dikerjakan team dalam proyek besar Menyederhanakan tugas-tugas Setiap fungsi adalah unit terpisah Pendekatan pemrograman Top Down Abstraksi prosedural Information hiding Reuseability
54
Top Down Programming Merancang program dengan memecahnya menjadi bagian yang lebih kecil Mulai dengan perencanaan global kemudian mengisi detailnya pada setiap level sampai lengkap
55
Abstraksi Merujuk ke aksi dan menghindari detail untuk berkonsentrasi pada substansi Dapat menggunakan hal yang kompleks dengan usaha yang kecil Nama fungsi akan merefleksikan “peri laku”nya
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.